]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blob - server/models/job/job.ts
Upgrade express validator to v4
[github/Chocobozzz/PeerTube.git] / server / models / job / job.ts
1 import { values } from 'lodash'
2 import * as Sequelize from 'sequelize'
3
4 import { JOB_STATES } from '../../initializers'
5
6 import { addMethodsToModel } from '../utils'
7 import {
8 JobInstance,
9 JobAttributes,
10
11 JobMethods
12 } from './job-interface'
13 import { JobState } from '../../../shared/models/job.model'
14
15 let Job: Sequelize.Model<JobInstance, JobAttributes>
16 let listWithLimit: JobMethods.ListWithLimit
17
18 export default function defineJob (sequelize: Sequelize.Sequelize, DataTypes: Sequelize.DataTypes) {
19 Job = sequelize.define<JobInstance, JobAttributes>('Job',
20 {
21 state: {
22 type: DataTypes.ENUM(values(JOB_STATES)),
23 allowNull: false
24 },
25 handlerName: {
26 type: DataTypes.STRING,
27 allowNull: false
28 },
29 handlerInputData: {
30 type: DataTypes.JSON,
31 allowNull: true
32 }
33 },
34 {
35 indexes: [
36 {
37 fields: [ 'state' ]
38 }
39 ]
40 }
41 )
42
43 const classMethods = [ listWithLimit ]
44 addMethodsToModel(Job, classMethods)
45
46 return Job
47 }
48
49 // ---------------------------------------------------------------------------
50
51 listWithLimit = function (limit: number, state: JobState) {
52 const query = {
53 order: [
54 [ 'id', 'ASC' ]
55 ],
56 limit: limit,
57 where: {
58 state
59 }
60 }
61
62 return Job.findAll(query)
63 }