lib/glific/flows/broadcast/broadcast_worker.ex

defmodule Glific.Flows.BroadcastWorker do
  @moduledoc """
  A worker to handle send message processes
  """

  use Oban.Worker,
    queue: :broadcast,
    max_attempts: 2,
    priority: 0

  alias Glific.{Flows.Broadcast, Repo}

  @doc false
  @spec execute(non_neg_integer()) :: :ok
  def execute(org_id) do
    __MODULE__.new(%{organization_id: org_id})
    |> Oban.insert()

    :ok
  end

  @doc """
  Standard perform method to use Oban worker
  """
  @impl Oban.Worker
  @spec perform(Oban.Job.t()) :: :ok
  def perform(%Oban.Job{
        args: %{"organization_id" => organization_id}
      }) do
    Repo.put_process_state(organization_id)
    Broadcast.execute_broadcasts(organization_id)
    :ok
  end
end