31 lines
906 B
JavaScript
31 lines
906 B
JavaScript
"use strict";
|
|
|
|
module.exports = {
|
|
async up(queryInterface, Sequelize) {
|
|
// Create index on (user_id, shown) to optimize markNotificationsShown queries
|
|
// This prevents deadlocks by allowing fast lookups and reducing lock contention
|
|
await queryInterface.sequelize.query(`
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM pg_class c
|
|
JOIN pg_namespace n ON n.oid = c.relnamespace
|
|
WHERE c.relkind = 'i'
|
|
AND c.relname = 'idx_notification_user_id_shown'
|
|
AND n.nspname = 'falukant_log'
|
|
) THEN
|
|
CREATE INDEX idx_notification_user_id_shown
|
|
ON falukant_log.notification (user_id, shown);
|
|
END IF;
|
|
END$$;
|
|
`);
|
|
},
|
|
|
|
async down(queryInterface, Sequelize) {
|
|
await queryInterface.sequelize.query(`
|
|
DROP INDEX IF EXISTS falukant_log.idx_notification_user_id_shown;
|
|
`);
|
|
}
|
|
};
|
|
|