Current section
Files
Jump to
Current section
Files
lib/queuetopia/migrations.ex
defmodule Queuetopia.Migrations do
use Ecto.Migration
@initial_version 0
@current_version 4
def up(opts \\ []) when is_list(opts) do
from_version = Keyword.get(opts, :from_version, @initial_version) |> Kernel.+(1)
to_version = Keyword.get(opts, :to_version, @current_version)
if from_version <= to_version do
change(from_version..to_version, :up)
end
end
def down(opts \\ []) when is_list(opts) do
from_version = Keyword.get(opts, :from_version, @current_version)
to_version = Keyword.get(opts, :to_version, @initial_version) |> Kernel.+(1)
if from_version >= to_version do
change(from_version..to_version, :down)
end
end
@doc false
def initial_version, do: @initial_version
@doc false
def current_version, do: @current_version
defp change(range, direction) do
for index <- range do
[__MODULE__, "V#{index}"]
|> Module.concat()
|> apply(direction, [])
end
end
end