Skip to content

Commit

Permalink
Add possibility to pass name for connection edge type
Browse files Browse the repository at this point in the history
  • Loading branch information
PeteMac88 authored and nodkz committed May 14, 2020
1 parent d9df626 commit 29269dd
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 4 deletions.
8 changes: 7 additions & 1 deletion src/connectionResolver.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ export type ComposeWithConnectionOpts<TContext> = {
countResolverName: string,
sort: ConnectionSortMapOpts,
defaultLimit?: ?number,
edgeTypeName?: string,
edgeFields?: ObjectTypeComposerFieldConfigMap<any, TContext>,
};

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

return tc.schemaComposer.createResolver({
type: prepareConnectionType(tc, opts.connectionResolverName, opts.edgeFields),
type: prepareConnectionType(
tc,
opts.connectionResolverName,
opts.edgeTypeName,
opts.edgeFields
),
name: opts.connectionResolverName || 'connection',
kind: 'query',
args: {
Expand Down
6 changes: 6 additions & 0 deletions src/types/__tests__/connectionType-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,12 @@ describe('types/connectionType.js', () => {
const t2 = prepareEdgeType(userTC);
expect(t1).toEqual(t2);
});

it('should return different type for same Type in ObjectTypeComposer if passed with different edgeType param', () => {
const t1 = prepareEdgeType(userTC);
const t2 = prepareEdgeType(userTC, 'UserEdge2');
expect(t1).not.toEqual(t2);
});
});

describe('prepareConnectionType()', () => {
Expand Down
10 changes: 7 additions & 3 deletions src/types/connectionType.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,10 @@ export function preparePageInfoType(

export function prepareEdgeType<TContext>(
nodeTypeComposer: ObjectTypeComposer<any, TContext>,
edgeTypeName?: string,
edgeFields?: ObjectTypeComposerFieldConfigMap<any, TContext>
): ObjectTypeComposer<any, TContext> {
const name = `${nodeTypeComposer.getTypeName()}Edge`;
const name = edgeTypeName || `${nodeTypeComposer.getTypeName()}Edge`;

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

export function prepareConnectionType<TContext>(
typeComposer: ObjectTypeComposer<any, TContext>,
resolverName: ?string,
resolverName?: string,
edgeTypeName?: string,
edgeFields?: ObjectTypeComposerFieldConfigMap<any, TContext>
): ObjectTypeComposer<any, TContext> {
const name = `${typeComposer.getTypeName()}${upperFirst(resolverName || 'connection')}`;
Expand All @@ -101,7 +103,9 @@ export function prepareConnectionType<TContext>(
},
edges: {
type: new NonNullComposer(
new ListComposer(new NonNullComposer(prepareEdgeType(typeComposer, edgeFields)))
new ListComposer(
new NonNullComposer(prepareEdgeType(typeComposer, edgeTypeName, edgeFields))
)
),
description: 'Information to aid in pagination.',
},
Expand Down

0 comments on commit 29269dd

Please sign in to comment.