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 children = [ MicrowavepropWeb.Telemetry, Microwaveprop.Repo, {Phoenix.PubSub, name: Microwaveprop.PubSub}, {Oban, Application.fetch_env!(:microwaveprop, Oban)}, Microwaveprop.RepoListener, # 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] result = Supervisor.start_link(children, opts) # Run migrations after Repo is started Microwaveprop.Release.migrate() # Load ML model in dev/test only (Nx/Axon not compiled for prod) if Application.get_env(:microwaveprop, :load_ml_model, false) do Microwaveprop.Propagation.load_ml_model() end result end @impl true def config_change(changed, _new, removed) do MicrowavepropWeb.Endpoint.config_change(changed, removed) :ok end end