Current section
Files
Jump to
Current section
Files
lib/mix/journal.gen.ex
defmodule Mix.Tasks.Journal.Gen do
use Mix.Task
import Mix.Generator
@moduledoc """
Generate a migration to add tracking capabilities to an Ecto Schema
## Usage
```sh
$ mix journal.gen [SCHEMA_NAME]
```
"""
def run([table_name]) do
change = EEx.eval_string(migration_template(table_name: table_name))
["create_history_for_#{table_name}", "--change=#{change}"]
|> Mix.Tasks.Ecto.Gen.Migration.run()
end
embed_template(:migration, """
execute(
\"
CREATE TRIGGER t
AFTER INSERT
OR UPDATE
OR DELETE ON <%= @table_name %>
FOR EACH ROW
EXECUTE PROCEDURE change_trigger ();
\",
\"DROP TRIGGER IF EXISTS t ON <%= @table_name %>;\"
)
""")
end