const { REQUEST_TYPES, DOCUMENT_TYPES } = require('../config/constants'); module.exports = (sequelize, DataTypes) => { const Document = sequelize.define('Document', { id: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, primaryKey: true }, requestId: { type: DataTypes.UUID, allowNull: false }, requestType: { type: DataTypes.ENUM(Object.values(REQUEST_TYPES)), allowNull: false }, documentType: { type: DataTypes.ENUM(Object.values(DOCUMENT_TYPES)), allowNull: false }, fileName: { type: DataTypes.STRING, allowNull: false }, fileUrl: { type: DataTypes.STRING, allowNull: false }, fileSize: { type: DataTypes.INTEGER, allowNull: true }, uploadedBy: { type: DataTypes.UUID, allowNull: false, references: { model: 'users', key: 'id' } }, status: { type: DataTypes.STRING, defaultValue: 'Active' } }, { tableName: 'documents', timestamps: true, indexes: [ { fields: ['requestId'] }, { fields: ['requestType'] }, { fields: ['documentType'] } ] }); Document.associate = (models) => { Document.belongsTo(models.User, { foreignKey: 'uploadedBy', as: 'uploader' }); }; return Document; };