@subsquid/openreader 2.1.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/ir/args.d.ts +1 -1
- package/lib/ir/args.d.ts.map +1 -1
- package/lib/ir/connection.d.ts +3 -4
- package/lib/ir/connection.d.ts.map +1 -1
- package/lib/ir/connection.js.map +1 -1
- package/lib/ir/fields.d.ts +6 -2
- package/lib/ir/fields.d.ts.map +1 -1
- package/lib/ir/fields.js +15 -0
- package/lib/ir/fields.js.map +1 -1
- package/lib/limit.size.d.ts +4 -4
- package/lib/limit.size.d.ts.map +1 -1
- package/lib/limit.size.js +51 -20
- package/lib/limit.size.js.map +1 -1
- package/lib/main.js +0 -9
- package/lib/main.js.map +1 -1
- package/lib/model.d.ts +3 -2
- package/lib/model.d.ts.map +1 -1
- package/lib/model.schema.d.ts +2 -2
- package/lib/model.schema.d.ts.map +1 -1
- package/lib/model.schema.js +8 -3
- package/lib/model.schema.js.map +1 -1
- package/lib/model.tools.d.ts +6 -1
- package/lib/model.tools.d.ts.map +1 -1
- package/lib/model.tools.js +111 -8
- package/lib/model.tools.js.map +1 -1
- package/lib/opencrud/orderBy.d.ts +2 -2
- package/lib/opencrud/orderBy.d.ts.map +1 -1
- package/lib/opencrud/orderBy.js +13 -17
- package/lib/opencrud/orderBy.js.map +1 -1
- package/lib/opencrud/schema.d.ts +4 -4
- package/lib/opencrud/schema.d.ts.map +1 -1
- package/lib/opencrud/schema.js +56 -62
- package/lib/opencrud/schema.js.map +1 -1
- package/lib/opencrud/tree.d.ts +9 -7
- package/lib/opencrud/tree.d.ts.map +1 -1
- package/lib/opencrud/tree.js +32 -14
- package/lib/opencrud/tree.js.map +1 -1
- package/lib/scalars/BigDecimal.d.ts +3 -0
- package/lib/scalars/BigDecimal.d.ts.map +1 -0
- package/lib/scalars/BigDecimal.js +38 -0
- package/lib/scalars/BigDecimal.js.map +1 -0
- package/lib/scalars/index.d.ts +1 -0
- package/lib/scalars/index.d.ts.map +1 -1
- package/lib/scalars/index.js +2 -0
- package/lib/scalars/index.js.map +1 -1
- package/lib/server.d.ts +4 -2
- package/lib/server.d.ts.map +1 -1
- package/lib/server.js +4 -2
- package/lib/server.js.map +1 -1
- package/lib/sql/cursor.d.ts.map +1 -1
- package/lib/sql/cursor.js +4 -2
- package/lib/sql/cursor.js.map +1 -1
- package/lib/sql/mapping.d.ts +3 -1
- package/lib/sql/mapping.d.ts.map +1 -1
- package/lib/sql/mapping.js +16 -1
- package/lib/sql/mapping.js.map +1 -1
- package/lib/sql/printer.d.ts +29 -11
- package/lib/sql/printer.d.ts.map +1 -1
- package/lib/sql/printer.js +112 -11
- package/lib/sql/printer.js.map +1 -1
- package/lib/sql/query.d.ts +11 -11
- package/lib/sql/query.d.ts.map +1 -1
- package/lib/sql/query.js +41 -19
- package/lib/sql/query.js.map +1 -1
- package/lib/test/queryable.test.d.ts +2 -0
- package/lib/test/queryable.test.d.ts.map +1 -0
- package/lib/test/queryable.test.js +255 -0
- package/lib/test/queryable.test.js.map +1 -0
- package/lib/test/scalars.test.js +75 -1
- package/lib/test/scalars.test.js.map +1 -1
- package/lib/util/big-decimal.d.ts +5 -0
- package/lib/util/big-decimal.d.ts.map +1 -0
- package/lib/util/big-decimal.js +15 -0
- package/lib/util/big-decimal.js.map +1 -0
- package/package.json +10 -2
- package/src/ir/args.ts +1 -1
- package/src/ir/connection.ts +3 -4
- package/src/ir/fields.ts +22 -2
- package/src/limit.size.ts +55 -30
- package/src/main.ts +0 -11
- package/src/model.schema.ts +16 -9
- package/src/model.tools.ts +121 -8
- package/src/model.ts +3 -2
- package/src/opencrud/orderBy.ts +13 -17
- package/src/opencrud/schema.ts +81 -84
- package/src/opencrud/tree.ts +55 -26
- package/src/scalars/BigDecimal.ts +37 -0
- package/src/scalars/index.ts +2 -0
- package/src/server.ts +10 -7
- package/src/sql/cursor.ts +4 -2
- package/src/sql/mapping.ts +18 -1
- package/src/sql/printer.ts +142 -22
- package/src/sql/query.ts +50 -30
- package/src/test/queryable.test.ts +258 -0
- package/src/test/scalars.test.ts +78 -1
- package/src/util/big-decimal.ts +15 -0
package/lib/model.tools.js
CHANGED
|
@@ -3,7 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getFtsQuery = exports.getObject = exports.getEntity = exports.propTypeEquals = exports.validateIndexes = exports.validateLookups = exports.validateUnionTypes = exports.validateNames = exports.validateModel = exports.buildUnionProps = exports.getUnionProps = void 0;
|
|
6
|
+
exports.getFtsQuery = exports.getInterface = exports.getObject = exports.getEntity = exports.propTypeEquals = exports.validateQueryableInterfaces = exports.validateIndexes = exports.validateLookups = exports.validateUnionTypes = exports.validateNames = exports.validateModel = exports.getUniversalProperties = exports.getQueryableProperties = exports.getQueryableEntities = exports.buildUnionProps = exports.getUnionProps = void 0;
|
|
7
|
+
const util_internal_1 = require("@subsquid/util-internal");
|
|
7
8
|
const assert_1 = __importDefault(require("assert"));
|
|
8
9
|
const UNION_MAPS = new WeakMap();
|
|
9
10
|
function getUnionProps(model, unionName) {
|
|
@@ -21,8 +22,7 @@ function buildUnionProps(model, unionName) {
|
|
|
21
22
|
let union = model[unionName];
|
|
22
23
|
(0, assert_1.default)(union.kind == 'union');
|
|
23
24
|
let properties = {};
|
|
24
|
-
for (let
|
|
25
|
-
let objectName = union.variants[i];
|
|
25
|
+
for (let objectName of union.variants) {
|
|
26
26
|
let object = model[objectName];
|
|
27
27
|
(0, assert_1.default)(object.kind == 'object');
|
|
28
28
|
Object.assign(properties, object.properties);
|
|
@@ -34,12 +34,99 @@ function buildUnionProps(model, unionName) {
|
|
|
34
34
|
return { kind: 'object', properties };
|
|
35
35
|
}
|
|
36
36
|
exports.buildUnionProps = buildUnionProps;
|
|
37
|
+
const QUERYABLE_ENTITIES = new WeakMap();
|
|
38
|
+
function getQueryableEntities(model, queryableName) {
|
|
39
|
+
let cache = QUERYABLE_ENTITIES.get(model);
|
|
40
|
+
if (cache == null) {
|
|
41
|
+
cache = {};
|
|
42
|
+
QUERYABLE_ENTITIES.set(model, cache);
|
|
43
|
+
}
|
|
44
|
+
let entities = cache[queryableName];
|
|
45
|
+
if (entities)
|
|
46
|
+
return entities;
|
|
47
|
+
entities = cache[queryableName] = [];
|
|
48
|
+
for (let name in model) {
|
|
49
|
+
let item = model[name];
|
|
50
|
+
if (item.kind == 'entity' && item.interfaces?.includes(queryableName)) {
|
|
51
|
+
entities.push(name);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return entities;
|
|
55
|
+
}
|
|
56
|
+
exports.getQueryableEntities = getQueryableEntities;
|
|
57
|
+
function getQueryableProperties(model, queryableName) {
|
|
58
|
+
let queryable = getInterface(model, queryableName);
|
|
59
|
+
let props = {};
|
|
60
|
+
for (let entityName of getQueryableEntities(model, queryableName)) {
|
|
61
|
+
let entity = getEntity(model, entityName);
|
|
62
|
+
for (let key in queryable.properties) {
|
|
63
|
+
let ep = entity.properties[key];
|
|
64
|
+
if (ep == null)
|
|
65
|
+
throw new Error(`Entity ${entityName} doesn't implement ${queryableName} properly: .${key} property is missing`);
|
|
66
|
+
let prop = matchWithQueryableProp(queryable.properties[key], ep);
|
|
67
|
+
if (prop == null)
|
|
68
|
+
throw new Error(`Entity ${entityName} doesn't implement ${queryableName} properly: .${key} property types are incompatible`);
|
|
69
|
+
props[key] = prop;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return props;
|
|
73
|
+
}
|
|
74
|
+
exports.getQueryableProperties = getQueryableProperties;
|
|
75
|
+
function matchWithQueryableProp(queryableProp, entityProp) {
|
|
76
|
+
if (!queryableProp.nullable && entityProp.nullable)
|
|
77
|
+
return undefined;
|
|
78
|
+
let qt = queryableProp.type;
|
|
79
|
+
let et = entityProp.type;
|
|
80
|
+
switch (et.kind) {
|
|
81
|
+
case 'fk':
|
|
82
|
+
case 'lookup':
|
|
83
|
+
if (qt.kind == 'object' && qt.name == et.entity) {
|
|
84
|
+
return {
|
|
85
|
+
type: et,
|
|
86
|
+
nullable: queryableProp.nullable,
|
|
87
|
+
description: queryableProp.description
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
return undefined;
|
|
91
|
+
case 'list-lookup':
|
|
92
|
+
if (qt.kind == 'list' && qt.item.type.kind == 'object' && qt.item.type.name == et.entity) {
|
|
93
|
+
return {
|
|
94
|
+
type: et,
|
|
95
|
+
nullable: false,
|
|
96
|
+
description: queryableProp.description
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
return undefined;
|
|
100
|
+
default:
|
|
101
|
+
if (propTypeEquals(et, qt)) {
|
|
102
|
+
return queryableProp;
|
|
103
|
+
}
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function getUniversalProperties(model, typeName) {
|
|
108
|
+
let item = model[typeName];
|
|
109
|
+
switch (item.kind) {
|
|
110
|
+
case 'entity':
|
|
111
|
+
case 'object':
|
|
112
|
+
return item.properties;
|
|
113
|
+
case 'union':
|
|
114
|
+
return getUnionProps(model, typeName).properties;
|
|
115
|
+
case 'interface':
|
|
116
|
+
(0, assert_1.default)(item.queryable);
|
|
117
|
+
return getQueryableProperties(model, typeName);
|
|
118
|
+
default:
|
|
119
|
+
throw (0, util_internal_1.unexpectedCase)(item.kind);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
exports.getUniversalProperties = getUniversalProperties;
|
|
37
123
|
function validateModel(model) {
|
|
38
124
|
// TODO: check all invariants we assume
|
|
39
125
|
validateNames(model);
|
|
40
126
|
validateUnionTypes(model);
|
|
41
127
|
validateLookups(model);
|
|
42
128
|
validateIndexes(model);
|
|
129
|
+
validateQueryableInterfaces(model);
|
|
43
130
|
}
|
|
44
131
|
exports.validateModel = validateModel;
|
|
45
132
|
const TYPE_NAME_REGEX = /^[A-Z][a-zA-Z0-9]*$/;
|
|
@@ -115,7 +202,7 @@ function validateLookups(model) {
|
|
|
115
202
|
if (prop.type.kind == 'lookup' || prop.type.kind == 'list-lookup') {
|
|
116
203
|
let lookupEntity = getEntity(model, prop.type.entity);
|
|
117
204
|
let lookupProperty = lookupEntity.properties[prop.type.field];
|
|
118
|
-
if (lookupProperty?.type.kind != 'fk' || lookupProperty.type.
|
|
205
|
+
if (lookupProperty?.type.kind != 'fk' || lookupProperty.type.entity != name) {
|
|
119
206
|
throw invalidProperty(name, key, `${prop.type.entity}.${prop.type.field} is not a foreign key pointing to ${name}`);
|
|
120
207
|
}
|
|
121
208
|
if (prop.type.kind == 'lookup' && !lookupProperty.unique) {
|
|
@@ -139,7 +226,7 @@ function validateIndexes(model) {
|
|
|
139
226
|
index.fields.forEach(f => {
|
|
140
227
|
let prop = item.properties[f.name];
|
|
141
228
|
if (prop == null)
|
|
142
|
-
throw new Error(`Entity ${name} doesn't have a property ${f.name}, but is a part of index`);
|
|
229
|
+
throw new Error(`Entity ${name} doesn't have a property ${f.name}, but it is a part of index`);
|
|
143
230
|
switch (prop.type.kind) {
|
|
144
231
|
case "scalar":
|
|
145
232
|
case "enum":
|
|
@@ -153,17 +240,27 @@ function validateIndexes(model) {
|
|
|
153
240
|
}
|
|
154
241
|
}
|
|
155
242
|
exports.validateIndexes = validateIndexes;
|
|
243
|
+
function validateQueryableInterfaces(model) {
|
|
244
|
+
for (let name in model) {
|
|
245
|
+
let item = model[name];
|
|
246
|
+
if (item.kind == 'interface' && item.queryable) {
|
|
247
|
+
getQueryableProperties(model, name);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
exports.validateQueryableInterfaces = validateQueryableInterfaces;
|
|
156
252
|
function invalidProperty(item, key, msg) {
|
|
157
253
|
return new Error(`Invalid property ${item}.${key}: ${msg}`);
|
|
158
254
|
}
|
|
159
255
|
function propTypeEquals(a, b) {
|
|
160
256
|
if (a.kind != b.kind)
|
|
161
257
|
return false;
|
|
162
|
-
if (a.kind == 'list')
|
|
163
|
-
return propTypeEquals(a.item.type, b.item.type);
|
|
164
258
|
switch (a.kind) {
|
|
259
|
+
case 'list':
|
|
260
|
+
return a.item.nullable == b.item.nullable
|
|
261
|
+
&& propTypeEquals(a.item.type, b.item.type);
|
|
165
262
|
case 'fk':
|
|
166
|
-
return a.
|
|
263
|
+
return a.entity == b.entity;
|
|
167
264
|
case 'lookup':
|
|
168
265
|
case 'list-lookup':
|
|
169
266
|
return a.entity == b.entity && a.field == b.field;
|
|
@@ -184,6 +281,12 @@ function getObject(model, name) {
|
|
|
184
281
|
return object;
|
|
185
282
|
}
|
|
186
283
|
exports.getObject = getObject;
|
|
284
|
+
function getInterface(model, name) {
|
|
285
|
+
let i = model[name];
|
|
286
|
+
(0, assert_1.default)(i.kind == 'interface', `${name} expected to be an interface`);
|
|
287
|
+
return i;
|
|
288
|
+
}
|
|
289
|
+
exports.getInterface = getInterface;
|
|
187
290
|
function getFtsQuery(model, name) {
|
|
188
291
|
let query = model[name];
|
|
189
292
|
(0, assert_1.default)(query.kind == 'fts', `${name} expected to be FTS query`);
|
package/lib/model.tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.tools.js","sourceRoot":"","sources":["../src/model.tools.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA2B;AAI3B,MAAM,UAAU,GAAG,IAAI,OAAO,EAAqC,CAAA;AAGnE,SAAgB,aAAa,CAAC,KAAY,EAAE,SAAiB;IACzD,IAAI,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IAC/B,IAAI,GAAG,IAAI,IAAI,EAAE;QACb,GAAG,GAAG,EAAE,CAAA;QACR,UAAU,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;KAC7B;IACD,IAAI,GAAG,CAAC,SAAS,CAAC;QAAE,OAAO,GAAG,CAAC,SAAS,CAAC,CAAA;IACzC,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,eAAe,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;AAC7D,CAAC;AARD,sCAQC;AAGD,SAAgB,eAAe,CAAC,KAAY,EAAE,SAAiB;IAC3D,IAAI,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAA;IAC5B,IAAA,gBAAM,EAAC,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,CAAA;IAC7B,IAAI,UAAU,GAAyB,EAAE,CAAA;IACzC,KAAK,IAAI,
|
|
1
|
+
{"version":3,"file":"model.tools.js","sourceRoot":"","sources":["../src/model.tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ export declare type OpenCrudOrderByValue = string;
|
|
|
8
8
|
* A mapping between OpenCRUD enum variants and OrderBy specs
|
|
9
9
|
*/
|
|
10
10
|
export declare type OpenCrud_OrderBy_Mapping = ReadonlyMap<OpenCrudOrderByValue, OrderBy>;
|
|
11
|
-
export declare function getOrderByMapping(model: Model,
|
|
12
|
-
export declare function parseOrderBy(model: Model,
|
|
11
|
+
export declare function getOrderByMapping(model: Model, typeName: string): OpenCrud_OrderBy_Mapping;
|
|
12
|
+
export declare function parseOrderBy(model: Model, typeName: string, input: OpenCrudOrderByValue[]): OrderBy;
|
|
13
13
|
export declare function mergeOrderBy(list: OrderBy[]): OrderBy;
|
|
14
14
|
//# sourceMappingURL=orderBy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orderBy.d.ts","sourceRoot":"","sources":["../../src/opencrud/orderBy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,UAAU,CAAA;AAEnC,OAAO,EAAC,OAAO,EAAC,MAAM,YAAY,CAAA;AAGlC;;GAEG;AACH,oBAAY,oBAAoB,GAAG,MAAM,CAAA;AAGzC;;GAEG;AACH,oBAAY,wBAAwB,GAAG,WAAW,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAA;AAMjF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"orderBy.d.ts","sourceRoot":"","sources":["../../src/opencrud/orderBy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,UAAU,CAAA;AAEnC,OAAO,EAAC,OAAO,EAAC,MAAM,YAAY,CAAA;AAGlC;;GAEG;AACH,oBAAY,oBAAoB,GAAG,MAAM,CAAA;AAGzC;;GAEG;AACH,oBAAY,wBAAwB,GAAG,WAAW,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAA;AAMjF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAG,wBAAwB,CAQ1F;AAuCD,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,EAAE,GAAG,OAAO,CASnG;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAerD"}
|
package/lib/opencrud/orderBy.js
CHANGED
|
@@ -7,28 +7,24 @@ exports.mergeOrderBy = exports.parseOrderBy = exports.getOrderByMapping = void 0
|
|
|
7
7
|
const assert_1 = __importDefault(require("assert"));
|
|
8
8
|
const model_tools_1 = require("../model.tools");
|
|
9
9
|
const MAPPING_CACHE = new WeakMap();
|
|
10
|
-
function getOrderByMapping(model,
|
|
10
|
+
function getOrderByMapping(model, typeName) {
|
|
11
11
|
let cache = MAPPING_CACHE.get(model);
|
|
12
12
|
if (cache == null) {
|
|
13
13
|
cache = {};
|
|
14
14
|
MAPPING_CACHE.set(model, cache);
|
|
15
15
|
}
|
|
16
|
-
if (cache[
|
|
17
|
-
return cache[
|
|
18
|
-
return cache[
|
|
16
|
+
if (cache[typeName])
|
|
17
|
+
return cache[typeName];
|
|
18
|
+
return cache[typeName] = buildOrderByMapping(model, typeName, 2);
|
|
19
19
|
}
|
|
20
20
|
exports.getOrderByMapping = getOrderByMapping;
|
|
21
21
|
function buildOrderByMapping(model, typeName, depth) {
|
|
22
22
|
if (depth <= 0)
|
|
23
23
|
return new Map();
|
|
24
|
-
let
|
|
25
|
-
if (object.kind == 'union') {
|
|
26
|
-
object = (0, model_tools_1.getUnionProps)(model, typeName);
|
|
27
|
-
}
|
|
28
|
-
(0, assert_1.default)(object.kind == 'entity' || object.kind == 'object');
|
|
24
|
+
let properties = (0, model_tools_1.getUniversalProperties)(model, typeName);
|
|
29
25
|
let m = new Map();
|
|
30
|
-
for (let key in
|
|
31
|
-
let propType =
|
|
26
|
+
for (let key in properties) {
|
|
27
|
+
let propType = properties[key].type;
|
|
32
28
|
switch (propType.kind) {
|
|
33
29
|
case 'scalar':
|
|
34
30
|
case 'enum':
|
|
@@ -44,10 +40,6 @@ function buildOrderByMapping(model, typeName, depth) {
|
|
|
44
40
|
}
|
|
45
41
|
break;
|
|
46
42
|
case 'fk':
|
|
47
|
-
for (let [name, spec] of buildOrderByMapping(model, propType.foreignEntity, depth - 1)) {
|
|
48
|
-
m.set(key + '_' + name, { [key]: spec });
|
|
49
|
-
}
|
|
50
|
-
break;
|
|
51
43
|
case 'lookup':
|
|
52
44
|
for (let [name, spec] of buildOrderByMapping(model, propType.entity, depth - 1)) {
|
|
53
45
|
m.set(key + '_' + name, { [key]: spec });
|
|
@@ -55,10 +47,14 @@ function buildOrderByMapping(model, typeName, depth) {
|
|
|
55
47
|
break;
|
|
56
48
|
}
|
|
57
49
|
}
|
|
50
|
+
if (model[typeName].kind == 'interface') {
|
|
51
|
+
m.set('_type_ASC', { _type: 'ASC' });
|
|
52
|
+
m.set('_type_DESC', { _type: 'DESC' });
|
|
53
|
+
}
|
|
58
54
|
return m;
|
|
59
55
|
}
|
|
60
|
-
function parseOrderBy(model,
|
|
61
|
-
let mapping = getOrderByMapping(model,
|
|
56
|
+
function parseOrderBy(model, typeName, input) {
|
|
57
|
+
let mapping = getOrderByMapping(model, typeName);
|
|
62
58
|
return mergeOrderBy(input.map(value => {
|
|
63
59
|
let spec = mapping.get(value);
|
|
64
60
|
(0, assert_1.default)(spec != null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orderBy.js","sourceRoot":"","sources":["../../src/opencrud/orderBy.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA2B;AAE3B,
|
|
1
|
+
{"version":3,"file":"orderBy.js","sourceRoot":"","sources":["../../src/opencrud/orderBy.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA2B;AAE3B,gDAAoE;AAgBpE,MAAM,aAAa,GAAG,IAAI,OAAO,EAAmD,CAAA;AAGpF,SAAgB,iBAAiB,CAAC,KAAY,EAAE,QAAgB;IAC5D,IAAI,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACpC,IAAI,KAAK,IAAI,IAAI,EAAE;QACf,KAAK,GAAG,EAAE,CAAA;QACV,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;KAClC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC3C,OAAO,KAAK,CAAC,QAAQ,CAAC,GAAG,mBAAmB,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAA;AACpE,CAAC;AARD,8CAQC;AAGD,SAAS,mBAAmB,CAAC,KAAY,EAAE,QAAgB,EAAE,KAAa;IACtE,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,IAAI,GAAG,EAAE,CAAA;IAChC,IAAI,UAAU,GAAG,IAAA,oCAAsB,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IACxD,IAAI,CAAC,GAAG,IAAI,GAAG,EAAmB,CAAA;IAClC,KAAK,IAAI,GAAG,IAAI,UAAU,EAAE;QACxB,IAAI,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,CAAA;QACnC,QAAO,QAAQ,CAAC,IAAI,EAAE;YAClB,KAAK,QAAQ,CAAC;YACd,KAAK,MAAM;gBACP,IAAI,QAAQ,CAAC,IAAI,IAAI,MAAM,EAAE;oBACzB,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,EAAE,EAAC,CAAC,GAAG,CAAC,EAAE,KAAK,EAAC,CAAC,CAAA;oBACnC,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,OAAO,EAAE,EAAC,CAAC,GAAG,CAAC,EAAE,MAAM,EAAC,CAAC,CAAA;iBACxC;gBACD,MAAK;YACT,KAAK,QAAQ,CAAC;YACd,KAAK,OAAO;gBACR,KAAK,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE;oBAC3E,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAC,CAAC,CAAA;iBACzC;gBACD,MAAK;YACT,KAAK,IAAI,CAAC;YACV,KAAK,QAAQ;gBACT,KAAK,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE;oBAC7E,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,IAAI,EAAE,EAAC,CAAC,GAAG,CAAC,EAAE,IAAI,EAAC,CAAC,CAAA;iBACzC;gBACD,MAAK;SACZ;KACJ;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,WAAW,EAAE;QACrC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,EAAC,KAAK,EAAE,KAAK,EAAC,CAAC,CAAA;QAClC,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,EAAC,KAAK,EAAE,MAAM,EAAC,CAAC,CAAA;KACvC;IACD,OAAO,CAAC,CAAA;AACZ,CAAC;AAGD,SAAgB,YAAY,CAAC,KAAY,EAAE,QAAgB,EAAE,KAA6B;IACtF,IAAI,OAAO,GAAG,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAChD,OAAO,YAAY,CACf,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QACd,IAAI,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC7B,IAAA,gBAAM,EAAC,IAAI,IAAI,IAAI,CAAC,CAAA;QACpB,OAAO,IAAI,CAAA;IACf,CAAC,CAAC,CACL,CAAA;AACL,CAAC;AATD,oCASC;AAGD,SAAgB,YAAY,CAAC,IAAe;IACxC,IAAI,MAAM,GAAY,EAAE,CAAA;IACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAChB,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,IAAI,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;YACzB,IAAI,OAAO,IAAI,IAAI,EAAG;gBAClB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;aAC1B;iBAAM,IAAI,OAAO,OAAO,IAAI,QAAQ,EAAE;gBACnC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;gBAClB,IAAA,gBAAM,EAAC,OAAO,EAAE,IAAI,QAAQ,CAAC,CAAA;gBAC7B,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;aAC5C;SACJ;IACL,CAAC,CAAC,CAAA;IACF,OAAO,MAAM,CAAA;AACjB,CAAC;AAfD,oCAeC"}
|
package/lib/opencrud/schema.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { GraphQLSchema } from
|
|
2
|
-
import { Model } from
|
|
1
|
+
import { GraphQLSchema } from 'graphql';
|
|
2
|
+
import { Model } from '../model';
|
|
3
3
|
export interface SchemaOptions {
|
|
4
4
|
model: Model;
|
|
5
5
|
subscriptions?: boolean;
|
|
@@ -15,13 +15,13 @@ export declare class SchemaBuilder {
|
|
|
15
15
|
private buildType;
|
|
16
16
|
private buildObjectFields;
|
|
17
17
|
private getPropType;
|
|
18
|
-
private
|
|
18
|
+
private listArguments;
|
|
19
19
|
private getWhere;
|
|
20
20
|
private buildPropWhereFilters;
|
|
21
21
|
private hasFilters;
|
|
22
22
|
private getOrderBy;
|
|
23
23
|
build(): GraphQLSchema;
|
|
24
|
-
private
|
|
24
|
+
private installListQuery;
|
|
25
25
|
private installEntityById;
|
|
26
26
|
private installEntityByUniqueInput;
|
|
27
27
|
private installRelayConnection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/opencrud/schema.ts"],"names":[],"mappings":"AAIA,OAAO,EAeH,aAAa,EAGhB,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/opencrud/schema.ts"],"names":[],"mappings":"AAIA,OAAO,EAeH,aAAa,EAGhB,MAAM,SAAS,CAAA;AAWhB,OAAO,EAAgC,KAAK,EAAO,MAAM,UAAU,CAAA;AAgBnE,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,KAAK,CAAA;IACZ,aAAa,CAAC,EAAE,OAAO,CAAA;CAC1B;AAGD,qBAAa,aAAa;IAMV,OAAO,CAAC,OAAO;IAL3B,OAAO,CAAC,KAAK,CAAO;IACpB,OAAO,CAAC,KAAK,CAAuC;IACpD,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,OAAO,CAAsC;gBAEjC,OAAO,EAAE,aAAa;IAI1C,OAAO,CAAC,GAAG;IAoCX,OAAO,CAAC,SAAS;IAyCjB,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,WAAW;IA4BnB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,QAAQ;IAkChB,OAAO,CAAC,qBAAqB;IAyF7B,OAAO,CAAC,UAAU;IAmBlB,OAAO,CAAC,UAAU;IAsBlB,KAAK,IAAI,aAAa;IAkCtB,OAAO,CAAC,gBAAgB;IAwCxB,OAAO,CAAC,iBAAiB;IAwCzB,OAAO,CAAC,0BAA0B;IA2BlC,OAAO,CAAC,sBAAsB;IA8F9B,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,YAAY;CAavB"}
|
package/lib/opencrud/schema.js
CHANGED
|
@@ -48,6 +48,8 @@ class SchemaBuilder {
|
|
|
48
48
|
return scalars_1.customScalars.DateTime;
|
|
49
49
|
case 'BigInt':
|
|
50
50
|
return scalars_1.customScalars.BigInt;
|
|
51
|
+
case 'BigDecimal':
|
|
52
|
+
return scalars_1.customScalars.BigDecimal;
|
|
51
53
|
case 'Bytes':
|
|
52
54
|
return scalars_1.customScalars.Bytes;
|
|
53
55
|
case 'JSON':
|
|
@@ -78,7 +80,8 @@ class SchemaBuilder {
|
|
|
78
80
|
return new graphql_1.GraphQLInterfaceType({
|
|
79
81
|
name,
|
|
80
82
|
description: item.description,
|
|
81
|
-
fields: () => this.buildObjectFields(item)
|
|
83
|
+
fields: () => this.buildObjectFields(item),
|
|
84
|
+
resolveType: item.queryable ? (value) => value._isTypeOf : undefined
|
|
82
85
|
});
|
|
83
86
|
case "enum":
|
|
84
87
|
return new graphql_1.GraphQLEnumType({
|
|
@@ -111,7 +114,7 @@ class SchemaBuilder {
|
|
|
111
114
|
type: this.getPropType(prop)
|
|
112
115
|
};
|
|
113
116
|
if (prop.type.kind == 'list-lookup') {
|
|
114
|
-
field.args = this.
|
|
117
|
+
field.args = this.listArguments(prop.type.entity);
|
|
115
118
|
}
|
|
116
119
|
if (object.kind == 'entity' || object.kind == 'object') {
|
|
117
120
|
switch (prop.type.kind) {
|
|
@@ -135,7 +138,7 @@ class SchemaBuilder {
|
|
|
135
138
|
type = new graphql_1.GraphQLList(this.getPropType(prop.type.item));
|
|
136
139
|
break;
|
|
137
140
|
case "fk":
|
|
138
|
-
type = this.get(prop.type.
|
|
141
|
+
type = this.get(prop.type.entity);
|
|
139
142
|
break;
|
|
140
143
|
case "lookup":
|
|
141
144
|
return this.get(prop.type.entity);
|
|
@@ -149,43 +152,29 @@ class SchemaBuilder {
|
|
|
149
152
|
}
|
|
150
153
|
return type;
|
|
151
154
|
}
|
|
152
|
-
|
|
155
|
+
listArguments(typeName) {
|
|
153
156
|
return {
|
|
154
|
-
where: { type: this.getWhere(
|
|
155
|
-
orderBy: { type: this.getOrderBy(
|
|
157
|
+
where: { type: this.getWhere(typeName) },
|
|
158
|
+
orderBy: { type: this.getOrderBy(typeName) },
|
|
156
159
|
offset: { type: graphql_1.GraphQLInt },
|
|
157
160
|
limit: { type: graphql_1.GraphQLInt }
|
|
158
161
|
};
|
|
159
162
|
}
|
|
160
|
-
getWhere(
|
|
161
|
-
let where = this.where.get(
|
|
163
|
+
getWhere(typeName) {
|
|
164
|
+
let where = this.where.get(typeName);
|
|
162
165
|
if (where)
|
|
163
166
|
return where;
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
case "entity":
|
|
167
|
-
case "object":
|
|
168
|
-
case "union":
|
|
169
|
-
break;
|
|
170
|
-
default:
|
|
171
|
-
throw (0, util_internal_1.unexpectedCase)(object.kind);
|
|
172
|
-
}
|
|
167
|
+
let object = this.model[typeName];
|
|
168
|
+
let properties = (0, model_tools_1.getUniversalProperties)(this.model, typeName);
|
|
173
169
|
where = new graphql_1.GraphQLInputObjectType({
|
|
174
|
-
name: `${
|
|
170
|
+
name: `${typeName}WhereInput`,
|
|
175
171
|
fields: () => {
|
|
176
172
|
let fields = {};
|
|
177
|
-
let properties;
|
|
178
|
-
if (object.kind == 'union') {
|
|
179
|
-
properties = (0, model_tools_1.getUnionProps)(this.model, name).properties;
|
|
180
|
-
}
|
|
181
|
-
else {
|
|
182
|
-
properties = object.properties;
|
|
183
|
-
}
|
|
184
173
|
for (let key in properties) {
|
|
185
174
|
this.buildPropWhereFilters(key, properties[key], fields);
|
|
186
175
|
}
|
|
187
|
-
if (object.kind == 'entity') {
|
|
188
|
-
let whereList = new graphql_1.GraphQLList(new graphql_1.GraphQLNonNull(this.getWhere(
|
|
176
|
+
if (object.kind == 'entity' || object.kind == 'interface') {
|
|
177
|
+
let whereList = new graphql_1.GraphQLList(new graphql_1.GraphQLNonNull(this.getWhere(typeName)));
|
|
189
178
|
fields['AND'] = {
|
|
190
179
|
type: whereList
|
|
191
180
|
};
|
|
@@ -196,7 +185,7 @@ class SchemaBuilder {
|
|
|
196
185
|
return fields;
|
|
197
186
|
}
|
|
198
187
|
});
|
|
199
|
-
this.where.set(
|
|
188
|
+
this.where.set(typeName, where);
|
|
200
189
|
return where;
|
|
201
190
|
}
|
|
202
191
|
buildPropWhereFilters(key, prop, fields) {
|
|
@@ -214,6 +203,7 @@ class SchemaBuilder {
|
|
|
214
203
|
case 'Float':
|
|
215
204
|
case 'DateTime':
|
|
216
205
|
case 'BigInt':
|
|
206
|
+
case 'BigDecimal':
|
|
217
207
|
fields[`${key}_gt`] = { type };
|
|
218
208
|
fields[`${key}_gte`] = { type };
|
|
219
209
|
fields[`${key}_lt`] = { type };
|
|
@@ -269,10 +259,8 @@ class SchemaBuilder {
|
|
|
269
259
|
fields[key] = { type: this.getWhere(prop.type.name) };
|
|
270
260
|
break;
|
|
271
261
|
case "fk":
|
|
272
|
-
fields[`${key}_isNull`] = { type: graphql_1.GraphQLBoolean };
|
|
273
|
-
fields[key] = { type: this.getWhere(prop.type.foreignEntity) };
|
|
274
|
-
break;
|
|
275
262
|
case "lookup":
|
|
263
|
+
fields[`${key}_isNull`] = { type: graphql_1.GraphQLBoolean };
|
|
276
264
|
fields[key] = { type: this.getWhere(prop.type.entity) };
|
|
277
265
|
break;
|
|
278
266
|
case "list-lookup": {
|
|
@@ -302,19 +290,19 @@ class SchemaBuilder {
|
|
|
302
290
|
}
|
|
303
291
|
return false;
|
|
304
292
|
}
|
|
305
|
-
getOrderBy(
|
|
306
|
-
let orderBy = this.orderBy.get(
|
|
293
|
+
getOrderBy(typeName) {
|
|
294
|
+
let orderBy = this.orderBy.get(typeName);
|
|
307
295
|
if (orderBy)
|
|
308
296
|
return orderBy;
|
|
309
297
|
let values = {};
|
|
310
|
-
for (let variant of (0, orderBy_1.getOrderByMapping)(this.model,
|
|
298
|
+
for (let variant of (0, orderBy_1.getOrderByMapping)(this.model, typeName).keys()) {
|
|
311
299
|
values[variant] = {};
|
|
312
300
|
}
|
|
313
301
|
orderBy = new graphql_1.GraphQLList(new graphql_1.GraphQLNonNull(new graphql_1.GraphQLEnumType({
|
|
314
|
-
name: `${
|
|
302
|
+
name: `${typeName}OrderByInput`,
|
|
315
303
|
values
|
|
316
304
|
})));
|
|
317
|
-
this.orderBy.set(
|
|
305
|
+
this.orderBy.set(typeName, orderBy);
|
|
318
306
|
return orderBy;
|
|
319
307
|
}
|
|
320
308
|
build() {
|
|
@@ -324,11 +312,17 @@ class SchemaBuilder {
|
|
|
324
312
|
let item = this.model[name];
|
|
325
313
|
switch (item.kind) {
|
|
326
314
|
case "entity":
|
|
327
|
-
this.
|
|
315
|
+
this.installListQuery(name, query, subscription);
|
|
328
316
|
this.installEntityById(name, query, subscription);
|
|
329
317
|
this.installEntityByUniqueInput(name, query);
|
|
330
318
|
this.installRelayConnection(name, query);
|
|
331
319
|
break;
|
|
320
|
+
case 'interface':
|
|
321
|
+
if (item.queryable) {
|
|
322
|
+
this.installListQuery(name, query, subscription);
|
|
323
|
+
this.installRelayConnection(name, query);
|
|
324
|
+
}
|
|
325
|
+
break;
|
|
332
326
|
}
|
|
333
327
|
}
|
|
334
328
|
return new graphql_1.GraphQLSchema({
|
|
@@ -342,17 +336,17 @@ class SchemaBuilder {
|
|
|
342
336
|
}) : undefined
|
|
343
337
|
});
|
|
344
338
|
}
|
|
345
|
-
|
|
339
|
+
installListQuery(typeName, query, subscription) {
|
|
346
340
|
let model = this.model;
|
|
347
|
-
let queryName = (0, util_naming_1.toPlural)((0, util_naming_1.toCamelCase)(
|
|
348
|
-
let outputType = new graphql_1.GraphQLNonNull(new graphql_1.GraphQLList(new graphql_1.GraphQLNonNull(this.get(
|
|
349
|
-
let argsType = this.
|
|
341
|
+
let queryName = (0, util_naming_1.toPlural)((0, util_naming_1.toCamelCase)(typeName));
|
|
342
|
+
let outputType = new graphql_1.GraphQLNonNull(new graphql_1.GraphQLList(new graphql_1.GraphQLNonNull(this.get(typeName))));
|
|
343
|
+
let argsType = this.listArguments(typeName);
|
|
350
344
|
function createQuery(context, info, limit) {
|
|
351
345
|
let tree = (0, resolve_tree_1.getResolveTree)(info);
|
|
352
|
-
let
|
|
353
|
-
let
|
|
354
|
-
limit?.check(() => (0, limit_size_1.
|
|
355
|
-
return new query_1.
|
|
346
|
+
let args = (0, tree_1.parseSqlArguments)(model, typeName, tree.args);
|
|
347
|
+
let fields = (0, tree_1.parseAnyTree)(model, typeName, info.schema, tree);
|
|
348
|
+
limit?.check(() => (0, limit_size_1.getListSize)(model, typeName, fields, args.limit, args.where) + 1);
|
|
349
|
+
return new query_1.ListQuery(model, context.openreader.dialect, typeName, fields, args);
|
|
356
350
|
}
|
|
357
351
|
query[queryName] = {
|
|
358
352
|
type: outputType,
|
|
@@ -380,8 +374,8 @@ class SchemaBuilder {
|
|
|
380
374
|
};
|
|
381
375
|
function createQuery(context, info, limit) {
|
|
382
376
|
let tree = (0, resolve_tree_1.getResolveTree)(info);
|
|
383
|
-
let fields = (0, tree_1.
|
|
384
|
-
limit?.check(() => (0, limit_size_1.
|
|
377
|
+
let fields = (0, tree_1.parseObjectTree)(model, entityName, info.schema, tree);
|
|
378
|
+
limit?.check(() => (0, limit_size_1.getObjectSize)(model, fields) + 1);
|
|
385
379
|
return new query_1.EntityByIdQuery(model, context.openreader.dialect, entityName, fields, tree.args.id);
|
|
386
380
|
}
|
|
387
381
|
query[queryName] = {
|
|
@@ -412,20 +406,20 @@ class SchemaBuilder {
|
|
|
412
406
|
},
|
|
413
407
|
async resolve(source, args, context, info) {
|
|
414
408
|
let tree = (0, resolve_tree_1.getResolveTree)(info);
|
|
415
|
-
let fields = (0, tree_1.
|
|
416
|
-
context.openreader.responseSizeLimit?.check(() => (0, limit_size_1.
|
|
417
|
-
let query = new query_1.
|
|
409
|
+
let fields = (0, tree_1.parseObjectTree)(model, entityName, info.schema, tree);
|
|
410
|
+
context.openreader.responseSizeLimit?.check(() => (0, limit_size_1.getObjectSize)(model, fields) + 1);
|
|
411
|
+
let query = new query_1.ListQuery(model, context.openreader.dialect, entityName, fields, { where: { op: 'eq', field: 'id', value: args.where.id } });
|
|
418
412
|
let result = await context.openreader.executeQuery(query);
|
|
419
413
|
(0, assert_1.default)(result.length < 2);
|
|
420
414
|
return result[0];
|
|
421
415
|
}
|
|
422
416
|
};
|
|
423
417
|
}
|
|
424
|
-
installRelayConnection(
|
|
418
|
+
installRelayConnection(typeName, query) {
|
|
425
419
|
let model = this.model;
|
|
426
|
-
let outputType = (0, util_naming_1.toPlural)(
|
|
427
|
-
let edgeType = `${
|
|
428
|
-
query[`${(0, util_naming_1.toPlural)((0, util_naming_1.toCamelCase)(
|
|
420
|
+
let outputType = (0, util_naming_1.toPlural)(typeName) + 'Connection';
|
|
421
|
+
let edgeType = `${typeName}Edge`;
|
|
422
|
+
query[`${(0, util_naming_1.toPlural)((0, util_naming_1.toCamelCase)(typeName))}Connection`] = {
|
|
429
423
|
type: new graphql_1.GraphQLNonNull(new graphql_1.GraphQLObjectType({
|
|
430
424
|
name: outputType,
|
|
431
425
|
fields: {
|
|
@@ -433,7 +427,7 @@ class SchemaBuilder {
|
|
|
433
427
|
type: new graphql_1.GraphQLNonNull(new graphql_1.GraphQLList(new graphql_1.GraphQLNonNull(new graphql_1.GraphQLObjectType({
|
|
434
428
|
name: edgeType,
|
|
435
429
|
fields: {
|
|
436
|
-
node: { type: new graphql_1.GraphQLNonNull(this.get(
|
|
430
|
+
node: { type: new graphql_1.GraphQLNonNull(this.get(typeName)) },
|
|
437
431
|
cursor: { type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLString) }
|
|
438
432
|
}
|
|
439
433
|
}))))
|
|
@@ -443,10 +437,10 @@ class SchemaBuilder {
|
|
|
443
437
|
}
|
|
444
438
|
})),
|
|
445
439
|
args: {
|
|
446
|
-
orderBy: { type: new graphql_1.GraphQLNonNull(this.getOrderBy(
|
|
440
|
+
orderBy: { type: new graphql_1.GraphQLNonNull(this.getOrderBy(typeName)) },
|
|
447
441
|
after: { type: graphql_1.GraphQLString },
|
|
448
442
|
first: { type: graphql_1.GraphQLInt },
|
|
449
|
-
where: { type: this.getWhere(
|
|
443
|
+
where: { type: this.getWhere(typeName) }
|
|
450
444
|
},
|
|
451
445
|
async resolve(source, args, context, info) {
|
|
452
446
|
let orderByArg = (0, util_1.ensureArray)(args.orderBy);
|
|
@@ -454,7 +448,7 @@ class SchemaBuilder {
|
|
|
454
448
|
throw new apollo_server_core_1.UserInputError('orderBy argument is required for connection');
|
|
455
449
|
}
|
|
456
450
|
let req = {
|
|
457
|
-
orderBy: (0, orderBy_1.parseOrderBy)(model,
|
|
451
|
+
orderBy: (0, orderBy_1.parseOrderBy)(model, typeName, orderByArg),
|
|
458
452
|
where: (0, where_1.parseWhere)(args.where)
|
|
459
453
|
};
|
|
460
454
|
if (args.first != null) {
|
|
@@ -482,13 +476,13 @@ class SchemaBuilder {
|
|
|
482
476
|
req.edgeCursor = (0, resolve_tree_1.hasTreeRequest)(edgeFields, 'cursor');
|
|
483
477
|
let nodeTree = (0, resolve_tree_1.getTreeRequest)(edgeFields, 'node');
|
|
484
478
|
if (nodeTree) {
|
|
485
|
-
req.edgeNode = (0, tree_1.
|
|
479
|
+
req.edgeNode = (0, tree_1.parseAnyTree)(model, typeName, info.schema, nodeTree);
|
|
486
480
|
}
|
|
487
481
|
}
|
|
488
|
-
context.openreader.responseSizeLimit?.check(() => (0, limit_size_1.
|
|
489
|
-
let result = await context.openreader.executeQuery(new query_1.
|
|
482
|
+
context.openreader.responseSizeLimit?.check(() => (0, limit_size_1.getConnectionSize)(model, typeName, req) + 1);
|
|
483
|
+
let result = await context.openreader.executeQuery(new query_1.ConnectionQuery(model, context.openreader.dialect, typeName, req));
|
|
490
484
|
if (req.totalCount && result.totalCount == null) {
|
|
491
|
-
result.totalCount = await context.openreader.executeQuery(new query_1.
|
|
485
|
+
result.totalCount = await context.openreader.executeQuery(new query_1.CountQuery(model, context.openreader.dialect, typeName, req.where));
|
|
492
486
|
}
|
|
493
487
|
return result;
|
|
494
488
|
}
|