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