Skip to content

Commit 003968a

Browse files
author
Boris
committed
feat: proxy pass compose opts arg.
1 parent b22598b commit 003968a

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

+323
-126
lines changed

example/src/schema/OptionsType.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { ObjectTypeComposer } from 'graphql-compose';
2+
3+
export type Options = {
4+
typePrefix: string;
5+
jobDataTC?: string | ObjectTypeComposer<any, any>;
6+
queue?: {
7+
name: string;
8+
prefix: string;
9+
};
10+
};

example/src/schema/index.ts

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,55 @@
1-
import { schemaComposer } from 'graphql-compose';
1+
import { Options } from './OptionsType';
2+
import {
3+
schemaComposer,
4+
SchemaComposer,
5+
ObjectTypeComposer,
6+
ObjectTypeComposerFieldConfigMapDefinition,
7+
} from 'graphql-compose';
28
import { createQueryFields } from './query';
39
import { createMutationFields } from './mutation';
10+
import { getQueueTC, getJobTC } from './types';
11+
12+
export function composeBull(
13+
opts: Options & { schemaComposer?: SchemaComposer<any> }
14+
): {
15+
QueueTC: ObjectTypeComposer<any, any>;
16+
JobTC: ObjectTypeComposer<any, any>;
17+
queryFields: ObjectTypeComposerFieldConfigMapDefinition<any, any>;
18+
mutationFields: ObjectTypeComposerFieldConfigMapDefinition<any, any>;
19+
} {
20+
const sc = opts?.schemaComposer || schemaComposer;
21+
22+
return {
23+
QueueTC: getQueueTC(sc, opts),
24+
JobTC: getJobTC(sc, opts),
25+
queryFields: createQueryFields(sc, opts),
26+
mutationFields: createMutationFields(sc, opts),
27+
};
28+
}
29+
30+
//---------------------------------------------------------
31+
32+
const jobDataTC = schemaComposer.createObjectTC({
33+
name: 'MyJobCounts',
34+
fields: {
35+
fieldA: 'String!',
36+
fieldB: 'String',
37+
fieldC: 'String',
38+
},
39+
});
40+
41+
const { queryFields, mutationFields } = composeBull({
42+
schemaComposer,
43+
typePrefix: 'Prefix',
44+
jobDataTC,
45+
});
446

547
schemaComposer.Query.addFields({
6-
...createQueryFields(schemaComposer),
48+
...queryFields,
749
});
850

951
schemaComposer.Mutation.addFields({
10-
...createMutationFields(schemaComposer),
52+
...mutationFields,
1153
});
1254

1355
export default schemaComposer.buildSchema();

example/src/schema/mutation/helpers/wrapMutationFC.ts

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { Options } from './../../OptionsType';
12
import {
23
SchemaComposer,
34
getFlatProjectionFromAST,
@@ -16,7 +17,10 @@ type Generator = (
1617
fieldConfig: ObjectTypeComposerFieldConfigAsObjectDefinition<any, any>
1718
) => ObjectTypeComposerFieldConfigAsObjectDefinition<any, any>;
1819

19-
export function createGenerateHelper(schemaComposer: SchemaComposer<any>): Generator {
20+
export function createGenerateHelper(
21+
schemaComposer: SchemaComposer<any>,
22+
opts: Options
23+
): Generator {
2024
return function generateMutation(
2125
fieldConfig: ObjectTypeComposerFieldConfigAsObjectDefinition<any, any>
2226
): ObjectTypeComposerFieldConfigAsObjectDefinition<any, any> {
@@ -27,10 +31,10 @@ export function createGenerateHelper(schemaComposer: SchemaComposer<any>): Gener
2731
}
2832

2933
fieldConfig.type.addFields({
30-
status: getMutationStatusEnumTC(schemaComposer),
34+
status: getMutationStatusEnumTC(schemaComposer, opts),
3135
query: 'Query!',
3236
error: 'String',
33-
errorCode: getMutationErrorCodeEnumTC(schemaComposer),
37+
errorCode: getMutationErrorCodeEnumTC(schemaComposer, opts),
3438
});
3539

3640
const subResolve = fieldConfig.resolve || (() => ({}));
@@ -61,8 +65,10 @@ export function createGenerateHelper(schemaComposer: SchemaComposer<any>): Gener
6165
};
6266
}
6367

64-
function getMutationErrorCodeEnumTC(sc: SchemaComposer<any>) {
65-
return sc.getOrCreateETC('MutationErrorCodeEnum', (etc) => {
68+
function getMutationErrorCodeEnumTC(sc: SchemaComposer<any>, opts: Options) {
69+
const { typePrefix } = opts;
70+
71+
return sc.getOrCreateETC(`${typePrefix}MutationErrorCodeEnum`, (etc) => {
6672
etc.addFields({
6773
QUEUE_NOT_FOUND: { value: ErrorCodeEnum.QUEUE_NOT_FOUND },
6874
JOB_NOT_FOUND: { value: ErrorCodeEnum.JOB_NOT_FOUND },
@@ -71,8 +77,10 @@ function getMutationErrorCodeEnumTC(sc: SchemaComposer<any>) {
7177
});
7278
}
7379

74-
function getMutationStatusEnumTC(sc: SchemaComposer<any>) {
75-
return sc.getOrCreateETC('MutationStatusEnum', (etc) => {
80+
function getMutationStatusEnumTC(sc: SchemaComposer<any>, opts: Options) {
81+
const { typePrefix } = opts;
82+
83+
return sc.getOrCreateETC(`${typePrefix}MutationStatusEnum`, (etc) => {
7684
etc.addFields({
7785
OK: { value: MutationStatusEnum.OK },
7886
ERROR: { value: MutationStatusEnum.ERROR },

example/src/schema/mutation/index.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,18 @@ import { createJobUpdateFC } from './jobUpdate';
1818
import { createJobLogAddFC } from './jobLogAdd';
1919

2020
import { createGenerateHelper } from './helpers/wrapMutationFC';
21+
import { Options } from '../OptionsType';
2122

22-
export function createMutationFields(schemaComposer: SchemaComposer<any>): any {
23-
const generateHelper = createGenerateHelper(schemaComposer);
23+
export function createMutationFields(schemaComposer: SchemaComposer<any>, opts: Options): any {
24+
const generateHelper = createGenerateHelper(schemaComposer, opts);
2425

2526
function generateWrappedFC(
26-
createFC: (sc: SchemaComposer<any>) => ObjectTypeComposerFieldConfigAsObjectDefinition<any, any>
27+
createFC: (
28+
sc: SchemaComposer<any>,
29+
opts: Options
30+
) => ObjectTypeComposerFieldConfigAsObjectDefinition<any, any>
2731
) {
28-
return generateHelper(createFC(schemaComposer));
32+
return generateHelper(createFC(schemaComposer, opts));
2933
}
3034

3135
return {

example/src/schema/mutation/jobAdd.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
import { SchemaComposer, ObjectTypeComposerFieldConfigAsObjectDefinition } from 'graphql-compose';
22
import { getJobTC } from '../types/job/Job';
33
import { findQueue } from './helpers/queueFind';
4+
import { Options } from '../OptionsType';
45

56
export function createJobAddFC(
6-
sc: SchemaComposer<any>
7+
sc: SchemaComposer<any>,
8+
opts: Options
79
): ObjectTypeComposerFieldConfigAsObjectDefinition<any, any> {
10+
const { typePrefix } = opts;
11+
812
return {
913
type: sc.createObjectTC({
10-
name: 'JobAddPayload',
14+
name: `${typePrefix}JobAddPayload`,
1115
fields: {
12-
job: getJobTC(sc),
16+
job: getJobTC(sc, opts),
1317
},
1418
}),
1519
args: {
@@ -21,7 +25,7 @@ export function createJobAddFC(
2125
jobName: 'String!',
2226
data: 'JSON!',
2327
options: sc.createInputTC({
24-
name: 'JobOptionsInput',
28+
name: `${typePrefix}JobOptionsInput`,
2529
fields: {
2630
priority: 'Int',
2731
delay: 'Int',

example/src/schema/mutation/jobAddBulk.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
import { findQueue } from './helpers/queueFind';
22
import { SchemaComposer, ObjectTypeComposerFieldConfigAsObjectDefinition } from 'graphql-compose';
33
import { getJobTC } from '../types/job/Job';
4+
import { Options } from '../OptionsType';
45

56
export function createJobAddBulkFC(
6-
sc: SchemaComposer<any>
7+
sc: SchemaComposer<any>,
8+
opts: Options
79
): ObjectTypeComposerFieldConfigAsObjectDefinition<any, any> {
10+
const { typePrefix } = opts;
11+
812
return {
913
type: sc.createObjectTC({
10-
name: 'JobAddBulkPayload',
14+
name: `${typePrefix}JobAddBulkPayload`,
1115
fields: {
12-
jobs: getJobTC(sc).getTypePlural(),
16+
jobs: getJobTC(sc, opts).getTypePlural(),
1317
},
1418
}),
1519
args: {
@@ -20,12 +24,12 @@ export function createJobAddBulkFC(
2024
queueName: 'String!',
2125
jobs: sc
2226
.createInputTC({
23-
name: 'JobAddInputBulk',
27+
name: `${typePrefix}JobAddInputBulk`,
2428
fields: {
2529
name: 'String!',
2630
data: 'JSON!',
2731
options: sc.createInputTC({
28-
name: 'JobOptionsInputBulk',
32+
name: `${typePrefix}JobOptionsInputBulk`,
2933
fields: {
3034
priority: 'Int',
3135
delay: 'Int',

example/src/schema/mutation/jobAddCron.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
import { findQueue } from './helpers/queueFind';
22
import { SchemaComposer, ObjectTypeComposerFieldConfigAsObjectDefinition } from 'graphql-compose';
33
import { getJobTC } from '../types/job/Job';
4+
import { Options } from '../OptionsType';
45

56
export function createJobAddCronFC(
6-
sc: SchemaComposer<any>
7+
sc: SchemaComposer<any>,
8+
opts: Options
79
): ObjectTypeComposerFieldConfigAsObjectDefinition<any, any> {
10+
const { typePrefix } = opts;
11+
812
return {
913
type: sc.createObjectTC({
10-
name: 'JobAddCronPayload',
14+
name: `${typePrefix}JobAddCronPayload`,
1115
fields: {
12-
job: getJobTC(sc),
16+
job: getJobTC(sc, opts),
1317
},
1418
}),
1519
args: {
@@ -21,7 +25,7 @@ export function createJobAddCronFC(
2125
jobName: 'String!',
2226
data: 'JSON!',
2327
options: sc.createInputTC({
24-
name: 'JobOptionsInputCron',
28+
name: `${typePrefix}JobOptionsInputCron`,
2529
fields: {
2630
priority: 'Int',
2731
delay: 'Int',
@@ -35,7 +39,7 @@ export function createJobAddCronFC(
3539
stackTraceLimit: 'Int',
3640
repeat: sc
3741
.createInputTC({
38-
name: 'JobOptionsInputRepeatCron',
42+
name: `${typePrefix}JobOptionsInputRepeatCron`,
3943
fields: {
4044
tz: 'String',
4145
endDate: 'Date',

example/src/schema/mutation/jobAddEvery.ts

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,19 @@
11
import { findQueue } from './helpers/queueFind';
22
import { SchemaComposer, ObjectTypeComposerFieldConfigAsObjectDefinition } from 'graphql-compose';
33
import { getJobTC } from '../types/job/Job';
4+
import { Options } from '../OptionsType';
45

56
export function createJobAddEveryFC(
6-
sc: SchemaComposer<any>
7+
sc: SchemaComposer<any>,
8+
opts: Options
79
): ObjectTypeComposerFieldConfigAsObjectDefinition<any, any> {
10+
const { typePrefix } = opts;
11+
812
return {
913
type: sc.createObjectTC({
10-
name: 'JobAddEveryPayload',
14+
name: `${typePrefix}JobAddEveryPayload`,
1115
fields: {
12-
job: getJobTC(sc),
16+
job: getJobTC(sc, opts),
1317
},
1418
}),
1519
args: {
@@ -21,7 +25,7 @@ export function createJobAddEveryFC(
2125
jobName: 'String!',
2226
data: 'JSON!',
2327
options: sc.createInputTC({
24-
name: 'JobOptionsInputEvery',
28+
name: `${typePrefix}JobOptionsInputEvery`,
2529
fields: {
2630
priority: 'Int',
2731
delay: 'Int',
@@ -35,7 +39,7 @@ export function createJobAddEveryFC(
3539
stackTraceLimit: 'Int',
3640
repeat: sc
3741
.createInputTC({
38-
name: 'JobOptionsInputRepeatEvery',
42+
name: `${typePrefix}JobOptionsInputRepeatEvery`,
3943
fields: {
4044
tz: 'String',
4145
endDate: 'Date',

example/src/schema/mutation/jobDiscard.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,20 @@ import { SchemaComposer, ObjectTypeComposerFieldConfigAsObjectDefinition } from
22
import { MutationError, ErrorCodeEnum } from './helpers/Error';
33
import { getJobStatusEnumTC } from '../types';
44
import { findQueue } from './helpers/queueFind';
5+
import { Options } from '../OptionsType';
56

67
export function createJobDiscardFC(
7-
sc: SchemaComposer<any>
8+
sc: SchemaComposer<any>,
9+
opts: Options
810
): ObjectTypeComposerFieldConfigAsObjectDefinition<any, any> {
11+
const { typePrefix } = opts;
12+
913
return {
1014
type: sc.createObjectTC({
11-
name: 'JobDiscardPayload',
15+
name: `${typePrefix}JobDiscardPayload`,
1216
fields: {
1317
id: 'String',
14-
state: getJobStatusEnumTC(sc),
18+
state: getJobStatusEnumTC(sc, opts),
1519
},
1620
}),
1721
args: {

example/src/schema/mutation/jobLogAdd.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,20 @@ import { SchemaComposer, ObjectTypeComposerFieldConfigAsObjectDefinition } from
22
import { MutationError, ErrorCodeEnum } from './helpers/Error';
33
import { getJobStatusEnumTC } from '../types';
44
import { findQueue } from './helpers/queueFind';
5+
import { Options } from '../OptionsType';
56

67
export function createJobLogAddFC(
7-
sc: SchemaComposer<any>
8+
sc: SchemaComposer<any>,
9+
opts: Options
810
): ObjectTypeComposerFieldConfigAsObjectDefinition<any, any> {
11+
const { typePrefix } = opts;
12+
913
return {
1014
type: sc.createObjectTC({
11-
name: 'JobLogAddPayload',
15+
name: `${typePrefix}JobLogAddPayload`,
1216
fields: {
1317
id: 'String',
14-
state: getJobStatusEnumTC(sc),
18+
state: getJobStatusEnumTC(sc, opts),
1519
},
1620
}),
1721
args: {

0 commit comments

Comments
 (0)