const { DataTypes } = require('sequelize'); const { sequelize } = require('../db'); const BackupLog = sequelize.define( 'BackupLog', { id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true, }, logType: { type: DataTypes.ENUM('auto', 'manual'), allowNull: false, comment: '备份类型:auto自动,manual手动', }, status: { type: DataTypes.ENUM('pending', 'running', 'success', 'failed'), allowNull: false, defaultValue: 'pending', comment: '状态:pending待执行,running执行中,success成功,failed失败', }, description: { type: DataTypes.STRING, allowNull: true, comment: '备份描述', }, backupType: { type: DataTypes.ENUM('full', 'incremental'), allowNull: true, comment: '备份类型:full全量,incremental增量', }, filename: { type: DataTypes.STRING, allowNull: true, comment: '备份文件名', }, filePath: { type: DataTypes.STRING, allowNull: true, comment: '备份文件路径', }, fileSize: { type: DataTypes.BIGINT, allowNull: true, comment: '文件大小(字节)', }, errorMessage: { type: DataTypes.TEXT, allowNull: true, comment: '错误信息', }, startTime: { type: DataTypes.DATE, allowNull: true, comment: '开始时间', }, endTime: { type: DataTypes.DATE, allowNull: true, comment: '结束时间', }, duration: { type: DataTypes.INTEGER, allowNull: true, comment: '执行时长(毫秒)', }, includeFiles: { type: DataTypes.BOOLEAN, defaultValue: false, comment: '是否包含文件', }, compressed: { type: DataTypes.BOOLEAN, defaultValue: false, comment: '是否压缩', }, remoteUploads: { type: DataTypes.JSON, allowNull: true, comment: '远端上传结果', }, }, { tableName: 'backup_logs', timestamps: true, comment: '备份日志表', indexes: [ { fields: ['logType'] }, { fields: ['status'] }, { fields: ['createdAt'] }, { fields: ['logType', 'createdAt'] }, ], } ); module.exports = BackupLog;