import { Model, DataTypes } from 'sequelize'; import { sequelize } from './index'; import Invoice from './invoice'; import { InvoiceActivityLogInterface } from 'shared/interfaces/InvoiceActivityLog.interface'; import User from './users'; class InvoiceActivityLog extends Model implements InvoiceActivityLogInterface { public id!: number; public invoice_id!: number; public user_id!: number; public activity_type!: string; public field_name!: string; public old_value?: string; public new_value?: string; public created_at?: Date; public readonly createdAt!: Date; public readonly updatedAt!: Date; } InvoiceActivityLog.init( { id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true, }, invoice_id: { type: DataTypes.INTEGER, allowNull: false, references: { model: 'invoices', key: 'id', }, onUpdate: 'CASCADE', onDelete: 'CASCADE', }, user_id: { type: DataTypes.INTEGER, allowNull: false, references: { model: 'users', key: 'id', }, onUpdate: 'CASCADE', onDelete: 'CASCADE', }, activity_type: { type: DataTypes.STRING(50), allowNull: false, }, field_name: { type: DataTypes.STRING(100), allowNull: false, }, old_value: { type: DataTypes.TEXT, }, new_value: { type: DataTypes.TEXT, }, created_at: { type: DataTypes.DATE, allowNull: false, defaultValue: DataTypes.NOW, }, }, { sequelize, tableName: 'invoice_activity_logs', timestamps: false, } ); InvoiceActivityLog.belongsTo(Invoice, { foreignKey: 'invoice_id' }); InvoiceActivityLog.belongsTo(User, { foreignKey: 'user_id' , as : 'user'} ); export default InvoiceActivityLog;