cannery/lib/cannery/repo/migrator.ex

26 lines
596 B
Elixir
Raw Normal View History

2023-02-25 15:47:37 -05:00
defmodule Cannery.Repo.Migrator do
2022-01-22 20:44:38 -05:00
@moduledoc """
Genserver to automatically perform all migration on app start
"""
2021-09-04 16:19:23 -04:00
use GenServer
require Logger
2023-02-04 17:28:53 -05:00
def start_link(_opts) do
2021-09-04 16:19:23 -04:00
GenServer.start_link(__MODULE__, [], [])
end
2023-02-04 17:28:53 -05:00
def init(_opts) do
2023-02-04 20:47:47 -05:00
{:ok, if(automigrate_enabled?(), do: migrate!())}
2021-09-04 16:19:23 -04:00
end
def migrate! do
2023-02-25 15:47:37 -05:00
path = Application.app_dir(:cannery, "priv/repo/migrations")
Ecto.Migrator.run(Cannery.Repo, path, :up, all: true)
2021-09-04 16:19:23 -04:00
end
2023-02-04 20:47:47 -05:00
defp automigrate_enabled? do
2023-02-25 15:47:37 -05:00
Application.get_env(:cannery, Cannery.Application, automigrate: false)[:automigrate]
2023-02-04 20:47:47 -05:00
end
2021-09-04 16:19:23 -04:00
end