File size: 1,116 Bytes
c27e67a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | defmodule Plausible.Workers.NotifyExportedAnalytics do
@moduledoc "This worker delivers emails for successful and failed exports"
use Oban.Worker,
queue: :notify_exported_analytics,
max_attempts: 5
@impl true
def perform(%Oban.Job{args: args}) do
%{
"status" => status,
"storage" => storage,
"email_to" => email_to,
"site_id" => site_id
} = args
user = Plausible.Repo.get_by!(Plausible.Auth.User, email: email_to)
site =
Plausible.Site
|> Plausible.Repo.get!(site_id)
|> Plausible.Repo.preload(:team)
email =
case status do
"success" ->
case storage do
"s3" ->
%{expires_at: expires_at} = Plausible.Exports.get_s3_export!(site_id, _retries = 10)
PlausibleWeb.Email.export_success(user, site, expires_at)
"local" ->
PlausibleWeb.Email.export_success(user, site, _expires_at = nil)
end
"failure" ->
PlausibleWeb.Email.export_failure(user, site)
end
Plausible.Mailer.deliver_now!(email)
:ok
end
end
|