diff --git a/elixir/apps/domain/lib/domain/change_logs/change_log.ex b/elixir/apps/domain/lib/domain/change_logs/change_log.ex index 48b7037b4..bbcf7dee4 100644 --- a/elixir/apps/domain/lib/domain/change_logs/change_log.ex +++ b/elixir/apps/domain/lib/domain/change_logs/change_log.ex @@ -1,10 +1,11 @@ defmodule Domain.ChangeLogs.ChangeLog do use Domain, :schema + @primary_key false schema "change_logs" do belongs_to :account, Domain.Accounts.Account - field :lsn, :integer + field :lsn, :integer, primary_key: true field :table, :string field :op, Ecto.Enum, values: [:insert, :update, :delete] field :old_data, :map diff --git a/elixir/apps/domain/priv/repo/manual_migrations/20250806081944_move_pkey_to_lsn_on_change_logs.exs b/elixir/apps/domain/priv/repo/manual_migrations/20250806081944_move_pkey_to_lsn_on_change_logs.exs new file mode 100644 index 000000000..b0beb1e79 --- /dev/null +++ b/elixir/apps/domain/priv/repo/manual_migrations/20250806081944_move_pkey_to_lsn_on_change_logs.exs @@ -0,0 +1,23 @@ +defmodule Domain.Repo.Migrations.MovePkeyToLsnOnChangeLogs do + use Ecto.Migration + + def up do + alter table(:change_logs) do + remove(:id) + end + + drop(index(:change_logs, [:lsn])) + + execute("ALTER TABLE change_logs ADD PRIMARY KEY (lsn)") + end + + def down do + execute("ALTER TABLE change_logs DROP CONSTRAINT change_logs_pkey") + + alter table(:change_logs) do + add(:id, :uuid, default: fragment("gen_random_uuid()"), primary_key: true) + end + + create(index(:change_logs, [:lsn])) + end +end