Skip to content

Commit 48cb33d

Browse files
michaelbeaumontPeteMac88
authored andcommitted
Add customization options to connection resolver
1 parent f1c2bb1 commit 48cb33d

File tree

2 files changed

+32
-10
lines changed

2 files changed

+32
-10
lines changed

src/resolvers/connection.d.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Resolver, ObjectTypeComposer } from 'graphql-compose';
1+
import { Resolver, ObjectTypeComposer, ObjectTypeComposerFieldConfigMap } from 'graphql-compose';
22
// import { ConnectionSortMapOpts } from 'graphql-compose-connection';
33
import { Model } from 'mongoose';
44
import { MongoId } from '../types/mongoid';
@@ -7,12 +7,17 @@ import { FilterHelperArgs, SortHelperArgs } from './helpers';
77

88
// @ts-todo The ConnectionSortMapOpts is not available yet since graphql-compose-connection doesn't have types for now,
99
// fallback to a simple object.
10-
export type ConnectionSortMapOpts = { [opt: string]: any };
10+
export type ConnectionOpts<TContext> = { [opt: string]: any } & {
11+
connectionResolverName?: string,
12+
findResolverName?: string;
13+
countResolverName?: string;
14+
edgeFields?: ObjectTypeComposerFieldConfigMap<any, TContext>;
15+
};
1116

1217
export default function connection(
1318
model: Model<any>,
1419
tc: ObjectTypeComposer<any>,
15-
opts?: ConnectionSortMapOpts,
20+
opts?: ConnectionOpts<any>,
1621
): Resolver<any, any> | undefined;
1722

1823
export function prepareCursorQuery(

src/resolvers/connection.js

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,28 @@
33

44
import type { MongooseDocument } from 'mongoose';
55
import type { ConnectionSortMapOpts as _ConnectionSortMapOpts } from 'graphql-compose-connection';
6-
import type { Resolver, ObjectTypeComposer } from 'graphql-compose';
6+
import type {
7+
Resolver,
8+
ObjectTypeComposer,
9+
ObjectTypeComposerFieldConfigMap,
10+
} from 'graphql-compose';
711
import {
812
getUniqueIndexes,
913
extendByReversedIndexes,
1014
type IndexT,
1115
} from '../utils/getIndexesFromModel';
1216

13-
export type ConnectionSortMapOpts = _ConnectionSortMapOpts;
17+
export type ConnectionOpts<TContext> = _ConnectionSortMapOpts & {
18+
edgeFields?: ObjectTypeComposerFieldConfigMap<any, TContext>,
19+
connectionResolverName?: string,
20+
findResolverName?: string,
21+
countResolverName?: string,
22+
};
1423

1524
export default function connection<TSource: MongooseDocument, TContext>(
1625
model: Class<TSource>, // === MongooseModel
1726
tc: ObjectTypeComposer<TSource, TContext>,
18-
opts?: ConnectionSortMapOpts
27+
opts: ConnectionOpts<TContext> = {}
1928
): ?Resolver<TSource, TContext> {
2029
try {
2130
require.resolve('graphql-compose-connection');
@@ -56,14 +65,22 @@ export default function connection<TSource: MongooseDocument, TContext>(
5665
},
5766
};
5867
});
59-
68+
const {
69+
connectionResolverName = 'connection',
70+
findResolverName = 'findMany',
71+
countResolverName = 'count',
72+
edgeFields,
73+
...sortOptions
74+
} = opts
6075
return prepareConnectionResolver(tc, {
61-
findResolverName: 'findMany',
62-
countResolverName: 'count',
76+
connectionResolverName,
77+
findResolverName,
78+
countResolverName,
6379
sort: {
6480
...sortConfigs,
65-
...opts,
81+
...sortOptions,
6682
},
83+
edgeFields,
6784
});
6885
}
6986

0 commit comments

Comments
 (0)