1- import { schemaComposer , SchemaComposer } from 'graphql-compose' ;
1+ import {
2+ schemaComposer ,
3+ SchemaComposer ,
4+ ObjectTypeComposerFieldConfigAsObjectDefinition ,
5+ } from 'graphql-compose' ;
26import { Options } from './definitions' ;
37import { getQueueTC , getJobTC } from './types' ;
48import { createQueuesFC , createQueueKeysFC , createQueueFC , createJobFC } from './query' ;
@@ -19,22 +23,54 @@ import {
1923 createJobUpdateFC ,
2024 createJobLogAddFC ,
2125} from './mutation' ;
22- import { createMutationFC , predefineQueueArgs } from './helpers' ;
26+ import { createMutationFC , wrapQueueArgs } from './helpers' ;
2327
2428export function composeBull ( opts : Options & { schemaComposer ?: SchemaComposer < any > } ) {
2529 const sc = opts ?. schemaComposer || schemaComposer ;
2630
31+ /**
32+ * Compose several FC creator with middlewares
33+ * Eg. composeFC(sc, opts)(createQueueKeysFC, wrapQueueArgs, wrapOtherMiddleware)
34+ * Will work like the following code:
35+ * let fc = createQueueKeysFC(sc, opts);
36+ * fc = wrapQueueArgs(fc, sc, opts)
37+ * fc = wrapOtherMiddleware(fc, sc, opts)
38+ * return fc;
39+ */
40+ function composeFC ( sc : SchemaComposer < any > , opts : Options ) {
41+ return (
42+ creator : (
43+ sc : SchemaComposer < any > ,
44+ opts : Options
45+ ) => ObjectTypeComposerFieldConfigAsObjectDefinition < any , any > ,
46+ ...middlewares : ( (
47+ fc : ObjectTypeComposerFieldConfigAsObjectDefinition < any , any > ,
48+ sc : SchemaComposer < any > ,
49+ opts : Options
50+ ) => ObjectTypeComposerFieldConfigAsObjectDefinition < any , any > ) [ ]
51+ ) : ObjectTypeComposerFieldConfigAsObjectDefinition < any , any > => {
52+ let fc = creator ( sc , opts ) ;
53+ for ( let i = 0 ; i < middlewares . length ; i ++ ) {
54+ fc = middlewares [ i ] ( fc , sc , opts ) ;
55+ }
56+ return fc ;
57+ } ;
58+ }
59+
60+ const wrap = composeFC ( sc , opts ) ;
61+
2762 return {
2863 QueueTC : getQueueTC ( sc , opts ) ,
2964 JobTC : getJobTC ( sc , opts ) ,
3065 queryFields : {
31- queueKeys : predefineQueueArgs ( createQueueKeysFC ( sc , opts ) , opts ) ,
66+ queueKeys : wrap ( createQueueKeysFC , wrapQueueArgs ) ,
3267 queues : predefineQueueArgs ( createQueuesFC ( sc , opts ) , opts ) ,
3368 queue : predefineQueueArgs ( createQueueFC ( sc , opts ) , opts ) ,
3469 job : predefineQueueArgs ( createJobFC ( sc , opts ) , opts ) ,
3570 } ,
3671 mutationFields : {
37- queueClean : predefineQueueArgs ( createMutationFC ( createQueueCleanFC , sc , opts ) , opts ) ,
72+ queueClean : wrap ( createQueueCleanFC , createMutationFC , predefineQueueArgs ) ,
73+ // queueClean: predefineQueueArgs(createMutationFC(createQueueCleanFC, sc, opts), opts),
3874 queueDrain : predefineQueueArgs ( createMutationFC ( createQueueDrainFC , sc , opts ) , opts ) ,
3975 queuePause : predefineQueueArgs ( createMutationFC ( createQueuePauseFC , sc , opts ) , opts ) ,
4076 queueResume : predefineQueueArgs ( createMutationFC ( createQueueResumeFC , sc , opts ) , opts ) ,
0 commit comments