40 lines
923 B
Ruby
40 lines
923 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
class AddIndexesToNotifications < ActiveRecord::Migration[7.0]
|
||
|
disable_ddl_transaction!
|
||
|
|
||
|
def up
|
||
|
execute <<~SQL
|
||
|
DROP INDEX IF EXISTS index_notifications_user_menu_ordering
|
||
|
SQL
|
||
|
|
||
|
execute <<~SQL
|
||
|
CREATE INDEX CONCURRENTLY index_notifications_user_menu_ordering
|
||
|
ON notifications (
|
||
|
user_id,
|
||
|
(high_priority AND NOT read) DESC,
|
||
|
(NOT read) DESC,
|
||
|
created_at DESC
|
||
|
);
|
||
|
SQL
|
||
|
|
||
|
execute <<~SQL
|
||
|
DROP INDEX IF EXISTS index_notifications_user_menu_ordering_deprioritized_likes
|
||
|
SQL
|
||
|
|
||
|
execute <<~SQL
|
||
|
CREATE INDEX CONCURRENTLY index_notifications_user_menu_ordering_deprioritized_likes
|
||
|
ON notifications (
|
||
|
user_id,
|
||
|
(high_priority AND NOT read) DESC,
|
||
|
(NOT read AND notification_type NOT IN (5,19,25)) DESC,
|
||
|
created_at DESC
|
||
|
);
|
||
|
SQL
|
||
|
end
|
||
|
|
||
|
def down
|
||
|
raise ActiveRecord::IrreversibleMigration
|
||
|
end
|
||
|
end
|