Skip to content

Commit 8c4ce64

Browse files
committed
Throw error if provided incorrect type for resolvers' arguments
1 parent f5fb6de commit 8c4ce64

File tree

12 files changed

+135
-6
lines changed

12 files changed

+135
-6
lines changed

src/resolvers/count.js

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,11 @@
33

44
import type {
55
MongooseModelT,
6-
GraphQLObjectType,
76
ExtendedResolveParams,
87
genResolverOpts,
98
} from '../definition';
109
import Resolver from '../../../graphql-compose/src/resolver/resolver';
11-
import { GraphQLInt } from 'graphql';
10+
import { GraphQLInt, GraphQLObjectType } from 'graphql';
1211

1312
import { filterHelperArgs, filterHelper } from './helpers/filter';
1413

@@ -18,6 +17,16 @@ export default function count(
1817
gqType: GraphQLObjectType,
1918
opts?: genResolverOpts,
2019
): Resolver {
20+
if (!model || !model.modelName || !model.schema) {
21+
throw new Error(
22+
'First arg for Resolver count() should be instance of Mongoose Model.'
23+
);
24+
}
25+
26+
if (!(gqType instanceof GraphQLObjectType)) {
27+
throw new Error('Second arg for Resolver count() should be instance of GraphQLObjectType.');
28+
}
29+
2130
return new Resolver({
2231
outputType: GraphQLInt,
2332
name: 'count',

src/resolvers/createOne.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,16 @@ export default function createOne(
1717
gqType: GraphQLObjectType,
1818
opts?: genResolverOpts,
1919
): Resolver {
20+
if (!model || !model.modelName || !model.schema) {
21+
throw new Error(
22+
'First arg for Resolver createOne() should be instance of Mongoose Model.'
23+
);
24+
}
25+
26+
if (!(gqType instanceof GraphQLObjectType)) {
27+
throw new Error('Second arg for Resolver createOne() should be instance of GraphQLObjectType.');
28+
}
29+
2030
const resolver = new Resolver({
2131
name: 'createOne',
2232
kind: 'mutation',

src/resolvers/findById.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@
22

33
import type {
44
MongooseModelT,
5-
GraphQLObjectType,
65
ExtendedResolveParams,
76
genResolverOpts,
87
} from '../definition';
98
import Resolver from '../../../graphql-compose/src/resolver/resolver';
109

1110
import {
1211
GraphQLNonNull,
12+
GraphQLObjectType,
1313
} from 'graphql';
1414
import GraphQLMongoID from '../types/mongoid';
1515

@@ -20,6 +20,16 @@ export default function findById(
2020
gqType: GraphQLObjectType,
2121
opts?: genResolverOpts // eslint-disable-line no-unused-vars
2222
): Resolver {
23+
if (!model || !model.modelName || !model.schema) {
24+
throw new Error(
25+
'First arg for Resolver findById() should be instance of Mongoose Model.'
26+
);
27+
}
28+
29+
if (!(gqType instanceof GraphQLObjectType)) {
30+
throw new Error('Second arg for Resolver findById() should be instance of GraphQLObjectType.');
31+
}
32+
2333
return new Resolver({
2434
outputType: gqType,
2535
name: 'findById',

src/resolvers/findByIds.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import type {
44
MongooseModelT,
5-
GraphQLObjectType,
65
ExtendedResolveParams,
76
genResolverOpts,
87
} from '../definition';
@@ -12,6 +11,7 @@ import mongoose from 'mongoose';
1211
import {
1312
GraphQLNonNull,
1413
GraphQLList,
14+
GraphQLObjectType,
1515
} from 'graphql';
1616
import GraphQLMongoID from '../types/mongoid';
1717

@@ -24,6 +24,16 @@ export default function findByIds(
2424
gqType: GraphQLObjectType,
2525
opts?: genResolverOpts
2626
): Resolver {
27+
if (!model || !model.modelName || !model.schema) {
28+
throw new Error(
29+
'First arg for Resolver findByIds() should be instance of Mongoose Model.'
30+
);
31+
}
32+
33+
if (!(gqType instanceof GraphQLObjectType)) {
34+
throw new Error('Second arg for Resolver findByIds() should be instance of GraphQLObjectType.');
35+
}
36+
2737
return new Resolver({
2838
outputType: new GraphQLList(gqType),
2939
name: 'findByIds',

src/resolvers/findMany.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33

44
import type {
55
MongooseModelT,
6-
GraphQLObjectType,
76
ExtendedResolveParams,
87
genResolverOpts,
98
} from '../definition';
109
import Resolver from '../../../graphql-compose/src/resolver/resolver';
1110
import {
1211
GraphQLList,
12+
GraphQLObjectType,
1313
} from 'graphql';
1414

1515
import { skipHelperArgs, skipHelper } from './helpers/skip';
@@ -24,6 +24,16 @@ export default function findMany(
2424
gqType: GraphQLObjectType,
2525
opts?: genResolverOpts,
2626
): Resolver {
27+
if (!model || !model.modelName || !model.schema) {
28+
throw new Error(
29+
'First arg for Resolver findMany() should be instance of Mongoose Model.'
30+
);
31+
}
32+
33+
if (!(gqType instanceof GraphQLObjectType)) {
34+
throw new Error('Second arg for Resolver findMany() should be instance of GraphQLObjectType.');
35+
}
36+
2737
return new Resolver({
2838
outputType: new GraphQLList(gqType),
2939
name: 'findMany',

src/resolvers/findOne.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ import { skipHelperArgs, skipHelper } from './helpers/skip';
77
import { filterHelperArgs, filterHelper } from './helpers/filter';
88
import { sortHelperArgs, sortHelper } from './helpers/sort';
99
import { projectionHelper } from './helpers/projection';
10+
import { GraphQLObjectType } from 'graphql';
1011

1112
import type {
1213
MongooseModelT,
13-
GraphQLObjectType,
1414
ExtendedResolveParams,
1515
genResolverOpts,
1616
} from '../definition';
@@ -21,6 +21,16 @@ export default function findOne(
2121
gqType: GraphQLObjectType,
2222
opts?: genResolverOpts,
2323
): Resolver {
24+
if (!model || !model.modelName || !model.schema) {
25+
throw new Error(
26+
'First arg for Resolver findOne() should be instance of Mongoose Model.'
27+
);
28+
}
29+
30+
if (!(gqType instanceof GraphQLObjectType)) {
31+
throw new Error('Second arg for Resolver findOne() should be instance of GraphQLObjectType.');
32+
}
33+
2434
return new Resolver({
2535
outputType: gqType,
2636
name: 'findOne',

src/resolvers/removeById.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,18 @@ export default function removeById(
2020
gqType: GraphQLObjectType,
2121
opts?: genResolverOpts, // eslint-disable-line no-unused-vars
2222
): Resolver {
23+
if (!model || !model.modelName || !model.schema) {
24+
throw new Error(
25+
'First arg for Resolver removeById() should be instance of Mongoose Model.'
26+
);
27+
}
28+
29+
if (!(gqType instanceof GraphQLObjectType)) {
30+
throw new Error(
31+
'Second arg for Resolver removeById() should be instance of GraphQLObjectType.'
32+
);
33+
}
34+
2335
const resolver = new Resolver({
2436
name: 'removeById',
2537
kind: 'mutation',

src/resolvers/removeMany.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,18 @@ export default function removeMany(
1616
gqType: GraphQLObjectType,
1717
opts?: genResolverOpts,
1818
): Resolver {
19+
if (!model || !model.modelName || !model.schema) {
20+
throw new Error(
21+
'First arg for Resolver removeMany() should be instance of Mongoose Model.'
22+
);
23+
}
24+
25+
if (!(gqType instanceof GraphQLObjectType)) {
26+
throw new Error(
27+
'Second arg for Resolver removeMany() should be instance of GraphQLObjectType.'
28+
);
29+
}
30+
1931
const resolver = new Resolver({
2032
name: 'removeMany',
2133
kind: 'mutation',

src/resolvers/removeOne.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,18 @@ export default function removeOne(
2121
gqType: GraphQLObjectType,
2222
opts?: genResolverOpts,
2323
): Resolver {
24+
if (!model || !model.modelName || !model.schema) {
25+
throw new Error(
26+
'First arg for Resolver removeOne() should be instance of Mongoose Model.'
27+
);
28+
}
29+
30+
if (!(gqType instanceof GraphQLObjectType)) {
31+
throw new Error(
32+
'Second arg for Resolver removeOne() should be instance of GraphQLObjectType.'
33+
);
34+
}
35+
2436
const resolver = new Resolver({
2537
name: 'removeOne',
2638
kind: 'mutation',

src/resolvers/updateById.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,18 @@ export default function updateById(
1818
gqType: GraphQLObjectType,
1919
opts?: genResolverOpts,
2020
): Resolver {
21+
if (!model || !model.modelName || !model.schema) {
22+
throw new Error(
23+
'First arg for Resolver updateById() should be instance of Mongoose Model.'
24+
);
25+
}
26+
27+
if (!(gqType instanceof GraphQLObjectType)) {
28+
throw new Error(
29+
'Second arg for Resolver updateById() should be instance of GraphQLObjectType.'
30+
);
31+
}
32+
2133
const findByIdResolver = findById(model, gqType);
2234

2335
const resolver = new Resolver({

0 commit comments

Comments
 (0)