priv/repo/migrations/20260819233053_add_sarah_user_fields.exs

main at 58e6347eeb72 · 691 B

defmodule OpenAgents.Repo.Migrations.AddSarahUserFields do
  use Ecto.Migration

  def change do
    alter table(:users) do
      add :public_leaderboard_opted_out, :boolean, null: false, default: false
      add :browser_key_hash, :binary
    end

    create unique_index(:users, [:browser_key_hash], where: "browser_key_hash IS NOT NULL")

    create constraint(:users, :users_status_check, check: "status IN ('active', 'banned')")

    create constraint(:users, :users_ban_state_check,
             check:
               "(status = 'active' AND banned_at IS NULL AND ban_reason_code IS NULL) OR " <>
                 "(status = 'banned' AND banned_at IS NOT NULL)"
           )
  end
end