@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.
Files changed (96) hide show
  1. package/lib/ir/args.d.ts +1 -1
  2. package/lib/ir/args.d.ts.map +1 -1
  3. package/lib/ir/connection.d.ts +3 -4
  4. package/lib/ir/connection.d.ts.map +1 -1
  5. package/lib/ir/connection.js.map +1 -1
  6. package/lib/ir/fields.d.ts +6 -2
  7. package/lib/ir/fields.d.ts.map +1 -1
  8. package/lib/ir/fields.js +15 -0
  9. package/lib/ir/fields.js.map +1 -1
  10. package/lib/limit.size.d.ts +4 -4
  11. package/lib/limit.size.d.ts.map +1 -1
  12. package/lib/limit.size.js +51 -20
  13. package/lib/limit.size.js.map +1 -1
  14. package/lib/main.js +0 -9
  15. package/lib/main.js.map +1 -1
  16. package/lib/model.d.ts +3 -2
  17. package/lib/model.d.ts.map +1 -1
  18. package/lib/model.schema.d.ts +2 -2
  19. package/lib/model.schema.d.ts.map +1 -1
  20. package/lib/model.schema.js +8 -3
  21. package/lib/model.schema.js.map +1 -1
  22. package/lib/model.tools.d.ts +6 -1
  23. package/lib/model.tools.d.ts.map +1 -1
  24. package/lib/model.tools.js +111 -8
  25. package/lib/model.tools.js.map +1 -1
  26. package/lib/opencrud/orderBy.d.ts +2 -2
  27. package/lib/opencrud/orderBy.d.ts.map +1 -1
  28. package/lib/opencrud/orderBy.js +13 -17
  29. package/lib/opencrud/orderBy.js.map +1 -1
  30. package/lib/opencrud/schema.d.ts +4 -4
  31. package/lib/opencrud/schema.d.ts.map +1 -1
  32. package/lib/opencrud/schema.js +56 -62
  33. package/lib/opencrud/schema.js.map +1 -1
  34. package/lib/opencrud/tree.d.ts +9 -7
  35. package/lib/opencrud/tree.d.ts.map +1 -1
  36. package/lib/opencrud/tree.js +32 -14
  37. package/lib/opencrud/tree.js.map +1 -1
  38. package/lib/scalars/BigDecimal.d.ts +3 -0
  39. package/lib/scalars/BigDecimal.d.ts.map +1 -0
  40. package/lib/scalars/BigDecimal.js +38 -0
  41. package/lib/scalars/BigDecimal.js.map +1 -0
  42. package/lib/scalars/index.d.ts +1 -0
  43. package/lib/scalars/index.d.ts.map +1 -1
  44. package/lib/scalars/index.js +2 -0
  45. package/lib/scalars/index.js.map +1 -1
  46. package/lib/server.d.ts +4 -2
  47. package/lib/server.d.ts.map +1 -1
  48. package/lib/server.js +4 -2
  49. package/lib/server.js.map +1 -1
  50. package/lib/sql/cursor.d.ts.map +1 -1
  51. package/lib/sql/cursor.js +4 -2
  52. package/lib/sql/cursor.js.map +1 -1
  53. package/lib/sql/mapping.d.ts +3 -1
  54. package/lib/sql/mapping.d.ts.map +1 -1
  55. package/lib/sql/mapping.js +16 -1
  56. package/lib/sql/mapping.js.map +1 -1
  57. package/lib/sql/printer.d.ts +29 -11
  58. package/lib/sql/printer.d.ts.map +1 -1
  59. package/lib/sql/printer.js +112 -11
  60. package/lib/sql/printer.js.map +1 -1
  61. package/lib/sql/query.d.ts +11 -11
  62. package/lib/sql/query.d.ts.map +1 -1
  63. package/lib/sql/query.js +41 -19
  64. package/lib/sql/query.js.map +1 -1
  65. package/lib/test/queryable.test.d.ts +2 -0
  66. package/lib/test/queryable.test.d.ts.map +1 -0
  67. package/lib/test/queryable.test.js +255 -0
  68. package/lib/test/queryable.test.js.map +1 -0
  69. package/lib/test/scalars.test.js +75 -1
  70. package/lib/test/scalars.test.js.map +1 -1
  71. package/lib/util/big-decimal.d.ts +5 -0
  72. package/lib/util/big-decimal.d.ts.map +1 -0
  73. package/lib/util/big-decimal.js +15 -0
  74. package/lib/util/big-decimal.js.map +1 -0
  75. package/package.json +10 -2
  76. package/src/ir/args.ts +1 -1
  77. package/src/ir/connection.ts +3 -4
  78. package/src/ir/fields.ts +22 -2
  79. package/src/limit.size.ts +55 -30
  80. package/src/main.ts +0 -11
  81. package/src/model.schema.ts +16 -9
  82. package/src/model.tools.ts +121 -8
  83. package/src/model.ts +3 -2
  84. package/src/opencrud/orderBy.ts +13 -17
  85. package/src/opencrud/schema.ts +81 -84
  86. package/src/opencrud/tree.ts +55 -26
  87. package/src/scalars/BigDecimal.ts +37 -0
  88. package/src/scalars/index.ts +2 -0
  89. package/src/server.ts +10 -7
  90. package/src/sql/cursor.ts +4 -2
  91. package/src/sql/mapping.ts +18 -1
  92. package/src/sql/printer.ts +142 -22
  93. package/src/sql/query.ts +50 -30
  94. package/src/test/queryable.test.ts +258 -0
  95. package/src/test/scalars.test.ts +78 -1
  96. package/src/util/big-decimal.ts +15 -0
@@ -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 i = 0; i < union.variants.length; i++) {
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.foreignEntity != name) {
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.foreignEntity == b.foreignEntity;
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`);
@@ -1 +1 @@
1
- {"version":3,"file":"model.tools.js","sourceRoot":"","sources":["../src/model.tools.ts"],"names":[],"mappings":"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"}
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, entityName: string): OpenCrud_OrderBy_Mapping;
12
- export declare function parseOrderBy(model: Model, entityName: string, input: OpenCrudOrderByValue[]): OrderBy;
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,UAAU,EAAE,MAAM,GAAG,wBAAwB,CAQ5F;AA2CD,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,EAAE,GAAG,OAAO,CASrG;AAGD,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAerD"}
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"}
@@ -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, entityName) {
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[entityName])
17
- return cache[entityName];
18
- return cache[entityName] = buildOrderByMapping(model, entityName, 2);
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 object = model[typeName];
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 object.properties) {
31
- let propType = object.properties[key].type;
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, entityName, input) {
61
- let mapping = getOrderByMapping(model, entityName);
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":"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"}
1
+ {"version":3,"file":"orderBy.js","sourceRoot":"","sources":["../../src/opencrud/orderBy.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { GraphQLSchema } from "graphql";
2
- import { Model } from "../model";
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 entityListArguments;
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 installEntityList;
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;AAUhB,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;IAkCX,OAAO,CAAC,SAAS;IAwCjB,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,WAAW;IA4BnB,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,QAAQ;IA8ChB,OAAO,CAAC,qBAAqB;IA0F7B,OAAO,CAAC,UAAU;IAmBlB,OAAO,CAAC,UAAU;IAsBlB,KAAK,IAAI,aAAa;IA4BtB,OAAO,CAAC,iBAAiB;IAwCzB,OAAO,CAAC,iBAAiB;IAwCzB,OAAO,CAAC,0BAA0B;IA2BlC,OAAO,CAAC,sBAAsB;IA8F9B,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,YAAY;CAavB"}
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"}
@@ -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.entityListArguments(prop.type.entity);
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.foreignEntity);
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
- entityListArguments(entityName) {
155
+ listArguments(typeName) {
153
156
  return {
154
- where: { type: this.getWhere(entityName) },
155
- orderBy: { type: this.getOrderBy(entityName) },
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(name) {
161
- let where = this.where.get(name);
163
+ getWhere(typeName) {
164
+ let where = this.where.get(typeName);
162
165
  if (where)
163
166
  return where;
164
- const object = this.model[name];
165
- switch (object.kind) {
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: `${name}WhereInput`,
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(name)));
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(name, where);
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(entityName) {
306
- let orderBy = this.orderBy.get(entityName);
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, entityName).keys()) {
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: `${entityName}OrderByInput`,
302
+ name: `${typeName}OrderByInput`,
315
303
  values
316
304
  })));
317
- this.orderBy.set(entityName, orderBy);
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.installEntityList(name, query, subscription);
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
- installEntityList(entityName, query, subscription) {
339
+ installListQuery(typeName, query, subscription) {
346
340
  let model = this.model;
347
- let queryName = (0, util_naming_1.toPlural)((0, util_naming_1.toCamelCase)(entityName));
348
- let outputType = new graphql_1.GraphQLNonNull(new graphql_1.GraphQLList(new graphql_1.GraphQLNonNull(this.get(entityName))));
349
- let argsType = this.entityListArguments(entityName);
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 fields = (0, tree_1.parseResolveTree)(model, entityName, info.schema, tree);
353
- let args = (0, tree_1.parseEntityListArguments)(model, entityName, tree.args);
354
- limit?.check(() => (0, limit_size_1.getEntityListSize)(model, entityName, fields, args.limit, args.where) + 1);
355
- return new query_1.EntityListQuery(model, context.openreader.dialect, entityName, fields, args);
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.parseResolveTree)(model, entityName, info.schema, tree);
384
- limit?.check(() => (0, limit_size_1.getSize)(model, fields) + 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.parseResolveTree)(model, entityName, info.schema, tree);
416
- context.openreader.responseSizeLimit?.check(() => (0, limit_size_1.getSize)(model, fields) + 1);
417
- let query = new query_1.EntityListQuery(model, context.openreader.dialect, entityName, fields, { where: { op: 'eq', field: 'id', value: args.where.id } });
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(entityName, query) {
418
+ installRelayConnection(typeName, query) {
425
419
  let model = this.model;
426
- let outputType = (0, util_naming_1.toPlural)(entityName) + 'Connection';
427
- let edgeType = `${entityName}Edge`;
428
- query[`${(0, util_naming_1.toPlural)((0, util_naming_1.toCamelCase)(entityName))}Connection`] = {
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(entityName)) },
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(entityName)) },
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(entityName) }
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, entityName, orderByArg),
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.parseResolveTree)(model, entityName, info.schema, nodeTree);
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.getRelaySize)(model, entityName, req) + 1);
489
- let result = await context.openreader.executeQuery(new query_1.EntityConnectionQuery(model, context.openreader.dialect, entityName, req));
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.EntityCountQuery(model, context.openreader.dialect, entityName, req.where));
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
  }