From ddbd43b6112d74ce523e89f60435b46399d725cc Mon Sep 17 00:00:00 2001 From: Zach Daniel Date: Thu, 8 Jul 2021 13:35:16 -0400 Subject: [PATCH] fix: fix migrator mix tasks w/ only/except tenants fix: drop foreign keys after table create properly --- lib/migration_generator/migration_generator.ex | 18 +++++++++--------- lib/mix/tasks/ash_postgres.migrate.ex | 2 ++ lib/mix/tasks/ash_postgres.rollback.ex | 2 ++ 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/migration_generator/migration_generator.ex b/lib/migration_generator/migration_generator.ex index 57a3715..8575890 100644 --- a/lib/migration_generator/migration_generator.ex +++ b/lib/migration_generator/migration_generator.ex @@ -247,6 +247,9 @@ defmodule AshPostgres.MigrationGenerator do defp comment_out_phases(phases) do Enum.map(phases, fn + %{operations: []} = phase -> + phase + %{operations: operations} = phase -> if Enum.all?(operations, &match?(%{commented?: true}, &1)) do %{phase | commented?: true} @@ -961,15 +964,6 @@ defmodule AshPostgres.MigrationGenerator do ), do: true - defp after?( - %Operation.CreateTable{table: table}, - %Operation.DropForeignKey{ - table: table, - direction: :down - } - ), - do: true - defp after?(%Operation.AddAttribute{table: table}, %Operation.CreateTable{table: table}) do true end @@ -1235,6 +1229,12 @@ defmodule AshPostgres.MigrationGenerator do old_attribute: Map.delete(attribute, :references), new_attribute: attribute, table: snapshot.table + }, + %Operation.DropForeignKey{ + attribute: attribute, + table: snapshot.table, + multitenancy: Map.get(attribute, :multitenancy), + direction: :down } ] else diff --git a/lib/mix/tasks/ash_postgres.migrate.ex b/lib/mix/tasks/ash_postgres.migrate.ex index 5ef3e30..d210aa3 100644 --- a/lib/mix/tasks/ash_postgres.migrate.ex +++ b/lib/mix/tasks/ash_postgres.migrate.ex @@ -119,6 +119,8 @@ defmodule Mix.Tasks.AshPostgres.Migrate do |> AshPostgres.MixHelpers.delete_arg("--apis") |> AshPostgres.MixHelpers.delete_arg("--migrations-path") |> AshPostgres.MixHelpers.delete_flag("--tenants") + |> AshPostgres.MixHelpers.delete_flag("--only-tenants") + |> AshPostgres.MixHelpers.delete_flag("--except-tenants") if opts[:tenants] do for repo <- repos do diff --git a/lib/mix/tasks/ash_postgres.rollback.ex b/lib/mix/tasks/ash_postgres.rollback.ex index 160ff88..f518481 100644 --- a/lib/mix/tasks/ash_postgres.rollback.ex +++ b/lib/mix/tasks/ash_postgres.rollback.ex @@ -78,6 +78,8 @@ defmodule Mix.Tasks.AshPostgres.Rollback do |> AshPostgres.MixHelpers.delete_arg("--apis") |> AshPostgres.MixHelpers.delete_arg("--migrations-path") |> AshPostgres.MixHelpers.delete_flag("--tenants") + |> AshPostgres.MixHelpers.delete_flag("--only-tenants") + |> AshPostgres.MixHelpers.delete_flag("--except-tenants") if opts[:tenants] do for repo <- repos do