Skip to content

Commit 511d78d

Browse files
committed
refactor: change project structure
1 parent 40b4376 commit 511d78d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+128
-161
lines changed

example/src/declarations/Context.ts

Lines changed: 0 additions & 7 deletions
This file was deleted.

example/src/declarations/index.ts

Lines changed: 0 additions & 1 deletion
This file was deleted.

example/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { ApolloServer } from 'apollo-server';
2-
import { Queues } from './queues';
2+
import { Queues } from './demo_queues';
33
import schema from './schema';
44

55
const server = new ApolloServer({
Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
1-
import { ErrorCodeEnum } from '../types';
2-
31
export class MutationError extends Error {
42
constructor(message: string, public code: ErrorCodeEnum) {
53
super(message);
64
Object.setPrototypeOf(this, MutationError.prototype);
75
}
86
}
7+
8+
export enum ErrorCodeEnum {
9+
QUEUE_NOT_FOUND = 'queue_not_found',
10+
JOB_NOT_FOUND = 'job_not_found',
11+
OTHER_ERROR = 'other_error',
12+
}

example/src/schema/mutation/_helpers.ts renamed to example/src/schema/mutation/helpers/wrapMutationFC.ts

Lines changed: 36 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,16 @@ import { Queue } from 'bullmq';
22
import {
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

1816
export 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-
4224
type Generator = (
43-
fieldConfig: FieldConfig
25+
fieldConfig: ObjectTypeComposerFieldConfigAsObjectDefinition<any, any>
4426
) => ObjectTypeComposerFieldConfigAsObjectDefinition<any, any>;
4527

4628
export 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+
}

example/src/schema/mutation/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { createJobRetryFC } from './jobRetry';
1616
import { createJobUpdateFC } from './jobUpdate';
1717
import { createJobLogAddFC } from './jobLogAdd';
1818

19-
import { createGenerateHelper } from './_helpers';
19+
import { createGenerateHelper } from './helpers/wrapMutationFC';
2020

2121
export function createMutationFields({
2222
schemaComposer,

example/src/schema/mutation/jobAdd.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { getQueue } from './_helpers';
1+
import { getQueue } from './helpers/wrapMutationFC';
22
import {
33
SchemaComposer,
44
InputTypeComposer,
55
ObjectTypeComposerFieldConfigAsObjectDefinition,
66
} from 'graphql-compose';
7-
import { getJobTC } from '../types/job';
7+
import { getJobTC } from '../types/job/Job';
88

99
function getPayloadTC(sc: SchemaComposer<any>) {
1010
return sc.getOrCreateOTC('JobAddPayload', (etc) => {

example/src/schema/mutation/jobDiscard.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { MutationError } from './Error';
1+
import { MutationError } from './helpers/Error';
22
import { ErrorCodeEnum, getJobStatusEnumTC } from '../types';
3-
import { getQueue } from './_helpers';
3+
import { getQueue } from './helpers/wrapMutationFC';
44

55
export function createJobDiscardFC({ schemaComposer }) {
66
return {

0 commit comments

Comments
 (0)