1 import { pick } from '@shared/core-utils'
2 import { HttpStatusCode } from '@shared/models'
3 import { Job, JobState, JobType, ResultList } from '../../models'
4 import { AbstractCommand, OverrideCommandOptions } from '../shared'
6 export class JobsCommand extends AbstractCommand {
8 async getLatest (options: OverrideCommandOptions & {
11 const { data } = await this.getJobsList({ ...options, start: 0, count: 1, sort: '-createdAt' })
13 if (data.length === 0) return undefined
18 getJobsList (options: OverrideCommandOptions & {
25 const path = this.buildJobsUrl(options.state)
27 const query = pick(options, [ 'start', 'count', 'sort', 'jobType' ])
29 return this.getRequestBody<ResultList<Job>>({
35 defaultExpectedStatus: HttpStatusCode.OK_200
39 private buildJobsUrl (state?: JobState) {
40 let path = '/api/v1/jobs'
42 if (state) path += '/' + state