defmodule SpazioSolazzo.Release do @moduledoc """ Used for executing DB release tasks when run in production without Mix installed. """ @app :spazio_solazzo def migrate do load_app() for repo <- repos() do {:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :up, all: true)) end end def rollback(repo, version) do load_app() {:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :down, to: version)) end def seed do load_app() {:ok, _} = Application.ensure_all_started(@app) for _repo <- repos() do seed_file = Application.app_dir(@app, "priv/repo/seeds.exs") if File.exists?(seed_file) do Code.eval_file(seed_file) end end end defp repos do Application.fetch_env!(@app, :ecto_repos) end defp load_app do # Many platforms require SSL when connecting to the database Application.ensure_all_started(:ssl) Application.ensure_loaded(@app) end end