126 lines
3.3 KiB
JavaScript
126 lines
3.3 KiB
JavaScript
const dayjs = require("dayjs");
|
|
const Sequelize = require('sequelize');
|
|
|
|
module.exports = (db) => {
|
|
const task_commands = db.define("task_commands", {
|
|
task_id: {
|
|
comment: '任务ID',
|
|
type: Sequelize.INTEGER,
|
|
allowNull: true,
|
|
defaultValue: null
|
|
// 不添加外键关联,避免数据库层面的约束
|
|
},
|
|
command_type: {
|
|
comment: '指令类型',
|
|
type: Sequelize.STRING(50),
|
|
allowNull: false,
|
|
defaultValue: ''
|
|
},
|
|
command_name: {
|
|
comment: '指令名称',
|
|
type: Sequelize.STRING(100),
|
|
allowNull: false,
|
|
defaultValue: ''
|
|
},
|
|
command_params: {
|
|
comment: '指令参数',
|
|
type: Sequelize.TEXT,
|
|
allowNull: true,
|
|
defaultValue: null
|
|
},
|
|
status: {
|
|
comment: '指令状态',
|
|
type: Sequelize.ENUM('pending', 'running', 'completed', 'failed', 'cancelled'),
|
|
allowNull: false,
|
|
defaultValue: 'pending'
|
|
},
|
|
priority: {
|
|
comment: '优先级',
|
|
type: Sequelize.INTEGER,
|
|
allowNull: false,
|
|
defaultValue: 1
|
|
},
|
|
sequence: {
|
|
comment: '执行顺序',
|
|
type: Sequelize.INTEGER,
|
|
allowNull: false,
|
|
defaultValue: 1
|
|
},
|
|
retry_count: {
|
|
comment: '重试次数',
|
|
type: Sequelize.INTEGER,
|
|
allowNull: false,
|
|
defaultValue: 0
|
|
},
|
|
max_retries: {
|
|
comment: '最大重试次数',
|
|
type: Sequelize.INTEGER,
|
|
allowNull: false,
|
|
defaultValue: 3
|
|
},
|
|
start_time: {
|
|
comment: '开始时间',
|
|
type: Sequelize.DATE,
|
|
allowNull: true,
|
|
defaultValue: null
|
|
},
|
|
end_time: {
|
|
comment: '结束时间',
|
|
type: Sequelize.DATE,
|
|
allowNull: true,
|
|
defaultValue: null
|
|
},
|
|
duration: {
|
|
comment: '执行时长(毫秒)',
|
|
type: Sequelize.INTEGER,
|
|
allowNull: true,
|
|
defaultValue: null
|
|
},
|
|
result: {
|
|
comment: '执行结果',
|
|
type: Sequelize.TEXT,
|
|
allowNull: true,
|
|
defaultValue: null
|
|
},
|
|
error_message: {
|
|
comment: '错误信息',
|
|
type: Sequelize.TEXT,
|
|
allowNull: true,
|
|
defaultValue: null
|
|
},
|
|
error_stack: {
|
|
comment: '错误堆栈',
|
|
type: Sequelize.TEXT,
|
|
allowNull: true,
|
|
defaultValue: null
|
|
},
|
|
progress: {
|
|
comment: '执行进度(0-100)',
|
|
type: Sequelize.INTEGER,
|
|
allowNull: false,
|
|
defaultValue: 0
|
|
},
|
|
}, {
|
|
tableName: 'task_commands',
|
|
indexes: [
|
|
{
|
|
fields: ['task_id']
|
|
},
|
|
{
|
|
fields: ['status']
|
|
},
|
|
{
|
|
fields: ['command_type']
|
|
},
|
|
{
|
|
fields: ['priority', 'sequence']
|
|
},
|
|
|
|
]
|
|
});
|
|
|
|
// task_commands.sync({ force: true });
|
|
|
|
return task_commands;
|
|
};
|