Replaces the one-shot startup Task with a GenServer that checks every 5 minutes whether propagation scores are older than 2 hours. If stale, enqueues a PropagationGridWorker job (with dedup check to avoid double queuing). Disabled in test env to avoid SQL Sandbox conflicts.
40 lines
1.1 KiB
Elixir
40 lines
1.1 KiB
Elixir
defmodule Microwaveprop.Application do
|
|
# See https://hexdocs.pm/elixir/Application.html
|
|
# for more information on OTP Applications
|
|
@moduledoc false
|
|
|
|
use Application
|
|
|
|
@impl true
|
|
def start(_type, _args) do
|
|
migrate()
|
|
|
|
children = [
|
|
MicrowavepropWeb.Telemetry,
|
|
Microwaveprop.Repo,
|
|
{DNSCluster, query: Application.get_env(:microwaveprop, :dns_cluster_query) || :ignore},
|
|
{Phoenix.PubSub, name: Microwaveprop.PubSub},
|
|
{Oban, Application.fetch_env!(:microwaveprop, Oban)},
|
|
# Start to serve requests, typically the last entry
|
|
MicrowavepropWeb.Endpoint,
|
|
Microwaveprop.Propagation.FreshnessMonitor
|
|
]
|
|
|
|
# See https://hexdocs.pm/elixir/Supervisor.html
|
|
# for other strategies and supported options
|
|
opts = [strategy: :one_for_one, name: Microwaveprop.Supervisor]
|
|
Supervisor.start_link(children, opts)
|
|
end
|
|
|
|
# Tell Phoenix to update the endpoint configuration
|
|
# whenever the application is updated.
|
|
defp migrate do
|
|
Microwaveprop.Release.migrate()
|
|
end
|
|
|
|
@impl true
|
|
def config_change(changed, _new, removed) do
|
|
MicrowavepropWeb.Endpoint.config_change(changed, removed)
|
|
:ok
|
|
end
|
|
end
|