1
This commit is contained in:
125
api/model/task_commands.js
Normal file
125
api/model/task_commands.js
Normal file
@@ -0,0 +1,125 @@
|
||||
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;
|
||||
};
|
||||
Reference in New Issue
Block a user