163930a4f93335f7b006470cdbf33adf84c2b8ce
[oweals/peertube.git] / server / models / job / job-interface.ts
1 import * as Sequelize from 'sequelize'
2 import * as Promise from 'bluebird'
3
4 import { JobCategory, JobState } from '../../../shared/models/job.model'
5
6 export namespace JobMethods {
7   export type ListWithLimitByCategory = (limit: number, state: JobState, category: JobCategory) => Promise<JobInstance[]>
8 }
9
10 export interface JobClass {
11   listWithLimitByCategory: JobMethods.ListWithLimitByCategory
12 }
13
14 export interface JobAttributes {
15   state: JobState
16   handlerName: string
17   handlerInputData: object
18 }
19
20 export interface JobInstance extends JobClass, JobAttributes, Sequelize.Instance<JobAttributes> {
21   id: number
22   createdAt: Date
23   updatedAt: Date
24 }
25
26 export interface JobModel extends JobClass, Sequelize.Model<JobInstance, JobAttributes> {}