Current section
Files
Jump to
Current section
Files
lib/phil_columns/seed.ex
defmodule PhilColumns.Seed do
defmacro __using__(_opts) do
quote location: :keep do
import PhilColumns.Seed
@disable_ddl_transaction false
Module.register_attribute(__MODULE__, :envs, accumulate: true)
Module.register_attribute(__MODULE__, :tags, accumulate: true)
@before_compile PhilColumns.Seed
def down(repo) do
end
def up(repo) do
end
defoverridable [
down: 1,
up: 1
]
end
end
@doc false
defmacro __before_compile__(env) do
envs = Module.get_attribute(env.module, :envs)
tags = Module.get_attribute(env.module, :tags)
if envs == [] do
raise "no envs have been defined in #{inspect env.module}"
end
quote do
def __seed__,
do: [disable_ddl_transaction: @disable_ddl_transaction]
def envs, do:
unquote(List.flatten(envs) |> Enum.dedup |> Enum.sort)
def tags, do:
unquote(List.flatten(tags) |> Enum.dedup |> Enum.sort)
end
end
defmacro env(env) do
quote do
@envs unquote(env)
end
end
defmacro envs(envs) do
quote do
@envs unquote(envs)
end
end
defmacro tag(tag) do
quote do
@tags unquote(tag)
end
end
defmacro tags(tags) do
quote do
@tags unquote(tags)
end
end
end