]>
Commit | Line | Data |
---|---|---|
65fcc311 | 1 | import { values } from 'lodash' |
3fd3ab2d C |
2 | import { AllowNull, Column, CreatedAt, DataType, Model, Table, UpdatedAt } from 'sequelize-typescript' |
3 | import { JobCategory, JobState } from '../../../shared/models' | |
5cd80545 | 4 | import { JOB_CATEGORIES, JOB_STATES } from '../../initializers' |
3fd3ab2d | 5 | import { getSort } from '../utils' |
e02643f3 | 6 | |
3fd3ab2d C |
7 | @Table({ |
8 | tableName: 'job', | |
9 | indexes: [ | |
227d02fe | 10 | { |
3fd3ab2d | 11 | fields: [ 'state', 'category' ] |
227d02fe | 12 | } |
5cd80545 | 13 | ] |
3fd3ab2d C |
14 | }) |
15 | export class JobModel extends Model<JobModel> { | |
16 | @AllowNull(false) | |
17 | @Column(DataType.ENUM(values(JOB_STATES))) | |
18 | state: JobState | |
e02643f3 | 19 | |
3fd3ab2d C |
20 | @AllowNull(false) |
21 | @Column(DataType.ENUM(values(JOB_CATEGORIES))) | |
22 | category: JobCategory | |
227d02fe | 23 | |
3fd3ab2d C |
24 | @AllowNull(false) |
25 | @Column | |
26 | handlerName: string | |
5cd80545 | 27 | |
3fd3ab2d C |
28 | @AllowNull(true) |
29 | @Column(DataType.JSON) | |
30 | handlerInputData: any | |
227d02fe | 31 | |
3fd3ab2d | 32 | @CreatedAt |
65b3ed25 | 33 | createdAt: Date |
3fd3ab2d C |
34 | |
35 | @UpdatedAt | |
65b3ed25 | 36 | updatedAt: Date |
3fd3ab2d C |
37 | |
38 | static listWithLimitByCategory (limit: number, state: JobState, jobCategory: JobCategory) { | |
39 | const query = { | |
40 | order: [ | |
41 | [ 'id', 'ASC' ] | |
42 | ], | |
43 | limit: limit, | |
44 | where: { | |
45 | state, | |
46 | category: jobCategory | |
2cfe6496 C |
47 | }, |
48 | logging: false | |
227d02fe | 49 | } |
3fd3ab2d C |
50 | |
51 | return JobModel.findAll(query) | |
227d02fe C |
52 | } |
53 | ||
3fd3ab2d C |
54 | static listForApi (start: number, count: number, sort: string) { |
55 | const query = { | |
56 | offset: start, | |
57 | limit: count, | |
58 | order: [ getSort(sort) ] | |
59 | } | |
5cd80545 | 60 | |
3fd3ab2d C |
61 | return JobModel.findAndCountAll(query).then(({ rows, count }) => { |
62 | return { | |
63 | data: rows, | |
64 | total: count | |
65 | } | |
66 | }) | |
5cd80545 C |
67 | } |
68 | ||
3fd3ab2d | 69 | toFormattedJSON () { |
5cd80545 | 70 | return { |
3fd3ab2d C |
71 | id: this.id, |
72 | state: this.state, | |
73 | category: this.category, | |
74 | handlerName: this.handlerName, | |
75 | handlerInputData: this.handlerInputData, | |
76 | createdAt: this.createdAt, | |
77 | updatedAt: this.updatedAt | |
5cd80545 | 78 | } |
3fd3ab2d | 79 | } |
5cd80545 | 80 | } |