See Files on Github
config.exs
mix.exs
schema_drop.exs
There may be cases when you share a database (but not a schema) with other applications. So using mix ecto.drop may not be an option. In this case, dropping the schema may be a better alternative.
First configure your ecto migrations settings in config.exs.
config :portishead, Portishead.Repo, migration_default_prefix: "portishead", migration_source: "portishead_schema_migrations"
Add schema_drop.exs
script to the priv/repo
folder. The script gets the schema and migration table from the config and runs raw sql to drop them. This script is using PL/pgSQL.
Repo.query!("DROP SCHEMA IF EXISTS #{schema} CASCADE") Repo.query!("DROP TABLE IF EXISTS #{migration_table}")
In mix.exs
, add an alias to drop the schema
defp aliases do [ "ecto.schema.drop": ["run priv/repo/schema_drop.exs"] ] end
From the shell, you can now run
$ mix ecto.schema.drop
or you can add an aliases to use ecto.schema.drop
defp aliases do [ "ecto.schema.reset": ["ecto.schema.drop", "ecto.setup"] ] end
Top comments (0)