~ihabunek/triglav

e6757533ed61e0b3e9dcec524bb32d2cd34dd86a — Ivan Habunek 8 months ago 730c398
Add loader module to automatically load pt data
3 files changed, 20 insertions(+), 0 deletions(-)

M lib/triglav/application.ex
A lib/triglav/public_transport/loader.ex
M mix.exs
M lib/triglav/application.ex => lib/triglav/application.ex +1 -0
@@ 15,6 15,7 @@ defmodule Triglav.Application do
          TriglavWeb.Telemetry,
          {Phoenix.PubSub, name: Triglav.PubSub},
          TriglavWeb.Endpoint,
          Triglav.PublicTransport.Loader
        ]
      end


A lib/triglav/public_transport/loader.ex => lib/triglav/public_transport/loader.ex +18 -0
@@ 0,0 1,18 @@
defmodule Triglav.PublicTransport.Loader do
  @mode if Mix.env() == :prod, do: :auto, else: :manual

  def child_spec(_arg) do
    Periodic.child_spec(
      id: __MODULE__,
      mode: @mode,
      run: &Triglav.PublicTransport.update_all/0,
      every: :timer.minutes(1),
      when: &run?/0
    )
  end

  defp run?() do
    dttm = DateTime.now!("Europe/Zagreb")
    dttm.hour == 5 and dttm.minute == 0
  end
end

M mix.exs => mix.exs +1 -0
@@ 49,6 49,7 @@ defmodule Triglav.MixProject do
      {:jason, "~> 1.0"},
      {:mint, "~> 1.4"},
      {:nimble_csv, "~> 1.2"},
      {:parent, "~> 0.12.1"},
      {:phoenix, "~> 1.6.0"},
      {:phoenix_ecto, "~> 4.1"},
      {:phoenix_html, "~> 3.0"},