Skip to content

Commit

Permalink
feat(Resolver): make addFilterArg asynchronous
Browse files Browse the repository at this point in the history
```js
someResolver.addFilterArg({
    name: 'isActive',
    type: 'Boolean!',
    description: 'Active status filter',
    query: async (query, value, resolveParams) => {
        const checkPermissions = await Promise.resolve('accessGranted');
        if (checkPermissions) {
          query.isActive = value;
        }
    },
});
```

Closes #31
  • Loading branch information
nodkz committed Jul 26, 2018
1 parent 0b03a6f commit fe60a99
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 5 deletions.
4 changes: 2 additions & 2 deletions src/Resolver.js
Expand Up @@ -448,13 +448,13 @@ export class Resolver<TSource, TContext> {
const resolveNext = resolver.getResolve();
const query = opts.query;
if (query && isFunction(query)) {
resolver.setResolve(resolveParams => {
resolver.setResolve(async resolveParams => {
const value = objectPath.get(resolveParams, ['args', 'filter', opts.name]);
if (value !== null && value !== undefined) {
if (!resolveParams.rawQuery) {
resolveParams.rawQuery = {}; // eslint-disable-line
}
query(resolveParams.rawQuery, value, resolveParams);
await query(resolveParams.rawQuery, value, resolveParams);
}
return resolveNext(resolveParams);
});
Expand Down
8 changes: 5 additions & 3 deletions src/__tests__/Resolver-test.js
Expand Up @@ -548,7 +548,7 @@ describe('Resolver', () => {
expect(ageType.ofType).toBe(GraphQLInt);
});

it('should prepare resolveParams.rawQuery when `resolve` called', () => {
it('should prepare resolveParams.rawQuery when `resolve` called', async () => {
let rpSnap;
const resolve = resolver.resolve;
resolver.resolve = rp => {
Expand All @@ -571,13 +571,14 @@ describe('Resolver', () => {
name: 'isActive',
type: 'Boolean!',
description: 'Active status filter',
query: (query, value, resolveParams) => {
query: async (query, value, resolveParams) => {
query.checkPermissions = await Promise.resolve('accessGranted'); // eslint-disable-line no-param-reassign
query.isActive = value; // eslint-disable-line no-param-reassign
},
filterTypeNameFallback: 'FilterOtherUniqueNameInput',
});

newResolver.resolve({
await newResolver.resolve({
args: { filter: { age: 15, isActive: false } },
someKey: 16,
});
Expand All @@ -586,6 +587,7 @@ describe('Resolver', () => {
age: { $gt: 15 },
isActive: false,
someKey: 16,
checkPermissions: 'accessGranted',
});
});

Expand Down

0 comments on commit fe60a99

Please sign in to comment.