mirror of
https://github.com/teslamate-org/teslamate.git
synced 2026-01-24 21:06:08 +08:00
34 lines
817 B
Elixir
34 lines
817 B
Elixir
defmodule TeslaMate.Release do
|
|
@app :teslamate
|
|
|
|
import Ecto.Query
|
|
alias TeslaMate.Repo
|
|
|
|
def migrate do
|
|
for repo <- repos() do
|
|
{:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :up, all: true))
|
|
end
|
|
end
|
|
|
|
def rollback(repo, version) do
|
|
for r <- repos(), r == repo do
|
|
{:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :down, to: version))
|
|
end
|
|
end
|
|
|
|
def seconds_since_last_migration do
|
|
Repo.one(
|
|
from m in "schema_migrations",
|
|
select: fragment("EXTRACT(EPOCH FROM age(NOW(), ?::timestamp))::BIGINT", m.inserted_at),
|
|
order_by: [desc: m.inserted_at],
|
|
limit: 1
|
|
)
|
|
end
|
|
|
|
defp repos do
|
|
Application.ensure_all_started(:ssl)
|
|
Application.load(@app)
|
|
Application.fetch_env!(@app, :ecto_repos)
|
|
end
|
|
end
|