Files
fizzy/db/migrate/20251113163145_ensure_account_id_index.rb
Mike Dalessio fe6df7085f Finish the rollout of account_id to all core data models
Schema:
- add account_id to tables it was missing from
- make account_id a required column everywhere
- add [account_id] indexes, or add `account_id` to existing indices

Models:
- add `belongs_to :account` to all models (default to using a domain
  model's account whenever possible)
- add account_id in all the necessary fixtures
- add account_id to insert_all hashes
- pass account_id to a few initialize calls

Miscellaneous:
- update the import script to set account_id

Note that I'm not adding account_id to the join tables primarily
because I couldn't think of an easy way to populate it without making
it a full Join model, and that was more work than I have time to take
on right now.
2025-11-17 09:12:40 -05:00

92 lines
2.8 KiB
Ruby

class EnsureAccountIdIndex < ActiveRecord::Migration[8.2]
def change
remove_index :accesses, :accessed_at
add_index :accesses, [:account_id, :accessed_at]
remove_index :account_join_codes, :code
add_index :account_join_codes, [:account_id, :code], unique: true
add_index :assignments, :account_id
remove_index :board_publications, :key
add_index :board_publications, [:account_id, :key]
add_index :boards, :account_id
add_index :card_activity_spikes, :account_id
remove_index :card_engagements, :status
add_index :card_engagements, [:account_id, :status]
add_index :card_goldnesses, :account_id
add_index :card_not_nows, :account_id
remove_index :cards, [:last_active_at, :status]
add_index :cards, [:account_id, :last_active_at, :status]
add_index :closures, :account_id
add_index :columns, :account_id
add_index :comments, :account_id
add_index :entropies, :account_id
remove_index :events, :action
add_index :events, [:account_id, :action]
add_index :filters, :account_id
add_index :mentions, :account_id
add_index :notification_bundles, :account_id
add_index :notifications, :account_id
add_index :pins, :account_id
add_index :push_subscriptions, :account_id
remove_index :push_subscriptions, :endpoint # duplicative because we always query [user_id, endpoint]
remove_index :push_subscriptions, [:endpoint, :p256dh_key, :auth_key] # duplicative and not necessary
remove_index :push_subscriptions, :user_agent # not necessary
remove_index :push_subscriptions, :user_id # duplicative of [user_id, endpoint]
add_index :reactions, :account_id
add_index :search_queries, :account_id
add_index :steps, :account_id
add_index :taggings, :account_id
remove_index :tags, :title
add_index :tags, [:account_id, :title], unique: true
add_index :user_settings, :account_id
remove_index :users, :role
add_index :users, [:account_id, :role]
add_index :watches, :account_id
add_index :webhook_delinquency_trackers, :account_id
add_index :webhook_deliveries, :account_id
# For webhooks, I'm making an additional change to collapse board_id and subscribed_actions into
# a single index, since Triggerable only queries for `subscribed_actions` in conjunction with
# `board_id`.
add_index :webhooks, :account_id
remove_index :webhooks, :subscribed_actions
add_index :webhooks, [:board_id, :subscribed_actions], length: { subscribed_actions: 255 }
remove_index :webhooks, :board_id
# Rails models
add_index :action_text_rich_texts, :account_id
add_index :active_storage_attachments, :account_id
add_index :active_storage_blobs, :account_id
add_index :active_storage_variant_records, :account_id
end
end