"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;
    `);
  }
};

