Skip to content

Commit 29269dd

Browse files
PeteMac88nodkz
authored andcommitted
Add possibility to pass name for connection edge type
1 parent d9df626 commit 29269dd

File tree

3 files changed

+20
-4
lines changed

3 files changed

+20
-4
lines changed

src/connectionResolver.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ export type ComposeWithConnectionOpts<TContext> = {
2121
countResolverName: string,
2222
sort: ConnectionSortMapOpts,
2323
defaultLimit?: ?number,
24+
edgeTypeName?: string,
2425
edgeFields?: ObjectTypeComposerFieldConfigMap<any, TContext>,
2526
};
2627

@@ -135,7 +136,12 @@ export function prepareConnectionResolver<TSource, TContext>(
135136
const defaultValue = firstField && sortEnumType.getField(firstField).value;
136137

137138
return tc.schemaComposer.createResolver({
138-
type: prepareConnectionType(tc, opts.connectionResolverName, opts.edgeFields),
139+
type: prepareConnectionType(
140+
tc,
141+
opts.connectionResolverName,
142+
opts.edgeTypeName,
143+
opts.edgeFields
144+
),
139145
name: opts.connectionResolverName || 'connection',
140146
kind: 'query',
141147
args: {

src/types/__tests__/connectionType-test.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,12 @@ describe('types/connectionType.js', () => {
4141
const t2 = prepareEdgeType(userTC);
4242
expect(t1).toEqual(t2);
4343
});
44+
45+
it('should return different type for same Type in ObjectTypeComposer if passed with different edgeType param', () => {
46+
const t1 = prepareEdgeType(userTC);
47+
const t2 = prepareEdgeType(userTC, 'UserEdge2');
48+
expect(t1).not.toEqual(t2);
49+
});
4450
});
4551

4652
describe('prepareConnectionType()', () => {

src/types/connectionType.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,10 @@ export function preparePageInfoType(
4949

5050
export function prepareEdgeType<TContext>(
5151
nodeTypeComposer: ObjectTypeComposer<any, TContext>,
52+
edgeTypeName?: string,
5253
edgeFields?: ObjectTypeComposerFieldConfigMap<any, TContext>
5354
): ObjectTypeComposer<any, TContext> {
54-
const name = `${nodeTypeComposer.getTypeName()}Edge`;
55+
const name = edgeTypeName || `${nodeTypeComposer.getTypeName()}Edge`;
5556

5657
if (nodeTypeComposer.schemaComposer.has(name)) {
5758
return nodeTypeComposer.schemaComposer.getOTC(name);
@@ -78,7 +79,8 @@ export function prepareEdgeType<TContext>(
7879

7980
export function prepareConnectionType<TContext>(
8081
typeComposer: ObjectTypeComposer<any, TContext>,
81-
resolverName: ?string,
82+
resolverName?: string,
83+
edgeTypeName?: string,
8284
edgeFields?: ObjectTypeComposerFieldConfigMap<any, TContext>
8385
): ObjectTypeComposer<any, TContext> {
8486
const name = `${typeComposer.getTypeName()}${upperFirst(resolverName || 'connection')}`;
@@ -101,7 +103,9 @@ export function prepareConnectionType<TContext>(
101103
},
102104
edges: {
103105
type: new NonNullComposer(
104-
new ListComposer(new NonNullComposer(prepareEdgeType(typeComposer, edgeFields)))
106+
new ListComposer(
107+
new NonNullComposer(prepareEdgeType(typeComposer, edgeTypeName, edgeFields))
108+
)
105109
),
106110
description: 'Information to aid in pagination.',
107111
},

0 commit comments

Comments
 (0)