dawarich/db/migrate/20250928000001_add_family_performance_indexes.rb
2025-10-05 14:02:18 +02:00

38 lines
1.6 KiB
Ruby

# frozen_string_literal: true
class AddFamilyPerformanceIndexes < ActiveRecord::Migration[8.0]
disable_ddl_transaction!
def change
# Index for family invitations queries
unless index_exists?(:family_invitations, %i[family_id status expires_at],
name: 'index_family_invitations_on_family_status_expires')
add_index :family_invitations, %i[family_id status expires_at],
name: 'index_family_invitations_on_family_status_expires',
algorithm: :concurrently
end
# Index for family membership queries by role
unless index_exists?(:family_memberships, %i[family_id role], name: 'index_family_memberships_on_family_and_role')
add_index :family_memberships, %i[family_id role],
name: 'index_family_memberships_on_family_and_role',
algorithm: :concurrently
end
# Composite index for active invitations
unless index_exists?(:family_invitations, %i[status expires_at],
name: 'index_family_invitations_on_status_and_expires_at')
add_index :family_invitations, %i[status expires_at],
name: 'index_family_invitations_on_status_and_expires_at',
algorithm: :concurrently
end
# Cleanup job support for status and updated_at
unless index_exists?(:family_invitations, %i[status updated_at],
name: 'index_family_invitations_on_status_and_updated_at')
add_index :family_invitations, %i[status updated_at],
name: 'index_family_invitations_on_status_and_updated_at',
algorithm: :concurrently
end
end
end