48 lines
1.1 KiB
Elixir
48 lines
1.1 KiB
Elixir
defmodule Mix.Tasks.Isn.Gen.Migration do
|
|
use Mix.Task
|
|
import Mix.Ecto
|
|
import Mix.EctoSQL
|
|
import Mix.Generator
|
|
|
|
@migration_name "CreateISNExtension"
|
|
|
|
@shortdoc "Generate an Ecto migration to add the `isn` extension"
|
|
|
|
@moduledoc """
|
|
Generate an Ecto migration to add the `isn` extension to your database.
|
|
|
|
## Example
|
|
|
|
mix isn.gen.migration
|
|
"""
|
|
|
|
@doc false
|
|
def run(args) do
|
|
Mix.Task.run("app.start", args)
|
|
now = Calendar.strftime(DateTime.utc_now(), "%Y%m%d%H%M%S")
|
|
|
|
with [repo] <- parse_repo(args),
|
|
filename <- "#{now}_create_isn_extension.exs",
|
|
path <- Path.join(source_repo_priv(repo), "migrations"),
|
|
file <- Path.join(path, filename),
|
|
mod <- Module.concat([repo, Migrations, @migration_name]) do
|
|
create_directory(path)
|
|
create_file(file, migration_template(mod: mod))
|
|
end
|
|
end
|
|
|
|
embed_template(:migration, """
|
|
defmodule <%= inspect @mod %> do
|
|
use Ecto.Migration
|
|
|
|
def up do
|
|
execute "CREATE EXTENSION IF NOT EXISTS isn;"
|
|
end
|
|
|
|
def down do
|
|
execute "DROP EXTENSION IF EXISTS isn;"
|
|
end
|
|
end
|
|
""")
|
|
end
|