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.Repo.get!(Plausible.Site, site_id) 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