From 74889a71fe687dda74f2a687653122327807af36 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 16 Jun 2017 09:45:46 +0200 Subject: Reorganize model files --- server/models/job/index.ts | 1 + server/models/job/job-interface.ts | 24 +++++++++++++++ server/models/job/job.ts | 63 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+) create mode 100644 server/models/job/index.ts create mode 100644 server/models/job/job-interface.ts create mode 100644 server/models/job/job.ts (limited to 'server/models/job') diff --git a/server/models/job/index.ts b/server/models/job/index.ts new file mode 100644 index 000000000..56925fd32 --- /dev/null +++ b/server/models/job/index.ts @@ -0,0 +1 @@ +export * from './job-interface' diff --git a/server/models/job/job-interface.ts b/server/models/job/job-interface.ts new file mode 100644 index 000000000..ab6678257 --- /dev/null +++ b/server/models/job/job-interface.ts @@ -0,0 +1,24 @@ +import * as Sequelize from 'sequelize' + +export namespace JobMethods { + export type ListWithLimitCallback = (err: Error, jobInstances: JobInstance[]) => void + export type ListWithLimit = (limit: number, state: string, callback: ListWithLimitCallback) => void +} + +export interface JobClass { + listWithLimit: JobMethods.ListWithLimit +} + +export interface JobAttributes { + state: string + handlerName: string + handlerInputData: object +} + +export interface JobInstance extends JobClass, JobAttributes, Sequelize.Instance { + id: number + createdAt: Date + updatedAt: Date +} + +export interface JobModel extends JobClass, Sequelize.Model {} diff --git a/server/models/job/job.ts b/server/models/job/job.ts new file mode 100644 index 000000000..60a6c551b --- /dev/null +++ b/server/models/job/job.ts @@ -0,0 +1,63 @@ +import { values } from 'lodash' +import * as Sequelize from 'sequelize' + +import { JOB_STATES } from '../../initializers' + +import { addMethodsToModel } from '../utils' +import { + JobClass, + JobInstance, + JobAttributes, + + JobMethods +} from './job-interface' + +let Job: Sequelize.Model +let listWithLimit: JobMethods.ListWithLimit + +export default function defineJob (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) { + Job = sequelize.define('Job', + { + state: { + type: DataTypes.ENUM(values(JOB_STATES)), + allowNull: false + }, + handlerName: { + type: DataTypes.STRING, + allowNull: false + }, + handlerInputData: { + type: DataTypes.JSON, + allowNull: true + } + }, + { + indexes: [ + { + fields: [ 'state' ] + } + ] + } + ) + + const classMethods = [ listWithLimit ] + addMethodsToModel(Job, classMethods) + + return Job +} + +// --------------------------------------------------------------------------- + +listWithLimit = function (limit: number, state: string, callback: JobMethods.ListWithLimitCallback) { + const query = { + order: [ + [ 'id', 'ASC' ] + ], + limit: limit, + where: { + state + } + } + + return Job.findAll(query).asCallback(callback) +} -- cgit v1.2.3