11import { getQueue } from './_helpers' ;
2- import { SchemaComposer } from 'graphql-compose' ;
3- import { getJobTC , getJobOptionsInputTC } from '../types/job' ;
2+ import {
3+ SchemaComposer ,
4+ InputTypeComposer ,
5+ ObjectTypeComposerFieldConfigAsObjectDefinition ,
6+ } from 'graphql-compose' ;
7+ import { getJobTC } from '../types/job' ;
48
5- export function createJobAddFC ( schemaComposer : SchemaComposer < any > ) {
9+ function getPayloadTC ( sc : SchemaComposer < any > ) {
10+ return sc . getOrCreateOTC ( 'JobAddPayload' , ( etc ) => {
11+ etc . addFields ( {
12+ job : getJobTC ( sc ) ,
13+ } ) ;
14+ } ) ;
15+ }
16+
17+ export function createJobAddFC ( sc : SchemaComposer < any > ) {
18+ return composeJobAddFC ( sc , createJobOptionsInputTC ( 'JobOptionsInput' , sc ) ) ;
19+ }
20+
21+ export function createJobAddRepeatableCronFC ( sc : SchemaComposer < any > ) {
22+ return composeJobAddFC (
23+ sc ,
24+ createJobOptionsInputTC ( 'JobOptionsInputRepeatableCron' , sc ) . addFields ( {
25+ repeat : sc
26+ . createInputTC ( {
27+ name : 'RepeatOptionsInputCron' ,
28+ fields : {
29+ tz : 'String' ,
30+ endDate : 'Date' ,
31+ limit : 'Int' ,
32+ cron : 'String!' ,
33+ startDate : 'Date' ,
34+ } ,
35+ } )
36+ . getTypeNonNull ( ) ,
37+ } )
38+ ) ;
39+ }
40+
41+ export function createJobAddRepeatableEveryFC ( sc : SchemaComposer < any > ) {
42+ return composeJobAddFC (
43+ sc ,
44+ createJobOptionsInputTC ( 'JobOptionsInputRepeatableEvery' , sc ) . addFields ( {
45+ repeat : sc
46+ . createInputTC ( {
47+ name : 'RepeatOptionsInputEvery' ,
48+ fields : {
49+ tz : 'String' ,
50+ endDate : 'Date' ,
51+ limit : 'Int' ,
52+ cron : 'String!' ,
53+ startDate : 'Date' ,
54+ } ,
55+ } )
56+ . getTypeNonNull ( ) ,
57+ } )
58+ ) ;
59+ }
60+
61+ function composeJobAddFC (
62+ sc : SchemaComposer < any > ,
63+ optionsTC : InputTypeComposer < any >
64+ ) : ObjectTypeComposerFieldConfigAsObjectDefinition < any , any > {
665 return {
7- type : {
8- name : 'JobAddPayload' ,
9- fields : {
10- job : getJobTC ( schemaComposer ) ,
11- } ,
12- } ,
66+ type : getPayloadTC ( sc ) ,
1367 args : {
1468 queueName : 'String!' ,
1569 jobName : 'String!' ,
1670 data : 'JSON!' ,
17- options : getJobOptionsInputTC ( schemaComposer ) ,
71+ options : optionsTC ,
1872 } ,
1973 resolve : async ( _ , { queueName, jobName, data, options } , context ) => {
2074 const queue = getQueue ( queueName , context ) ;
@@ -25,3 +79,21 @@ export function createJobAddFC(schemaComposer: SchemaComposer<any>) {
2579 } ,
2680 } ;
2781}
82+
83+ function createJobOptionsInputTC ( name : string , sc : SchemaComposer < any > ) : InputTypeComposer < any > {
84+ return sc . createInputTC ( {
85+ name,
86+ fields : {
87+ priority : 'Int' ,
88+ delay : 'Int' ,
89+ attempts : 'Int' ,
90+ backoff : 'Int' , // | TODO: BackoffOptions
91+ lifo : 'Boolean' ,
92+ timeout : 'Int' ,
93+ jobId : 'String' ,
94+ removeOnComplete : 'Boolean' , //TODO: bool or int
95+ removeOnFail : 'Boolean' , //TODO: bool or int
96+ stackTraceLimit : 'Int' ,
97+ } ,
98+ } ) ;
99+ }
0 commit comments