'use strict'; module.exports = { async up(queryInterface, Sequelize) { await queryInterface.createTable('announcements', { id: { type: Sequelize.BIGINT, autoIncrement: true, primaryKey: true, }, title: { type: Sequelize.STRING(255), allowNull: false, }, body: { type: Sequelize.TEXT, allowNull: false, }, scope: { type: Sequelize.ENUM('global', 'course', 'role'), allowNull: false, defaultValue: 'global', }, priority: { type: Sequelize.ENUM('low', 'normal', 'urgent'), allowNull: false, defaultValue: 'normal', }, published_by: { type: Sequelize.BIGINT, allowNull: true, references: { model: 'users', key: 'user_id' }, onDelete: 'SET NULL', }, starts_at: { type: Sequelize.DATE, allowNull: true, }, ends_at: { type: Sequelize.DATE, allowNull: true, }, is_active: { type: Sequelize.BOOLEAN, allowNull: false, defaultValue: true, }, created_at: { type: Sequelize.DATE, allowNull: false, defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'), }, updated_at: { type: Sequelize.DATE, allowNull: false, defaultValue: Sequelize.literal('CURRENT_TIMESTAMP'), }, }); await queryInterface.addIndex('announcements', { fields: ['scope'], name: 'idx_announcements_scope' }); await queryInterface.addIndex('announcements', { fields: ['is_active'], name: 'idx_announcements_is_active' }); }, async down(queryInterface) { await queryInterface.dropTable('announcements'); }, };