mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-10 01:01:39 -05:00
Update migrations
This commit is contained in:
parent
0b9a1005e5
commit
c1cff10de3
4 changed files with 16 additions and 69 deletions
|
|
@ -11,8 +11,7 @@ class CreateFamilyMemberships < ActiveRecord::Migration[8.0]
|
|||
|
||||
add_foreign_key :family_memberships, :families, validate: false
|
||||
add_foreign_key :family_memberships, :users, validate: false
|
||||
add_index :family_memberships, :family_id
|
||||
add_index :family_memberships, :user_id, unique: true # One family per user
|
||||
add_index :family_memberships, %i[family_id role]
|
||||
add_index :family_memberships, %i[family_id role], name: 'index_family_memberships_on_family_and_role'
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -14,10 +14,13 @@ class CreateFamilyInvitations < ActiveRecord::Migration[8.0]
|
|||
|
||||
add_foreign_key :family_invitations, :families, validate: false
|
||||
add_foreign_key :family_invitations, :users, column: :invited_by_id, validate: false
|
||||
add_index :family_invitations, :family_id
|
||||
add_index :family_invitations, :email
|
||||
add_index :family_invitations, :token, unique: true
|
||||
add_index :family_invitations, :status
|
||||
add_index :family_invitations, :expires_at
|
||||
add_index :family_invitations, %i[family_id email], name: 'index_family_invitations_on_family_id_and_email'
|
||||
add_index :family_invitations, %i[family_id status expires_at],
|
||||
name: 'index_family_invitations_on_family_status_expires'
|
||||
add_index :family_invitations, %i[status expires_at],
|
||||
name: 'index_family_invitations_on_status_and_expires_at'
|
||||
add_index :family_invitations, %i[status updated_at],
|
||||
name: 'index_family_invitations_on_status_and_updated_at'
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -19,13 +19,6 @@ class AddFamilyPerformanceIndexes < ActiveRecord::Migration[8.0]
|
|||
algorithm: :concurrently
|
||||
end
|
||||
|
||||
# Index for user email lookups in invitations (skip if exists)
|
||||
unless index_exists?(:family_invitations, :email)
|
||||
add_index :family_invitations, :email,
|
||||
name: 'index_family_invitations_on_email',
|
||||
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')
|
||||
|
|
@ -33,5 +26,13 @@ class AddFamilyPerformanceIndexes < ActiveRecord::Migration[8.0]
|
|||
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
|
||||
|
|
|
|||
|
|
@ -1,56 +0,0 @@
|
|||
class ConvertFamilyTablesToBigint < ActiveRecord::Migration[8.0]
|
||||
def up
|
||||
# Drop dependent tables first
|
||||
drop_table :family_invitations if table_exists?(:family_invitations)
|
||||
drop_table :family_memberships if table_exists?(:family_memberships)
|
||||
drop_table :families if table_exists?(:families)
|
||||
|
||||
# Recreate families table with bigint
|
||||
create_table :families do |t|
|
||||
t.string :name, null: false, limit: 50
|
||||
t.bigint :creator_id, null: false
|
||||
t.timestamps
|
||||
end
|
||||
|
||||
add_foreign_key :families, :users, column: :creator_id, validate: false
|
||||
add_index :families, :creator_id
|
||||
|
||||
# Recreate family_memberships table with bigint
|
||||
create_table :family_memberships do |t|
|
||||
t.bigint :family_id, null: false
|
||||
t.bigint :user_id, null: false
|
||||
t.integer :role, null: false, default: 1 # member
|
||||
t.timestamps
|
||||
end
|
||||
|
||||
add_foreign_key :family_memberships, :families, validate: false
|
||||
add_foreign_key :family_memberships, :users, validate: false
|
||||
add_index :family_memberships, :family_id
|
||||
add_index :family_memberships, :user_id, unique: true # One family per user
|
||||
add_index :family_memberships, %i[family_id role]
|
||||
|
||||
# Recreate family_invitations table with bigint
|
||||
create_table :family_invitations do |t|
|
||||
t.bigint :family_id, null: false
|
||||
t.string :email, null: false
|
||||
t.string :token, null: false
|
||||
t.datetime :expires_at, null: false
|
||||
t.bigint :invited_by_id, null: false
|
||||
t.integer :status, null: false, default: 0 # pending
|
||||
t.timestamps
|
||||
end
|
||||
|
||||
add_foreign_key :family_invitations, :families, validate: false
|
||||
add_foreign_key :family_invitations, :users, column: :invited_by_id, validate: false
|
||||
add_index :family_invitations, :family_id
|
||||
add_index :family_invitations, :email
|
||||
add_index :family_invitations, :token, unique: true
|
||||
add_index :family_invitations, :status
|
||||
add_index :family_invitations, :expires_at
|
||||
end
|
||||
|
||||
def down
|
||||
# This migration is irreversible since we're changing primary key types
|
||||
raise ActiveRecord::IrreversibleMigration
|
||||
end
|
||||
end
|
||||
Loading…
Reference in a new issue