# frozen_string_literal: true

class EmailTokensTokenToNullable < ActiveRecord::Migration[6.1]
  def up
    # ensure column is nullable in case any inserts happen
    # prior to post migrations
    #
    # using this somewhat verbose pattern to avoid impacting people who
    # drifted on main
    begin
      Migration::SafeMigrate.disable!
      execute <<~SQL if DB.query_single(<<~SQL).length > 0
          ALTER TABLE email_tokens ALTER COLUMN token DROP NOT NULL
        SQL
        SELECT 1 FROM INFORMATION_SCHEMA.COLUMNS
        WHERE table_schema='public'
        AND table_name = 'email_tokens'
        AND column_name = 'token'
      SQL
    ensure
      Migration::SafeMigrate.enable!
    end
  end

  def down
    # do nothing, does not matter
  end
end