import { Model, DataTypes, Sequelize } from 'sequelize'; export interface DocumentVersionAttributes { id: string; documentId: string; versionNumber: number; filePath: string; uploadedBy: string | null; } export interface DocumentVersionInstance extends Model, DocumentVersionAttributes { } export default (sequelize: Sequelize) => { const DocumentVersion = sequelize.define('DocumentVersion', { id: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, primaryKey: true }, documentId: { type: DataTypes.UUID, allowNull: false, references: { model: 'documents', key: 'id' } }, versionNumber: { type: DataTypes.INTEGER, allowNull: false }, filePath: { type: DataTypes.STRING, allowNull: false }, uploadedBy: { type: DataTypes.UUID, allowNull: true, references: { model: 'users', key: 'id' } } }, { tableName: 'document_versions', timestamps: true, updatedAt: false }); (DocumentVersion as any).associate = (models: any) => { DocumentVersion.belongsTo(models.Document, { foreignKey: 'documentId', as: 'document' }); DocumentVersion.belongsTo(models.User, { foreignKey: 'uploadedBy', as: 'uploader' }); }; return DocumentVersion; };