const { DataTypes } = require('sequelize'); const { sequelize } = require('../config/database'); const Message = sequelize.define('messages', { id: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, primaryKey: true }, school_id: { type: DataTypes.UUID }, sender_id: { type: DataTypes.UUID, allowNull: false }, receiver_id: { type: DataTypes.UUID }, receiver_role: { type: DataTypes.STRING(50) }, subject: { type: DataTypes.STRING(255) }, content: { type: DataTypes.TEXT, allowNull: false }, message_type: { type: DataTypes.ENUM('direct', 'broadcast', 'class_message', 'parent_teacher'), defaultValue: 'direct' }, parent_message_id: { type: DataTypes.UUID }, attachments: { type: DataTypes.JSON }, is_read: { type: DataTypes.BOOLEAN, defaultValue: false }, read_at: { type: DataTypes.DATE }, is_archived: { type: DataTypes.BOOLEAN, defaultValue: false }, created_at: { type: DataTypes.DATE, allowNull: false, defaultValue: DataTypes.NOW }, updated_at: { type: DataTypes.DATE, allowNull: false, defaultValue: DataTypes.NOW }, }, { tableName: 'messages', timestamps: true, underscored: true, indexes: [ { fields: ['school_id'] }, { fields: ['sender_id'] }, { fields: ['receiver_id'] }, { fields: ['is_read'] }, { fields: ['parent_message_id'] }, ], }); module.exports = Message;