# frozen_string_literal: true

class UpdateInvitesRedemptionCount < ActiveRecord::Migration[6.0]
  def change
    execute <<~SQL
      WITH invite_counts AS (
        SELECT invite_id, COUNT(*) count
        FROM invited_users
        GROUP BY invite_id
      )
      UPDATE invites
      SET redemption_count = GREATEST(redemption_count, count)
      FROM invite_counts
      WHERE invites.id = invite_counts.invite_id
    SQL
  end
end