Packages

Explainable, durable notification library for Elixir.

Current section

Files

Jump to
chimeway lib chimeway dispatch digest_flush_worker.ex
Raw

lib/chimeway/dispatch/digest_flush_worker.ex

if Code.ensure_loaded?(Oban) do
defmodule Chimeway.Dispatch.DigestFlushWorker do
@moduledoc "Thin Oban worker that delegates due digest bucket execution to the emission service."
use Oban.Worker,
queue: :chimeway_delivery,
max_attempts: 5,
replace: [scheduled: [:scheduled_at]],
unique: [fields: [:args], keys: [:bucket_id], period: 60, timestamp: :scheduled_at]
alias Chimeway.Digests
@impl Oban.Worker
def perform(%Oban.Job{args: %{"bucket_id" => bucket_id}}) do
case Digests.emit_bucket(bucket_id) do
{:ok, _result} -> :ok
{:error, {:bucket_not_due, _bucket_id}} -> :ok
{:error, reason} -> {:error, reason}
end
end
end
end