@@ -2,18 +2,16 @@ import { Queue } from 'bullmq';
22import {
33 SchemaComposer ,
44 getFlatProjectionFromAST ,
5- ObjectTypeComposer ,
65 ObjectTypeComposerFieldConfigAsObjectDefinition ,
7- ObjectTypeComposerAsObjectDefinition ,
6+ ObjectTypeComposer ,
7+ inspect ,
88} from 'graphql-compose' ;
9- import {
10- MutationStatusEnum ,
11- ErrorCodeEnum ,
12- getMutationStatusEnumTC ,
13- getMutationErrorCodeEnumTC ,
14- } from '../types' ;
15- import { createBullConnection } from '../../connectRedis' ;
16- import { MutationError } from './Error' ;
9+ import { MutationError , ErrorCodeEnum } from './Error' ;
10+
11+ export enum MutationStatusEnum {
12+ OK = 'ok' ,
13+ ERROR = 'error' ,
14+ }
1715
1816export function getQueue ( queueName : string , context : any ) : Queue {
1917 const queue = context ?. Queues ?. get ( queueName ) ;
@@ -23,46 +21,29 @@ export function getQueue(queueName: string, context: any): Queue {
2321 return queue ;
2422}
2523
26- // export function getQueue(queueName: string, prefix: string): Queue {
27- // const queue = new Queue(queueName, {
28- // prefix,
29- // connection: createBullConnection('queue'),
30- // });
31-
32- // if (!queue) {
33- // throw new MutationError('Queue not found!', ErrorCodeEnum.QUEUE_NOT_FOUND);
34- // }
35- // return queue;
36- // }
37-
38- type FieldConfig = Omit < ObjectTypeComposerFieldConfigAsObjectDefinition < any , any > , 'type' > & {
39- type : ObjectTypeComposerAsObjectDefinition < any , any > ;
40- } ;
41-
4224type Generator = (
43- fieldConfig : FieldConfig
25+ fieldConfig : ObjectTypeComposerFieldConfigAsObjectDefinition < any , any >
4426) => ObjectTypeComposerFieldConfigAsObjectDefinition < any , any > ;
4527
4628export function createGenerateHelper ( schemaComposer : SchemaComposer < any > ) : Generator {
4729 return function generateMutation (
48- fieldConfig : FieldConfig
30+ fieldConfig : ObjectTypeComposerFieldConfigAsObjectDefinition < any , any >
4931 ) : ObjectTypeComposerFieldConfigAsObjectDefinition < any , any > {
50- let type : ObjectTypeComposer ;
51- try {
52- type = schemaComposer . createObjectTC ( fieldConfig . type as any ) ;
53- } catch ( e ) {
54- throw new Error ( 'Cannot wrap mutation payload cause it returns non-object type.' ) ;
32+ if ( ! ( fieldConfig . type instanceof ObjectTypeComposer ) ) {
33+ throw new Error (
34+ `Cannot wrap mutation payload cause it returns non-object type: ${ inspect ( fieldConfig ) } `
35+ ) ;
5536 }
5637
57- type . addFields ( {
38+ fieldConfig . type . addFields ( {
5839 status : getMutationStatusEnumTC ( schemaComposer ) ,
5940 query : 'Query!' ,
6041 error : 'String' ,
6142 errorCode : getMutationErrorCodeEnumTC ( schemaComposer ) ,
6243 } ) ;
6344
6445 const subResolve = fieldConfig . resolve || ( ( ) => ( { } ) ) ;
65- const resolve = async ( source , args , context , info ) => {
46+ fieldConfig . resolve = async ( source , args , context , info ) => {
6647 try {
6748 const subResult = await subResolve ( source , args , context , info ) ;
6849 return {
@@ -85,10 +66,25 @@ export function createGenerateHelper(schemaComposer: SchemaComposer<any>): Gener
8566 }
8667 } ;
8768
88- return {
89- ...fieldConfig ,
90- type,
91- resolve,
92- } ;
69+ return fieldConfig ;
9370 } ;
9471}
72+
73+ function getMutationErrorCodeEnumTC ( sc : SchemaComposer < any > ) {
74+ return sc . getOrCreateETC ( 'MutationErrorCodeEnum' , ( etc ) => {
75+ etc . addFields ( {
76+ QUEUE_NOT_FOUND : { value : ErrorCodeEnum . QUEUE_NOT_FOUND } ,
77+ JOB_NOT_FOUND : { value : ErrorCodeEnum . JOB_NOT_FOUND } ,
78+ OTHER_ERROR : { value : ErrorCodeEnum . OTHER_ERROR } ,
79+ } ) ;
80+ } ) ;
81+ }
82+
83+ function getMutationStatusEnumTC ( sc : SchemaComposer < any > ) {
84+ return sc . getOrCreateETC ( 'MutationStatusEnum' , ( etc ) => {
85+ etc . addFields ( {
86+ OK : { value : MutationStatusEnum . OK } ,
87+ ERROR : { value : MutationStatusEnum . ERROR } ,
88+ } ) ;
89+ } ) ;
90+ }
0 commit comments