summaryrefslogtreecommitdiff
path: root/lib/aggiedit/release.ex
diff options
context:
space:
mode:
Diffstat (limited to 'lib/aggiedit/release.ex')
-rw-r--r--lib/aggiedit/release.ex28
1 files changed, 28 insertions, 0 deletions
diff --git a/lib/aggiedit/release.ex b/lib/aggiedit/release.ex
new file mode 100644
index 0000000..c1f6c7e
--- /dev/null
+++ b/lib/aggiedit/release.ex
@@ -0,0 +1,28 @@
+defmodule Aggiedit.Release do
+ @moduledoc """
+ Used for executing DB release tasks when run in production without Mix
+ installed.
+ """
+ @app :aggiedit
+
+ 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
+
+ defp repos do
+ Application.fetch_env!(@app, :ecto_repos)
+ end
+
+ defp load_app do
+ Application.load(@app)
+ end
+end