1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | var graphql_1 = require("graphql");
|
4 | function getExistsTypes(queryType) {
|
5 | var types = getTypesAndWhere(queryType);
|
6 | return types
|
7 | .map(function (_a) {
|
8 | var type = _a.type, where = _a.where;
|
9 | return " " + type + ": (where?: " + where + ") => Promise<boolean>";
|
10 | })
|
11 | .join('\n');
|
12 | }
|
13 | exports.getExistsTypes = getExistsTypes;
|
14 | function getExistsFlowTypes(queryType) {
|
15 | var types = getTypesAndWhere(queryType);
|
16 | return types
|
17 | .map(function (_a) {
|
18 | var type = _a.type, where = _a.where;
|
19 | return type + "(where?: " + where + "): Promise<boolean>;";
|
20 | })
|
21 | .join('\n');
|
22 | }
|
23 | exports.getExistsFlowTypes = getExistsFlowTypes;
|
24 | function getTypesAndWhere(queryType) {
|
25 | var fields = queryType.getFields();
|
26 | var listFields = Object.keys(fields).reduce(function (acc, field) {
|
27 | var deepType = getDeepListType(fields[field]);
|
28 | if (deepType) {
|
29 | acc.push({ field: fields[field], deepType: deepType });
|
30 | }
|
31 | return acc;
|
32 | }, []);
|
33 | return listFields.map(function (_a) {
|
34 | var field = _a.field, deepType = _a.deepType;
|
35 | return ({
|
36 | type: deepType.name,
|
37 | pluralFieldName: field.name,
|
38 | where: getWhere(field),
|
39 | });
|
40 | });
|
41 | }
|
42 | exports.getTypesAndWhere = getTypesAndWhere;
|
43 | function getWhere(field) {
|
44 | return field.args.find(function (a) { return a.name === 'where'; })
|
45 | .type.name;
|
46 | }
|
47 | exports.getWhere = getWhere;
|
48 | function getDeepListType(field) {
|
49 | var type = field.type;
|
50 | if (graphql_1.isListType(type)) {
|
51 | return type.ofType;
|
52 | }
|
53 | if (graphql_1.isWrappingType(type) && graphql_1.isListType(type.ofType)) {
|
54 | return type.ofType.ofType;
|
55 | }
|
56 | return null;
|
57 | }
|
58 | exports.getDeepListType = getDeepListType;
|
59 |
|
\ | No newline at end of file |