Skip to content

Commit 3aad9cb

Browse files
author
Boris
committed
refactor: generate helper to up
1 parent 662d8a1 commit 3aad9cb

File tree

15 files changed

+113
-99
lines changed

15 files changed

+113
-99
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,5 @@ node_modules
4444

4545
coverage
4646
.nyc_output
47+
48+
snippets

.vscode/settings.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@
44
"editor.codeActionsOnSave": {
55
"source.fixAll.eslint": true
66
},
7-
"editor.formatOnSave": true
7+
"editor.formatOnSave": true,
8+
"editor.tabSize": 2
89
}

example/src/schema/mutation/_helpers.ts

Lines changed: 46 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -17,53 +17,60 @@ export function getQueue(queueName: string, context: any): Queue {
1717
return Queue;
1818
}
1919

20-
export function generateMutation(
21-
schemaComposer: SchemaComposer<any>,
22-
fieldConfig: Omit<ObjectTypeComposerFieldConfigAsObjectDefinition<any, any>, 'type'> & {
23-
type: ObjectTypeComposerAsObjectDefinition<any, any>;
24-
}
25-
): ObjectTypeComposerFieldConfigAsObjectDefinition<any, any> {
26-
let type: ObjectTypeComposer;
27-
try {
28-
type = schemaComposer.createObjectTC(fieldConfig.type as any);
29-
} catch (e) {
30-
throw new Error('Cannot wrap mutation payload cause it returns non-object type.');
31-
}
20+
type FieldConfig = Omit<ObjectTypeComposerFieldConfigAsObjectDefinition<any, any>, 'type'> & {
21+
type: ObjectTypeComposerAsObjectDefinition<any, any>;
22+
};
3223

33-
type.addFields({
34-
status: 'PayloadStatusEnum!',
35-
query: 'Query!',
36-
error: 'String',
37-
errorCode: 'ErrorCodeEnum',
38-
});
24+
type Generator = (
25+
fieldConfig: FieldConfig
26+
) => ObjectTypeComposerFieldConfigAsObjectDefinition<any, any>;
3927

40-
const subResolve = fieldConfig.resolve || (() => ({}));
41-
const resolve = async (source, args, context, info) => {
28+
export function createGenerateHelper(schemaComposer: SchemaComposer<any>): Generator {
29+
return function generateMutation(
30+
fieldConfig: FieldConfig
31+
): ObjectTypeComposerFieldConfigAsObjectDefinition<any, any> {
32+
let type: ObjectTypeComposer;
4233
try {
43-
const subResult = await subResolve(source, args, context, info);
44-
return {
45-
query: {},
46-
status: PayloadStatusEnum.OK,
47-
...subResult,
48-
};
34+
type = schemaComposer.createObjectTC(fieldConfig.type as any);
4935
} catch (e) {
50-
const requestedFields = getFlatProjectionFromAST(info);
51-
if (requestedFields?.error || requestedFields?.errorCode || requestedFields?.status) {
36+
throw new Error('Cannot wrap mutation payload cause it returns non-object type.');
37+
}
38+
39+
type.addFields({
40+
status: 'PayloadStatusEnum!',
41+
query: 'Query!',
42+
error: 'String',
43+
errorCode: 'ErrorCodeEnum',
44+
});
45+
46+
const subResolve = fieldConfig.resolve || (() => ({}));
47+
const resolve = async (source, args, context, info) => {
48+
try {
49+
const subResult = await subResolve(source, args, context, info);
5250
return {
5351
query: {},
54-
status: PayloadStatusEnum.ERROR,
55-
error: e.message,
56-
errorCode: e instanceof PayloadError ? e.code : ErrorCodeEnum.OTHER_ERROR,
52+
status: PayloadStatusEnum.OK,
53+
...subResult,
5754
};
58-
} else {
59-
throw e;
55+
} catch (e) {
56+
const requestedFields = getFlatProjectionFromAST(info);
57+
if (requestedFields?.error || requestedFields?.errorCode || requestedFields?.status) {
58+
return {
59+
query: {},
60+
status: PayloadStatusEnum.ERROR,
61+
error: e.message,
62+
errorCode: e instanceof PayloadError ? e.code : ErrorCodeEnum.OTHER_ERROR,
63+
};
64+
} else {
65+
throw e;
66+
}
6067
}
61-
}
62-
};
68+
};
6369

64-
return {
65-
...fieldConfig,
66-
type,
67-
resolve,
70+
return {
71+
...fieldConfig,
72+
type,
73+
resolve,
74+
};
6875
};
6976
}
Lines changed: 19 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import queueClean from './queueClean';
2-
import queuePause from './queuePause';
3-
import queueResume from './queueResume';
1+
import { createQueueCleanFC } from './queueClean';
2+
import { createQueuePauseFC } from './queuePause';
3+
import { createQueueResumeFC } from './queueResume';
44

5-
import queueRemoveRepeatable from './queueRemoveRepeatable';
5+
import { createRemoveRepeatableFC } from './queueRemoveRepeatable';
66

77
import { createJobAddFC } from './jobAdd';
88
import { createJobDiscardFC } from './jobDiscard';
@@ -12,23 +12,27 @@ import { createJobRetryFC } from './jobRetry';
1212
import { createJobUpdateFC } from './jobUpdate';
1313
import { createJobLogAddFC } from './jobLogAdd';
1414

15+
import { createGenerateHelper } from './_helpers';
16+
1517
export function createMutationFields({
1618
schemaComposer,
1719
JobTC,
1820
JobStatusEnumTC,
1921
JobOptionsInputTC,
2022
}): any {
23+
const generateHelper = createGenerateHelper(schemaComposer);
24+
//TODO: пропустить через map это
2125
return {
22-
queueClean: queueClean({ schemaComposer, JobStatusEnumTC }),
23-
queuePause: queuePause({ schemaComposer }),
24-
queueResume: queueResume({ schemaComposer }),
25-
queueRemoveRepeatable: queueRemoveRepeatable({ schemaComposer }),
26-
jobAdd: createJobAddFC({ schemaComposer, JobTC, JobOptionsInputTC }),
27-
jobDiscard: createJobDiscardFC({ schemaComposer, JobStatusEnumTC }),
28-
jobPromote: createjobPromoteFC({ schemaComposer, JobStatusEnumTC }),
29-
jobRemove: createJobRremoveFC({ schemaComposer, JobTC }),
30-
jobRetry: createJobRetryFC({ schemaComposer, JobStatusEnumTC }),
31-
jobUpdate: createJobUpdateFC({ schemaComposer, JobTC }),
32-
jobLogAdd: createJobLogAddFC({ schemaComposer, JobStatusEnumTC }),
26+
queueClean: generateHelper(createQueueCleanFC({ schemaComposer, JobStatusEnumTC })),
27+
queuePause: generateHelper(createQueuePauseFC()),
28+
queueResume: generateHelper(createQueueResumeFC()),
29+
queueRemoveRepeatable: generateHelper(createRemoveRepeatableFC()),
30+
jobAdd: generateHelper(createJobAddFC({ JobTC, JobOptionsInputTC })),
31+
jobDiscard: generateHelper(createJobDiscardFC({ JobStatusEnumTC })),
32+
jobPromote: generateHelper(createjobPromoteFC({ JobStatusEnumTC })),
33+
jobRemove: generateHelper(createJobRremoveFC({ JobTC })),
34+
jobRetry: generateHelper(createJobRetryFC({ JobStatusEnumTC })),
35+
jobUpdate: generateHelper(createJobUpdateFC({ JobTC })),
36+
jobLogAdd: generateHelper(createJobLogAddFC({ JobStatusEnumTC })),
3337
};
3438
}

example/src/schema/mutation/jobAdd.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { generateMutation, getQueue } from './_helpers';
1+
import { getQueue } from './_helpers';
22

3-
export function createJobAddFC({ schemaComposer, JobTC, JobOptionsInputTC }) {
4-
return generateMutation(schemaComposer, {
3+
export function createJobAddFC({ JobTC, JobOptionsInputTC }) {
4+
return {
55
type: {
66
name: 'JobAddPayload',
77
fields: {
@@ -21,5 +21,5 @@ export function createJobAddFC({ schemaComposer, JobTC, JobOptionsInputTC }) {
2121
job,
2222
};
2323
},
24-
});
24+
};
2525
}

example/src/schema/mutation/jobDiscard.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { PayloadError } from '../../declarations/errors';
22
import { ErrorCodeEnum } from '../types/enums';
3-
import { generateMutation, getQueue } from './_helpers';
3+
import { getQueue } from './_helpers';
44

5-
export function createJobDiscardFC({ schemaComposer, JobStatusEnumTC }) {
6-
return generateMutation(schemaComposer, {
5+
export function createJobDiscardFC({ JobStatusEnumTC }) {
6+
return {
77
type: {
88
name: 'JobDiscardPayload',
99
fields: {
@@ -26,5 +26,5 @@ export function createJobDiscardFC({ schemaComposer, JobStatusEnumTC }) {
2626
state: await job.getState(),
2727
};
2828
},
29-
});
29+
};
3030
}

example/src/schema/mutation/jobLogAdd.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { PayloadError } from '../../declarations/errors';
22
import { ErrorCodeEnum } from '../types/enums';
3-
import { generateMutation, getQueue } from './_helpers';
3+
import { getQueue } from './_helpers';
44

5-
export function createJobLogAddFC({ schemaComposer, JobStatusEnumTC }) {
6-
return generateMutation(schemaComposer, {
5+
export function createJobLogAddFC({ JobStatusEnumTC }) {
6+
return {
77
type: {
88
name: 'JobLogAddPayload',
99
fields: {
@@ -28,5 +28,5 @@ export function createJobLogAddFC({ schemaComposer, JobStatusEnumTC }) {
2828
state: await job.getState(),
2929
};
3030
},
31-
});
31+
};
3232
}

example/src/schema/mutation/jobPromote.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { PayloadError } from '../../declarations/errors';
22
import { ErrorCodeEnum } from '../types/enums';
3-
import { generateMutation, getQueue } from './_helpers';
3+
import { getQueue } from './_helpers';
44

5-
export function createjobPromoteFC({ schemaComposer, JobStatusEnumTC }) {
6-
return generateMutation(schemaComposer, {
5+
export function createjobPromoteFC({ JobStatusEnumTC }) {
6+
return {
77
type: {
88
name: 'JobPromotePayload',
99
fields: {
@@ -26,5 +26,5 @@ export function createjobPromoteFC({ schemaComposer, JobStatusEnumTC }) {
2626
state: await job.getState(),
2727
};
2828
},
29-
});
29+
};
3030
}

example/src/schema/mutation/jobRemove.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { generateMutation, getQueue } from './_helpers';
1+
import { getQueue } from './_helpers';
22

3-
export function createJobRremoveFC({ schemaComposer, JobTC }) {
4-
return generateMutation(schemaComposer, {
3+
export function createJobRremoveFC({ JobTC }) {
4+
return {
55
type: {
66
name: 'JobRemovePayload',
77
fields: {
@@ -24,5 +24,5 @@ export function createJobRremoveFC({ schemaComposer, JobTC }) {
2424
job,
2525
};
2626
},
27-
});
27+
};
2828
}

example/src/schema/mutation/jobRetry.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { PayloadError } from '../../declarations/errors';
22
import { JobStatusEnum, ErrorCodeEnum } from '../types/enums';
3-
import { generateMutation, getQueue } from './_helpers';
3+
import { getQueue } from './_helpers';
44

5-
export function createJobRetryFC({ schemaComposer, JobStatusEnumTC }) {
6-
return generateMutation(schemaComposer, {
5+
export function createJobRetryFC({ JobStatusEnumTC }) {
6+
return {
77
type: {
88
name: 'JobRetryPayload',
99
fields: {
@@ -25,5 +25,5 @@ export function createJobRetryFC({ schemaComposer, JobStatusEnumTC }) {
2525
state: JobStatusEnum.ACTIVE,
2626
};
2727
},
28-
});
28+
};
2929
}

0 commit comments

Comments
 (0)