This commit is contained in:
张成
2026-03-18 14:18:41 +08:00
parent 54341f0a0b
commit 5b671d320b
21 changed files with 4404 additions and 42 deletions

View File

@@ -0,0 +1,26 @@
import { DataTypes } from 'sequelize';
export function define_crawl_run_record(sequelize) {
return sequelize.define(
'crawl_run_record',
{
id: { type: DataTypes.BIGINT.UNSIGNED, primaryKey: true, autoIncrement: true },
action_name: { type: DataTypes.STRING(128), allowNull: false },
request_payload: { type: DataTypes.TEXT, allowNull: true, comment: 'JSON 请求体' },
ok: { type: DataTypes.BOOLEAN, allowNull: false },
result_payload: { type: DataTypes.TEXT('long'), allowNull: true, comment: 'JSON 结果' },
error_message: { type: DataTypes.TEXT, allowNull: true },
source: {
type: DataTypes.STRING(32),
allowNull: false,
defaultValue: 'api',
comment: 'api | cron'
},
schedule_task_id: { type: DataTypes.BIGINT.UNSIGNED, allowNull: true }
},
{
tableName: 'crawl_run_record',
indexes: [{ fields: ['action_name'] }, { fields: ['created_at'] }]
}
);
}

15
server/models/index.js Normal file
View File

@@ -0,0 +1,15 @@
import { Sequelize } from 'sequelize';
import { get_sequelize_options } from '../config/database.js';
import { define_crawl_run_record } from './crawl_run_record.js';
import { define_schedule_task } from './schedule_task.js';
const sequelize_options = get_sequelize_options();
const { database, username, password, ...rest } = sequelize_options;
export const sequelize = new Sequelize(database, username, password, rest);
export const crawl_run_record = define_crawl_run_record(sequelize);
export const schedule_task = define_schedule_task(sequelize);
schedule_task.hasMany(crawl_run_record, { foreignKey: 'schedule_task_id', as: 'records' });
crawl_run_record.belongsTo(schedule_task, { foreignKey: 'schedule_task_id', as: 'schedule_task' });

View File

@@ -0,0 +1,19 @@
import { DataTypes } from 'sequelize';
export function define_schedule_task(sequelize) {
return sequelize.define(
'schedule_task',
{
id: { type: DataTypes.BIGINT.UNSIGNED, primaryKey: true, autoIncrement: true },
name: { type: DataTypes.STRING(128), allowNull: false },
cron_expression: { type: DataTypes.STRING(64), allowNull: false },
action_name: { type: DataTypes.STRING(128), allowNull: false },
payload_json: { type: DataTypes.TEXT, allowNull: true },
enabled: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: true },
last_run_at: { type: DataTypes.DATE, allowNull: true }
},
{
tableName: 'schedule_task'
}
);
}