1
This commit is contained in:
26
server/models/crawl_run_record.js
Normal file
26
server/models/crawl_run_record.js
Normal 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
15
server/models/index.js
Normal 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' });
|
||||
19
server/models/schedule_task.js
Normal file
19
server/models/schedule_task.js
Normal 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'
|
||||
}
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user