lib/history_web/live/predicted_funding_rate_live.ex

defmodule HistoryWeb.PredictedFundingRateLive do
  use HistoryWeb, :live_view
  import HistoryWeb.JobView
  alias History.{PredictedFundingRates, PredictedFundingRateJobs}

  @latest_page 0
  @latest_page_size 5

  @impl true
  def mount(_params, _session, socket) do
    Phoenix.PubSub.subscribe(Tai.PubSub, "predicted_funding_rate_job:*")

    predicted_funding_rates =
      PredictedFundingRates.search_latest(page: @latest_page, page_size: @latest_page_size)

    jobs = PredictedFundingRateJobs.latest(page: @latest_page, page_size: @latest_page_size)

    socket =
      socket
      |> assign(:predicted_funding_rates, predicted_funding_rates)
      |> assign(:job_schedules, [])
      |> assign(:jobs, jobs)

    {:ok, socket}
  end

  @impl true
  def handle_info({:predicted_funding_rate_job, :update, _}, socket) do
    jobs =
      PredictedFundingRateJobs.latest(
        page: @latest_page,
        page_size: @latest_page_size
      )

    socket =
      socket
      |> assign(:jobs, jobs)

    {:noreply, socket}
  end
end