@itwin/ecschema-metadata 5.2.0-dev.7 → 5.2.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 (200) hide show
  1. package/CHANGELOG.md +51 -1
  2. package/lib/cjs/Constants.js.map +1 -1
  3. package/lib/cjs/DelayedPromise.js.map +1 -1
  4. package/lib/cjs/Deserialization/AbstractParser.js.map +1 -1
  5. package/lib/cjs/Deserialization/Helper.js.map +1 -1
  6. package/lib/cjs/Deserialization/JsonParser.js.map +1 -1
  7. package/lib/cjs/Deserialization/JsonProps.d.ts +9 -2
  8. package/lib/cjs/Deserialization/JsonProps.d.ts.map +1 -1
  9. package/lib/cjs/Deserialization/JsonProps.js.map +1 -1
  10. package/lib/cjs/Deserialization/SchemaGraphUtil.js.map +1 -1
  11. package/lib/cjs/Deserialization/XmlParser.js.map +1 -1
  12. package/lib/cjs/Deserialization/XmlSerializationUtils.js.map +1 -1
  13. package/lib/cjs/ECName.js.map +1 -1
  14. package/lib/cjs/ECObjects.js.map +1 -1
  15. package/lib/cjs/Exception.js.map +1 -1
  16. package/lib/cjs/Formatting/FormatSetFormatsProvider.d.ts +37 -0
  17. package/lib/cjs/Formatting/FormatSetFormatsProvider.d.ts.map +1 -0
  18. package/lib/cjs/Formatting/FormatSetFormatsProvider.js +58 -0
  19. package/lib/cjs/Formatting/FormatSetFormatsProvider.js.map +1 -0
  20. package/lib/cjs/{SchemaFormatsProvider.d.ts → Formatting/SchemaFormatsProvider.d.ts} +1 -1
  21. package/lib/cjs/Formatting/SchemaFormatsProvider.d.ts.map +1 -0
  22. package/lib/cjs/{SchemaFormatsProvider.js → Formatting/SchemaFormatsProvider.js} +6 -6
  23. package/lib/cjs/Formatting/SchemaFormatsProvider.js.map +1 -0
  24. package/lib/cjs/IncrementalLoading/ClassParsers.js.map +1 -1
  25. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.d.ts +18 -24
  26. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.d.ts.map +1 -1
  27. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.js +62 -34
  28. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.js.map +1 -1
  29. package/lib/cjs/IncrementalLoading/FullSchemaQueries.d.ts.map +1 -1
  30. package/lib/cjs/IncrementalLoading/FullSchemaQueries.js +466 -465
  31. package/lib/cjs/IncrementalLoading/FullSchemaQueries.js.map +1 -1
  32. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.d.ts +20 -3
  33. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.d.ts.map +1 -1
  34. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.js +7 -4
  35. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.js.map +1 -1
  36. package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.d.ts.map +1 -1
  37. package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.js +2 -7
  38. package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.js.map +1 -1
  39. package/lib/cjs/IncrementalLoading/SchemaItemParsers.d.ts +4 -4
  40. package/lib/cjs/IncrementalLoading/SchemaItemParsers.d.ts.map +1 -1
  41. package/lib/cjs/IncrementalLoading/SchemaItemParsers.js +17 -17
  42. package/lib/cjs/IncrementalLoading/SchemaItemParsers.js.map +1 -1
  43. package/lib/cjs/IncrementalLoading/SchemaItemQueries.js +235 -235
  44. package/lib/cjs/IncrementalLoading/SchemaItemQueries.js.map +1 -1
  45. package/lib/cjs/IncrementalLoading/SchemaParser.d.ts +10 -4
  46. package/lib/cjs/IncrementalLoading/SchemaParser.d.ts.map +1 -1
  47. package/lib/cjs/IncrementalLoading/SchemaParser.js +19 -19
  48. package/lib/cjs/IncrementalLoading/SchemaParser.js.map +1 -1
  49. package/lib/cjs/IncrementalLoading/SchemaStubQueries.d.ts.map +1 -1
  50. package/lib/cjs/IncrementalLoading/SchemaStubQueries.js +309 -326
  51. package/lib/cjs/IncrementalLoading/SchemaStubQueries.js.map +1 -1
  52. package/lib/cjs/Interfaces.js.map +1 -1
  53. package/lib/cjs/Metadata/Class.js.map +1 -1
  54. package/lib/cjs/Metadata/Constant.js.map +1 -1
  55. package/lib/cjs/Metadata/CustomAttribute.js.map +1 -1
  56. package/lib/cjs/Metadata/CustomAttributeClass.js.map +1 -1
  57. package/lib/cjs/Metadata/EntityClass.js +1 -1
  58. package/lib/cjs/Metadata/EntityClass.js.map +1 -1
  59. package/lib/cjs/Metadata/Enumeration.js.map +1 -1
  60. package/lib/cjs/Metadata/Format.js.map +1 -1
  61. package/lib/cjs/Metadata/InvertedUnit.js.map +1 -1
  62. package/lib/cjs/Metadata/KindOfQuantity.d.ts.map +1 -1
  63. package/lib/cjs/Metadata/KindOfQuantity.js +9 -22
  64. package/lib/cjs/Metadata/KindOfQuantity.js.map +1 -1
  65. package/lib/cjs/Metadata/Mixin.js.map +1 -1
  66. package/lib/cjs/Metadata/OverrideFormat.js.map +1 -1
  67. package/lib/cjs/Metadata/Phenomenon.js.map +1 -1
  68. package/lib/cjs/Metadata/Property.js.map +1 -1
  69. package/lib/cjs/Metadata/PropertyCategory.js.map +1 -1
  70. package/lib/cjs/Metadata/RelationshipClass.js.map +1 -1
  71. package/lib/cjs/Metadata/Schema.d.ts +2 -0
  72. package/lib/cjs/Metadata/Schema.d.ts.map +1 -1
  73. package/lib/cjs/Metadata/Schema.js +4 -0
  74. package/lib/cjs/Metadata/Schema.js.map +1 -1
  75. package/lib/cjs/Metadata/SchemaItem.js.map +1 -1
  76. package/lib/cjs/Metadata/UnitSystem.js.map +1 -1
  77. package/lib/cjs/PropertyTypes.js.map +1 -1
  78. package/lib/cjs/SchemaJsonLocater.js.map +1 -1
  79. package/lib/cjs/SchemaKey.js.map +1 -1
  80. package/lib/cjs/SchemaLoader.js.map +1 -1
  81. package/lib/cjs/SchemaPartVisitorDelegate.js.map +1 -1
  82. package/lib/cjs/UnitConversion/Graph.js.map +1 -1
  83. package/lib/cjs/UnitConversion/Parser.js.map +1 -1
  84. package/lib/cjs/UnitConversion/UnitConversion.js.map +1 -1
  85. package/lib/cjs/UnitConversion/UnitConverter.js.map +1 -1
  86. package/lib/cjs/UnitConversion/UnitTree.js.map +1 -1
  87. package/lib/cjs/UnitProvider/SchemaUnitProvider.js.map +1 -1
  88. package/lib/cjs/Validation/SchemaWalker.js.map +1 -1
  89. package/lib/cjs/ecschema-metadata.d.ts +2 -1
  90. package/lib/cjs/ecschema-metadata.d.ts.map +1 -1
  91. package/lib/cjs/ecschema-metadata.js +2 -1
  92. package/lib/cjs/ecschema-metadata.js.map +1 -1
  93. package/lib/cjs/utils/SchemaGraph.js.map +1 -1
  94. package/lib/cjs/utils/SchemaLoadingController.js.map +1 -1
  95. package/lib/esm/Constants.js.map +1 -1
  96. package/lib/esm/DelayedPromise.js.map +1 -1
  97. package/lib/esm/Deserialization/AbstractParser.js.map +1 -1
  98. package/lib/esm/Deserialization/Helper.js.map +1 -1
  99. package/lib/esm/Deserialization/JsonParser.js.map +1 -1
  100. package/lib/esm/Deserialization/JsonProps.d.ts +9 -2
  101. package/lib/esm/Deserialization/JsonProps.d.ts.map +1 -1
  102. package/lib/esm/Deserialization/JsonProps.js.map +1 -1
  103. package/lib/esm/Deserialization/SchemaGraphUtil.js.map +1 -1
  104. package/lib/esm/Deserialization/XmlParser.js.map +1 -1
  105. package/lib/esm/Deserialization/XmlSerializationUtils.js.map +1 -1
  106. package/lib/esm/ECName.js.map +1 -1
  107. package/lib/esm/ECObjects.js.map +1 -1
  108. package/lib/esm/Exception.js.map +1 -1
  109. package/lib/esm/Formatting/FormatSetFormatsProvider.d.ts +37 -0
  110. package/lib/esm/Formatting/FormatSetFormatsProvider.d.ts.map +1 -0
  111. package/lib/esm/Formatting/FormatSetFormatsProvider.js +54 -0
  112. package/lib/esm/Formatting/FormatSetFormatsProvider.js.map +1 -0
  113. package/lib/esm/{SchemaFormatsProvider.d.ts → Formatting/SchemaFormatsProvider.d.ts} +1 -1
  114. package/lib/esm/Formatting/SchemaFormatsProvider.d.ts.map +1 -0
  115. package/lib/esm/{SchemaFormatsProvider.js → Formatting/SchemaFormatsProvider.js} +6 -6
  116. package/lib/esm/Formatting/SchemaFormatsProvider.js.map +1 -0
  117. package/lib/esm/IncrementalLoading/ClassParsers.js.map +1 -1
  118. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.d.ts +18 -24
  119. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.d.ts.map +1 -1
  120. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.js +61 -33
  121. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.js.map +1 -1
  122. package/lib/esm/IncrementalLoading/FullSchemaQueries.d.ts.map +1 -1
  123. package/lib/esm/IncrementalLoading/FullSchemaQueries.js +466 -465
  124. package/lib/esm/IncrementalLoading/FullSchemaQueries.js.map +1 -1
  125. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.d.ts +20 -3
  126. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.d.ts.map +1 -1
  127. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.js +7 -4
  128. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.js.map +1 -1
  129. package/lib/esm/IncrementalLoading/IncrementalSchemaReader.d.ts.map +1 -1
  130. package/lib/esm/IncrementalLoading/IncrementalSchemaReader.js +2 -7
  131. package/lib/esm/IncrementalLoading/IncrementalSchemaReader.js.map +1 -1
  132. package/lib/esm/IncrementalLoading/SchemaItemParsers.d.ts +4 -4
  133. package/lib/esm/IncrementalLoading/SchemaItemParsers.d.ts.map +1 -1
  134. package/lib/esm/IncrementalLoading/SchemaItemParsers.js +17 -17
  135. package/lib/esm/IncrementalLoading/SchemaItemParsers.js.map +1 -1
  136. package/lib/esm/IncrementalLoading/SchemaItemQueries.js +235 -235
  137. package/lib/esm/IncrementalLoading/SchemaItemQueries.js.map +1 -1
  138. package/lib/esm/IncrementalLoading/SchemaParser.d.ts +10 -4
  139. package/lib/esm/IncrementalLoading/SchemaParser.d.ts.map +1 -1
  140. package/lib/esm/IncrementalLoading/SchemaParser.js +19 -19
  141. package/lib/esm/IncrementalLoading/SchemaParser.js.map +1 -1
  142. package/lib/esm/IncrementalLoading/SchemaStubQueries.d.ts.map +1 -1
  143. package/lib/esm/IncrementalLoading/SchemaStubQueries.js +309 -326
  144. package/lib/esm/IncrementalLoading/SchemaStubQueries.js.map +1 -1
  145. package/lib/esm/Interfaces.js.map +1 -1
  146. package/lib/esm/Metadata/Class.js.map +1 -1
  147. package/lib/esm/Metadata/Constant.js.map +1 -1
  148. package/lib/esm/Metadata/CustomAttribute.js.map +1 -1
  149. package/lib/esm/Metadata/CustomAttributeClass.js.map +1 -1
  150. package/lib/esm/Metadata/EntityClass.js +1 -1
  151. package/lib/esm/Metadata/EntityClass.js.map +1 -1
  152. package/lib/esm/Metadata/Enumeration.js.map +1 -1
  153. package/lib/esm/Metadata/Format.js.map +1 -1
  154. package/lib/esm/Metadata/InvertedUnit.js.map +1 -1
  155. package/lib/esm/Metadata/KindOfQuantity.d.ts.map +1 -1
  156. package/lib/esm/Metadata/KindOfQuantity.js +9 -22
  157. package/lib/esm/Metadata/KindOfQuantity.js.map +1 -1
  158. package/lib/esm/Metadata/Mixin.js.map +1 -1
  159. package/lib/esm/Metadata/OverrideFormat.js.map +1 -1
  160. package/lib/esm/Metadata/Phenomenon.js.map +1 -1
  161. package/lib/esm/Metadata/Property.js.map +1 -1
  162. package/lib/esm/Metadata/PropertyCategory.js.map +1 -1
  163. package/lib/esm/Metadata/RelationshipClass.js.map +1 -1
  164. package/lib/esm/Metadata/Schema.d.ts +2 -0
  165. package/lib/esm/Metadata/Schema.d.ts.map +1 -1
  166. package/lib/esm/Metadata/Schema.js +4 -0
  167. package/lib/esm/Metadata/Schema.js.map +1 -1
  168. package/lib/esm/Metadata/SchemaItem.js.map +1 -1
  169. package/lib/esm/Metadata/UnitSystem.js.map +1 -1
  170. package/lib/esm/PropertyTypes.js.map +1 -1
  171. package/lib/esm/SchemaJsonLocater.js.map +1 -1
  172. package/lib/esm/SchemaKey.js.map +1 -1
  173. package/lib/esm/SchemaLoader.js.map +1 -1
  174. package/lib/esm/SchemaPartVisitorDelegate.js.map +1 -1
  175. package/lib/esm/UnitConversion/Graph.js.map +1 -1
  176. package/lib/esm/UnitConversion/Parser.js.map +1 -1
  177. package/lib/esm/UnitConversion/UnitConversion.js.map +1 -1
  178. package/lib/esm/UnitConversion/UnitConverter.js.map +1 -1
  179. package/lib/esm/UnitConversion/UnitTree.js.map +1 -1
  180. package/lib/esm/UnitProvider/SchemaUnitProvider.js.map +1 -1
  181. package/lib/esm/Validation/SchemaWalker.js.map +1 -1
  182. package/lib/esm/ecschema-metadata.d.ts +2 -1
  183. package/lib/esm/ecschema-metadata.d.ts.map +1 -1
  184. package/lib/esm/ecschema-metadata.js +2 -1
  185. package/lib/esm/ecschema-metadata.js.map +1 -1
  186. package/lib/esm/utils/SchemaGraph.js.map +1 -1
  187. package/lib/esm/utils/SchemaLoadingController.js.map +1 -1
  188. package/package.json +6 -6
  189. package/lib/cjs/IncrementalLoading/PerformanceLogger.d.ts +0 -60
  190. package/lib/cjs/IncrementalLoading/PerformanceLogger.d.ts.map +0 -1
  191. package/lib/cjs/IncrementalLoading/PerformanceLogger.js +0 -82
  192. package/lib/cjs/IncrementalLoading/PerformanceLogger.js.map +0 -1
  193. package/lib/cjs/SchemaFormatsProvider.d.ts.map +0 -1
  194. package/lib/cjs/SchemaFormatsProvider.js.map +0 -1
  195. package/lib/esm/IncrementalLoading/PerformanceLogger.d.ts +0 -60
  196. package/lib/esm/IncrementalLoading/PerformanceLogger.d.ts.map +0 -1
  197. package/lib/esm/IncrementalLoading/PerformanceLogger.js +0 -78
  198. package/lib/esm/IncrementalLoading/PerformanceLogger.js.map +0 -1
  199. package/lib/esm/SchemaFormatsProvider.d.ts.map +0 -1
  200. package/lib/esm/SchemaFormatsProvider.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ECSqlSchemaLocater.d.ts","sourceRoot":"","sources":["../../../src/IncrementalLoading/ECSqlSchemaLocater.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ECSqlSchemaLocater.d.ts","sourceRoot":"","sources":["../../../src/IncrementalLoading/ECSqlSchemaLocater.ts"],"names":[],"mappings":"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"}
@@ -2,13 +2,15 @@
2
2
  * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
3
3
  * See LICENSE.md in the project root for license terms and full copyright notice.
4
4
  *--------------------------------------------------------------------------------------------*/
5
- import { parseSchemaItemType, SchemaMatchType } from "../ECObjects";
5
+ import { Logger } from "@itwin/core-bentley";
6
+ import { SchemaMatchType } from "../ECObjects";
6
7
  import { SchemaKey } from "../SchemaKey";
7
8
  import { FullSchemaQueries } from "./FullSchemaQueries";
8
9
  import { IncrementalSchemaLocater } from "./IncrementalSchemaLocater";
9
10
  import { SchemaItemQueries } from "./SchemaItemQueries";
10
11
  import { SchemaParser } from "./SchemaParser";
11
12
  import { ecsqlQueries } from "./SchemaStubQueries";
13
+ const LOGGER_CATEGORY = "IncrementalSchemaLoading.Performance";
12
14
  /**
13
15
  * An abstract [[IncrementalSchemaLocater]] implementation for loading
14
16
  * EC [Schema] instances from an iModelDb using ECSql queries.
@@ -41,17 +43,19 @@ export class ECSqlSchemaLocater extends IncrementalSchemaLocater {
41
43
  // to fetch the whole schema json.
42
44
  if (!await this.supportPartialSchemaLoading(context))
43
45
  return this.getSchemaProps(schemaKey);
44
- const start = Date.now();
46
+ const queryStart = Date.now();
45
47
  const schemaProps = this.options.useMultipleQueries
46
48
  ? await this.getFullSchemaMultipleQueries(schemaKey, context)
47
49
  : await this.getFullSchema(schemaKey, context);
48
- this.options.performanceLogger?.logSchema(start, schemaKey.name);
50
+ const queryDuration = Date.now() - queryStart;
51
+ Logger.logTrace(LOGGER_CATEGORY, `Recieved SchemaProps for ${schemaKey.name} in ${queryDuration}ms`, {
52
+ schemaName: schemaKey.name,
53
+ queryMode: this.options.useMultipleQueries ? "parallel" : "single",
54
+ duration: queryDuration,
55
+ });
49
56
  return schemaProps;
50
57
  }
51
58
  ;
52
- /**
53
- * Gets the [[SchemaProps]] without schemaItems.
54
- */
55
59
  /**
56
60
  * Gets the [[SchemaProps]] without schemaItems for the given schema name.
57
61
  * @param schemaName The name of the Schema.
@@ -65,7 +69,8 @@ export class ECSqlSchemaLocater extends IncrementalSchemaLocater {
65
69
  if (schemaRow === undefined)
66
70
  return undefined;
67
71
  const schema = JSON.parse(schemaRow.schema);
68
- return SchemaParser.parse(schema, context);
72
+ const schemaInfos = await this._schemaInfoCache.getSchemasByContext(context) ?? [];
73
+ return SchemaParser.parse(schema, schemaInfos);
69
74
  }
70
75
  /**
71
76
  * Checks if the [[SchemaContext]] has the right Meta Schema version to support the incremental schema loading.
@@ -231,6 +236,8 @@ export class ECSqlSchemaLocater extends IncrementalSchemaLocater {
231
236
  const schemaRows = await this.executeQuery(ecsqlQueries.schemaInfoQuery);
232
237
  return schemaRows.map((schemaRow) => ({
233
238
  alias: schemaRow.alias,
239
+ description: schemaRow.description,
240
+ label: schemaRow.label,
234
241
  schemaKey: SchemaKey.parseString(`${schemaRow.name}.${schemaRow.version}`),
235
242
  references: Array.from(JSON.parse(schemaRow.references), parseSchemaReference),
236
243
  }));
@@ -243,11 +250,17 @@ export class ECSqlSchemaLocater extends IncrementalSchemaLocater {
243
250
  * @internal
244
251
  */
245
252
  async getSchemaPartials(schemaKey, context) {
246
- const [schemaRow] = await this.executeQuery(ecsqlQueries.schemaStubQuery, {
247
- parameters: { schemaName: schemaKey.name },
248
- limit: 1
253
+ const queryStart = Date.now();
254
+ const itemRows = await this.executeQuery(ecsqlQueries.schemaStubQuery, {
255
+ parameters: { schemaName: schemaKey.name }
256
+ });
257
+ const queryDuration = Date.now() - queryStart;
258
+ Logger.logTrace(LOGGER_CATEGORY, `Recieved PartialSchema for ${schemaKey.name} in ${queryDuration}ms`, {
259
+ schemaName: schemaKey.name,
260
+ itemCount: itemRows.length,
261
+ duration: queryDuration,
249
262
  });
250
- if (!schemaRow)
263
+ if (itemRows.length === 0)
251
264
  return undefined;
252
265
  const schemaPartials = [];
253
266
  const addSchema = async (key) => {
@@ -267,32 +280,41 @@ export class ECSqlSchemaLocater extends IncrementalSchemaLocater {
267
280
  if (!schemaStub) {
268
281
  schemaStub = await addSchema(SchemaKey.parseString(`${schemaName}.0.0.0`));
269
282
  }
270
- if (!schemaStub.items) {
271
- Object.assign(schemaStub, { items: {} });
283
+ let items = schemaStub.items;
284
+ if (!items) {
285
+ Object.assign(schemaStub, items = { items: {} });
272
286
  }
273
- const existingItem = schemaStub.items[itemInfo.name] || {};
274
- Object.assign(schemaStub.items, { [itemInfo.name]: Object.assign(existingItem, itemInfo) });
287
+ const existingItem = items[itemInfo.name] || {};
288
+ Object.assign(items, { [itemInfo.name]: Object.assign(existingItem, itemInfo) });
275
289
  };
276
290
  const reviver = (_key, value) => {
277
- if (value === null) {
278
- return undefined;
279
- }
280
- return value;
291
+ return value === null ? undefined : value;
281
292
  };
282
293
  await addSchema(schemaKey);
283
- await parseSchemaItemStubs(schemaKey.name, context, JSON.parse(schemaRow.items, reviver), addItems);
294
+ const schemaInfos = await this._schemaInfoCache.getSchemasByContext(context) ?? [];
295
+ const stubItems = itemRows.map((itemRow) => {
296
+ return JSON.parse(itemRow.item, reviver);
297
+ });
298
+ await parseSchemaItemStubs(schemaKey.name, stubItems, addItems, schemaInfos);
284
299
  return schemaPartials;
285
300
  }
286
301
  async querySchemaItem(context, schemaName, query, schemaType) {
287
302
  const start = Date.now();
288
303
  const itemRows = await this.executeQuery(query, { parameters: { schemaName } });
289
- this.options.performanceLogger?.logSchemaItem(start, schemaName, schemaType, itemRows.length);
304
+ const queryDuration = Date.now() - start;
305
+ Logger.logTrace(LOGGER_CATEGORY, `Recieved rows of ${schemaType} items for ${schemaName} in ${queryDuration}ms`, {
306
+ schemaName,
307
+ itemCount: itemRows.length,
308
+ itemType: schemaType,
309
+ duration: queryDuration,
310
+ });
290
311
  if (itemRows.length === 0)
291
312
  return [];
292
313
  const items = itemRows.map((itemRow) => {
293
314
  return "string" === typeof itemRow.item ? JSON.parse(itemRow.item) : itemRow.item;
294
315
  });
295
- return await SchemaParser.parseSchemaItems(items, schemaName, context) ?? [];
316
+ const schemaInfos = await this._schemaInfoCache.getSchemasByContext(context) ?? [];
317
+ return await SchemaParser.parseSchemaItems(items, schemaName, schemaInfos) ?? [];
296
318
  }
297
319
  async getFullSchema(schemaKey, context) {
298
320
  const schemaRows = await this.executeQuery(FullSchemaQueries.schemaQuery, { parameters: { schemaName: schemaKey.name } });
@@ -304,13 +326,14 @@ export class ECSqlSchemaLocater extends IncrementalSchemaLocater {
304
326
  if (schema.items) {
305
327
  schema.items = schema.items.map((itemRow) => { return itemRow.item; });
306
328
  }
307
- return SchemaParser.parse(schema, context);
329
+ const schemaInfos = await this._schemaInfoCache.getSchemasByContext(context) ?? [];
330
+ return SchemaParser.parse(schema, schemaInfos);
308
331
  }
309
332
  async getFullSchemaMultipleQueries(schemaKey, context) {
310
333
  const schema = await this.getSchemaNoItems(schemaKey.name, context);
311
334
  if (!schema)
312
335
  return undefined;
313
- schema.items = {};
336
+ const items = schema.items || (schema.items = {});
314
337
  await Promise.all([
315
338
  this.getEntities(schemaKey.name, context),
316
339
  this.getMixins(schemaKey.name, context),
@@ -327,9 +350,14 @@ export class ECSqlSchemaLocater extends IncrementalSchemaLocater {
327
350
  this.getPhenomenon(schemaKey.name, context),
328
351
  this.getFormats(schemaKey.name, context)
329
352
  ]).then((itemResults) => {
330
- const flatItemList = itemResults.reduce((acc, item) => acc.concat(item));
353
+ const flatItemList = itemResults.reduce((acc, result) => acc.concat(result));
331
354
  flatItemList.forEach((schemaItem) => {
332
- schema.items[schemaItem.name] = schemaItem;
355
+ if (!schemaItem.name) {
356
+ // This should never be happen, as we query the schema items by name from the database, but since the SchemaProps
357
+ // have name optional, we need the check here to make the compiler happy.
358
+ throw new Error(`SchemaItem with no name encountered in schema ${schemaKey.name}`);
359
+ }
360
+ items[schemaItem.name] = schemaItem;
333
361
  });
334
362
  });
335
363
  return schema;
@@ -338,7 +366,7 @@ export class ECSqlSchemaLocater extends IncrementalSchemaLocater {
338
366
  function parseSchemaReference(referenceName) {
339
367
  return { schemaKey: SchemaKey.parseString(referenceName) };
340
368
  }
341
- async function parseSchemaItemStubs(schemaName, context, itemRows, addItemsHandler) {
369
+ async function parseSchemaItemStubs(schemaName, itemRows, addItemsHandler, schemaInfos) {
342
370
  if (!itemRows || itemRows.length === 0) {
343
371
  return;
344
372
  }
@@ -349,32 +377,32 @@ async function parseSchemaItemStubs(schemaName, context, itemRows, addItemsHandl
349
377
  const currentItem = baseClasses[index--];
350
378
  const baseClassItem = baseClasses[index];
351
379
  const baseClassName = baseClassItem ? `${baseClassItem.schema}.${baseClassItem.name}` : undefined;
352
- const schemaItem = await SchemaParser.parseItem(currentItem, currentItem.schema, context);
380
+ const schemaItem = await SchemaParser.parseItem(currentItem, currentItem.schema, schemaInfos);
353
381
  await addItemsHandler(currentItem.schema, {
354
382
  ...schemaItem,
355
383
  name: schemaItem.name,
356
- schemaItemType: parseSchemaItemType(schemaItem.schemaItemType),
384
+ schemaItemType: schemaItem.schemaItemType,
357
385
  baseClass: baseClassName,
358
386
  });
359
387
  }
360
388
  };
361
389
  for (const itemRow of itemRows) {
362
- const schemaItem = await SchemaParser.parseItem(itemRow, schemaName, context);
390
+ const schemaItem = await SchemaParser.parseItem(itemRow, schemaName, schemaInfos);
363
391
  await addItemsHandler(schemaName, {
364
392
  ...schemaItem,
365
393
  name: schemaItem.name,
366
- schemaItemType: parseSchemaItemType(schemaItem.schemaItemType),
394
+ schemaItemType: schemaItem.schemaItemType,
367
395
  mixins: itemRow.mixins
368
396
  ? itemRow.mixins.map(mixin => { return `${mixin.schema}.${mixin.name}`; })
369
397
  : undefined,
370
398
  });
371
399
  await parseBaseClasses(itemRow.baseClasses);
372
400
  for (const mixinRow of itemRow.mixins || []) {
373
- const mixinItem = await SchemaParser.parseItem(mixinRow, mixinRow.schema, context);
401
+ const mixinItem = await SchemaParser.parseItem(mixinRow, mixinRow.schema, schemaInfos);
374
402
  await addItemsHandler(mixinRow.schema, {
375
403
  ...mixinItem,
376
404
  name: mixinItem.name,
377
- schemaItemType: parseSchemaItemType(mixinItem.schemaItemType),
405
+ schemaItemType: mixinItem.schemaItemType,
378
406
  });
379
407
  await parseBaseClasses(mixinRow.baseClasses);
380
408
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ECSqlSchemaLocater.js","sourceRoot":"","sources":["../../../src/IncrementalLoading/ECSqlSchemaLocater.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n\nimport { SchemaContext } from \"../Context\";\nimport { ConstantProps, CustomAttributeClassProps, EntityClassProps, EnumerationProps, InvertedUnitProps, KindOfQuantityProps, MixinProps,\n PhenomenonProps, PropertyCategoryProps, RelationshipClassProps, SchemaItemFormatProps, SchemaItemProps, SchemaItemUnitProps, SchemaProps,\n StructClassProps, UnitSystemProps } from \"../Deserialization/JsonProps\";\nimport { parseSchemaItemType, SchemaItemType, SchemaMatchType } from \"../ECObjects\";\nimport { SchemaInfo, WithSchemaKey } from \"../Interfaces\";\nimport { SchemaKey } from \"../SchemaKey\";\nimport { FullSchemaQueries } from \"./FullSchemaQueries\";\nimport { IncrementalSchemaLocater, SchemaLocaterOptions } from \"./IncrementalSchemaLocater\";\nimport { PerformanceLogger } from \"./PerformanceLogger\";\nimport { SchemaItemQueries } from \"./SchemaItemQueries\";\nimport { SchemaParser } from \"./SchemaParser\";\nimport { ecsqlQueries } from \"./SchemaStubQueries\";\n\ninterface SchemaItemInfo {\n readonly name: string;\n readonly schemaItemType: SchemaItemType;\n}\n\ninterface SchemaInfoRow {\n readonly name: string;\n readonly version: string;\n readonly alias: string;\n readonly references: string;\n}\n\ninterface SchemaStubRow {\n readonly name: string;\n readonly version: string;\n readonly alias: string;\n readonly displayLabel: string;\n readonly description: string;\n readonly references: string;\n readonly items: string;\n}\n\ninterface BaseClassStubRow {\n readonly schema: string;\n readonly name: string;\n readonly schemaItemType: string;\n readonly modifier: number;\n}\n\ninterface SchemaItemStubRow {\n readonly name: string;\n readonly schemaItemType: string;\n readonly modifier?: number;\n readonly baseClasses?: Array<BaseClassStubRow>;\n readonly mixins?: Array<{\n readonly schema: string,\n readonly name: string;\n readonly schemaItemType: string;\n readonly modifier: number;\n readonly baseClasses?: Array<BaseClassStubRow>\n }>;\n}\n\ninterface SchemaRow {\n schema: string\n}\n\ninterface SchemaItemRow {\n item: string | SchemaItemProps;\n}\n\ntype AddSchemaItemHandler = <T extends SchemaItemInfo>(schemaName: string, itemStub: T) => Promise<void>;\n\ntype MutableSchemaProps = {\n -readonly [K in keyof SchemaProps]: SchemaProps[K]\n};\n\ninterface QueryParameters {\n [parameterName: string]: string | number;\n}\n\n/**\n * Query options used by the ECSqlSchemaLocater.\n * @internal\n */\nexport interface ECSqlQueryOptions {\n parameters?: QueryParameters;\n limit?: number;\n}\n\n/**\n * Defines the [[ECSqlSchemaLocater]] options which determine how each\n * schema is to be loaded. All options are optional.\n * @internal\n */\nexport interface ECSqlSchemaLocaterOptions extends SchemaLocaterOptions {\n /** Query for Schemas using multiple queries. Defaults to false. */\n readonly useMultipleQueries?: boolean;\n /** Collects query execution performance data. Defaults to false. */\n readonly performanceLogger?: PerformanceLogger;\n}\n\n/**\n * An abstract [[IncrementalSchemaLocater]] implementation for loading\n * EC [Schema] instances from an iModelDb using ECSql queries.\n * @internal\n */\nexport abstract class ECSqlSchemaLocater extends IncrementalSchemaLocater {\n /**\n * Gets the [[ECSqlSchemaLocaterOptions]] used by this locater.\n */\n protected override get options(): ECSqlSchemaLocaterOptions {\n return super.options as ECSqlSchemaLocaterOptions;\n }\n\n /**\n * Initializes a new ECSqlSchemaLocater instance.\n * @param options The options used by this Schema locater.\n */\n constructor(options?: ECSqlSchemaLocaterOptions) {\n super(options);\n }\n\n /**\n * Executes the given ECSql query and returns the resulting rows.\n * @param query The ECSql query to execute.\n * @param options Optional arguments to control the query result.\n * @returns A promise that resolves to the resulting rows.\n */\n protected abstract executeQuery<TRow>(query: string, options?: ECSqlQueryOptions): Promise<ReadonlyArray<TRow>>;\n\n /**\n * Gets the [[SchemaProps]] for the given schema key.\n * @param schemaKey The schema key of the schema to be resolved.\n */\n protected abstract getSchemaProps(schemaKey: SchemaKey): Promise<SchemaProps | undefined>\n\n /**\n * Gets the [[SchemaProps]] for the given schema key. This is the full schema json with all elements that are defined\n * in the schema. The schema locater calls this after the stub has been loaded to fully load the schema in the background.\n * @param schemaKey The [[SchemaKey]] of the schema to be resolved.\n * @param context The [[SchemaContext]] to use for resolving references.\n * @internal\n */\n public async getSchemaJson(schemaKey: SchemaKey, context: SchemaContext): Promise<SchemaProps | undefined> {\n // If the meta schema is an earlier version than 4.0.3, we can't use the ECSql query interface to get the schema\n // information required to load the schema entirely. In this case, we fallback to use the ECSchema RPC interface\n // to fetch the whole schema json.\n if (!await this.supportPartialSchemaLoading(context))\n return this.getSchemaProps(schemaKey);\n\n const start = Date.now();\n const schemaProps = this.options.useMultipleQueries\n ? await this.getFullSchemaMultipleQueries(schemaKey, context)\n : await this.getFullSchema(schemaKey, context);\n\n this.options.performanceLogger?.logSchema(start, schemaKey.name);\n\n return schemaProps;\n };\n\n /**\n * Gets the [[SchemaProps]] without schemaItems.\n */\n /**\n * Gets the [[SchemaProps]] without schemaItems for the given schema name.\n * @param schemaName The name of the Schema.\n * @param context The [[SchemaContext]] to use for resolving references.\n * @returns\n * @internal\n */\n public async getSchemaNoItems(schemaName: string, context: SchemaContext): Promise<SchemaProps | undefined> {\n const schemaRows = await this.executeQuery<SchemaRow>(FullSchemaQueries.schemaNoItemsQuery, { parameters: { schemaName } });\n const schemaRow = schemaRows[0];\n if (schemaRow === undefined)\n return undefined;\n\n const schema = JSON.parse(schemaRow.schema) as SchemaProps;\n return SchemaParser.parse(schema, context);\n }\n\n /**\n * Checks if the [[SchemaContext]] has the right Meta Schema version to support the incremental schema loading.\n * @param context The schema context to lookup the meta schema.\n * @returns true if the context has a supported meta schema version, false otherwise.\n */\n protected async supportPartialSchemaLoading(context: SchemaContext): Promise<boolean> {\n const metaSchemaKey = new SchemaKey(\"ECDbMeta\", 4, 0, 3);\n const metaSchemaInfo = await context.getSchemaInfo(metaSchemaKey, SchemaMatchType.LatestWriteCompatible);\n return metaSchemaInfo !== undefined;\n };\n\n /**\n * Gets all the Schema's Entity classes as [[EntityClassProps]] JSON objects.\n * @param schemaName The name of the Schema.\n * @param context The [[SchemaContext]] to which the schema belongs.\n * @returns A promise that resolves to a EntityClassProps array. Maybe empty of no entities are found.\n * @internal\n */\n public async getEntities(schema: string, context: SchemaContext, queryOverride?: string): Promise<EntityClassProps[]> {\n const query = queryOverride ?? FullSchemaQueries.entityQuery;\n return this.querySchemaItem<EntityClassProps>(context, schema, query, \"EntityClass\");\n }\n\n /**\n * Gets all the Schema's Mixin classes as [[MixinProps]] JSON objects.\n * @param schemaName The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a MixinProps array. Maybe empty of no entities are found.\n * @internal\n */\n public async getMixins(schema: string, context: SchemaContext, queryOverride?: string): Promise<MixinProps[]> {\n const query = queryOverride ?? FullSchemaQueries.mixinQuery;\n return this.querySchemaItem<MixinProps>(context, schema, query, \"Mixin\");\n }\n\n /**\n * Gets all the Schema's Relationship classes as [[RelationshipClassProps]] JSON objects.\n * @param schemaName The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a RelationshipClassProps array. Maybe empty if no items are found.\n * @internal\n */\n public async getRelationships(schema: string, context: SchemaContext, queryOverride?: string): Promise<RelationshipClassProps[]> {\n const query = queryOverride ?? FullSchemaQueries.relationshipClassQuery;\n return this.querySchemaItem<RelationshipClassProps>(context, schema, query, \"RelationshipClass\");\n }\n\n /**\n * Gets all the Schema's CustomAttributeClass items as [[CustomAttributeClassProps]] JSON objects.\n * @param schemaName The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a CustomAttributeClassProps array. Maybe empty if not items are found.\n * @internal\n */\n public async getCustomAttributeClasses(schema: string, context: SchemaContext, queryOverride?: string): Promise<CustomAttributeClassProps[]> {\n const query = queryOverride ?? FullSchemaQueries.customAttributeQuery;\n return this.querySchemaItem<CustomAttributeClassProps>(context, schema, query, \"CustomAttributeClass\");\n }\n\n\n /**\n * Gets all the Schema's StructClass items as [[StructClassProps]] JSON objects.\n * @param schemaName The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a StructClassProps array. Maybe empty if not items are found.\n * @internal\n */\n public async getStructs(schema: string, context: SchemaContext, queryOverride?: string): Promise<StructClassProps[]> {\n const query = queryOverride ?? FullSchemaQueries.structQuery;\n return this.querySchemaItem<StructClassProps>(context, schema, query, \"StructClass\");\n }\n\n /**\n * Gets all the Schema's KindOfQuantity items as [[KindOfQuantityProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a KindOfQuantityProps array. Maybe empty if not items are found.\n * @internal\n */\n public async getKindOfQuantities(schema: string, context: SchemaContext): Promise<KindOfQuantityProps[]> {\n return this.querySchemaItem<KindOfQuantityProps>(context, schema, SchemaItemQueries.kindOfQuantity(true), \"KindOfQuantity\");\n }\n\n /**\n * Gets all the Schema's PropertyCategory items as [[PropertyCategoryProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a PropertyCategoryProps array. Maybe empty if not items are found.\n * @internal\n */\n public async getPropertyCategories(schema: string, context: SchemaContext): Promise<PropertyCategoryProps[]> {\n return this.querySchemaItem<PropertyCategoryProps>(context, schema, SchemaItemQueries.propertyCategory(true), \"PropertyCategory\");\n }\n\n /**\n * Gets all the Schema's Enumeration items as [[EnumerationProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a EnumerationProps array. Maybe empty if not items are found.\n * @internal\n */\n public async getEnumerations(schema: string, context: SchemaContext): Promise<EnumerationProps[]> {\n return this.querySchemaItem<EnumerationProps>(context, schema, SchemaItemQueries.enumeration(true), \"Enumeration\");\n }\n\n /**\n * Gets all the Schema's Unit items as [[SchemaItemUnitProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a SchemaItemUnitProps array. Maybe empty if not items are found.\n * @internal\n */\n public async getUnits(schema: string, context: SchemaContext): Promise<SchemaItemUnitProps[]> {\n return this.querySchemaItem<SchemaItemUnitProps>(context, schema, SchemaItemQueries.unit(true), \"Unit\");\n }\n\n /**\n * Gets all the Schema's InvertedUnit items as [[InvertedUnitProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a InvertedUnitProps array. Maybe empty if not items are found.\n * @internal\n */\n public async getInvertedUnits(schema: string, context: SchemaContext): Promise<InvertedUnitProps[]> {\n return this.querySchemaItem<InvertedUnitProps>(context, schema, SchemaItemQueries.invertedUnit(true), \"InvertedUnit\");\n }\n\n /**\n * Gets all the Schema's Constant items as [[ConstantProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a ConstantProps array. Maybe empty if not items are found.\n * @internal\n */\n public async getConstants(schema: string, context: SchemaContext): Promise<ConstantProps[]> {\n return this.querySchemaItem<ConstantProps>(context, schema, SchemaItemQueries.constant(true), \"Constant\");\n }\n\n /**\n * Gets all the Schema's UnitSystem items as [[UnitSystemProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a UnitSystemProps array. Maybe empty if not items are found.\n * @internal\n */\n public async getUnitSystems(schema: string, context: SchemaContext): Promise<UnitSystemProps[]> {\n return this.querySchemaItem<UnitSystemProps>(context, schema, SchemaItemQueries.unitSystem(true), \"UnitSystem\");\n }\n\n /**\n * Gets all the Schema's Phenomenon items as [[PhenomenonProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a PhenomenonProps array. Maybe empty if not items are found.\n * @internal\n */\n public async getPhenomenon(schema: string, context: SchemaContext): Promise<PhenomenonProps[]> {\n return this.querySchemaItem<PhenomenonProps>(context, schema, SchemaItemQueries.phenomenon(true), \"Phenomenon\");\n }\n\n /**\n * Gets all the Schema's Format items as [[SchemaItemFormatProps]] JSON objects.\n * @param schema The name of the Schema.\n * @param context The SchemaContext to which the schema belongs.\n * @returns A promise that resolves to a SchemaItemFormatProps array. Maybe empty if not items are found.\n * @internal\n */\n public async getFormats(schema: string, context: SchemaContext): Promise<SchemaItemFormatProps[]> {\n return this.querySchemaItem<SchemaItemFormatProps>(context, schema, SchemaItemQueries.format(true), \"Format\");\n }\n\n /**\n * Gets [[SchemaInfo]] objects for all schemas including their direct schema references.\n * @internal\n */\n public async loadSchemaInfos(): Promise<ReadonlyArray<SchemaInfo>> {\n const schemaRows = await this.executeQuery<SchemaInfoRow>(ecsqlQueries.schemaInfoQuery);\n return schemaRows.map((schemaRow) => (\n {\n alias: schemaRow.alias,\n schemaKey: SchemaKey.parseString(`${schemaRow.name}.${schemaRow.version}`),\n references: Array.from(JSON.parse(schemaRow.references), parseSchemaReference),\n }\n ));\n }\n\n /**\n * Gets the [[SchemaProps]] to create the basic schema skeleton. Depending on which options are set, the schema items or class hierarchy\n * can be included in the initial fetch.\n * @param schemaKey The [[SchemaKey]] of the schema to be resolved.\n * @returns A promise that resolves to the schema partials, which is an array of [[SchemaProps]].\n * @internal\n */\n public async getSchemaPartials(schemaKey: SchemaKey, context: SchemaContext): Promise<ReadonlyArray<SchemaProps> | undefined> {\n const [schemaRow] = await this.executeQuery<SchemaStubRow>(ecsqlQueries.schemaStubQuery, {\n parameters: { schemaName: schemaKey.name },\n limit: 1\n });\n\n if (!schemaRow)\n return undefined;\n\n const schemaPartials: Array<SchemaProps> = [];\n const addSchema = async (key: SchemaKey) => {\n const stub = await this.createSchemaProps(key, context);\n schemaPartials.push(stub);\n\n if (stub.references) {\n for (const referenceProps of stub.references) {\n if (!schemaPartials.some((schema) => schema.name === referenceProps.name)) {\n await addSchema(SchemaKey.parseString(`${referenceProps.name}.${referenceProps.version}`));\n }\n }\n }\n\n return stub;\n };\n\n const addItems = async (schemaName: string, itemInfo: SchemaItemInfo) => {\n let schemaStub = schemaPartials.find((schema) => schema.name === schemaName);\n if (!schemaStub) {\n schemaStub = await addSchema(SchemaKey.parseString(`${schemaName}.0.0.0`));\n }\n\n if (!schemaStub.items) {\n Object.assign(schemaStub, { items: {} });\n }\n\n const existingItem = schemaStub.items![itemInfo.name] || {};\n Object.assign(schemaStub.items!, { [itemInfo.name]: Object.assign(existingItem, itemInfo) });\n };\n\n const reviver = (_key: string, value: any) => {\n if (value === null) {\n return undefined;\n }\n return value;\n };\n\n await addSchema(schemaKey);\n\n await parseSchemaItemStubs(schemaKey.name, context, JSON.parse(schemaRow.items, reviver), addItems);\n\n return schemaPartials;\n }\n\n private async querySchemaItem<TRow extends SchemaItemProps>(context: SchemaContext, schemaName: string, query: string, schemaType: string): Promise<Array<TRow>> {\n const start = Date.now();\n const itemRows = await this.executeQuery<SchemaItemRow>(query, { parameters: { schemaName } });\n this.options.performanceLogger?.logSchemaItem(start, schemaName, schemaType, itemRows.length);\n\n if (itemRows.length === 0)\n return [];\n\n const items = itemRows.map((itemRow: SchemaItemRow) => {\n return \"string\" === typeof itemRow.item ? JSON.parse(itemRow.item) : itemRow.item;\n });\n\n return await SchemaParser.parseSchemaItems(items, schemaName, context) as Array<TRow> ?? []\n }\n\n private async getFullSchema(schemaKey: SchemaKey, context: SchemaContext): Promise<SchemaProps | undefined> {\n const schemaRows = await this.executeQuery<SchemaRow>(FullSchemaQueries.schemaQuery, { parameters: { schemaName: schemaKey.name } });\n const schemaRow = schemaRows[0];\n if (schemaRow === undefined)\n return undefined;\n\n // Map SchemaItemRow array, [{item: SchemaItemProps}], to array of SchemaItemProps.\n const schema = JSON.parse(schemaRow.schema) as SchemaProps;\n if (schema.items) {\n (schema as any).items = (schema.items as any).map((itemRow: SchemaItemRow) => { return itemRow.item; });\n }\n\n return SchemaParser.parse(schema, context);\n }\n\n private async getFullSchemaMultipleQueries(schemaKey: SchemaKey, context: SchemaContext): Promise<SchemaProps | undefined> {\n const schema = await this.getSchemaNoItems(schemaKey.name, context) as MutableSchemaProps;\n if (!schema)\n return undefined;\n\n schema.items = {};\n await Promise.all([\n this.getEntities(schemaKey.name, context),\n this.getMixins(schemaKey.name, context),\n this.getStructs(schemaKey.name, context),\n this.getRelationships(schemaKey.name, context),\n this.getCustomAttributeClasses(schemaKey.name, context),\n this.getKindOfQuantities(schemaKey.name, context),\n this.getPropertyCategories(schemaKey.name, context),\n this.getEnumerations(schemaKey.name, context),\n this.getUnits(schemaKey.name, context),\n this.getInvertedUnits(schemaKey.name, context),\n this.getUnitSystems(schemaKey.name, context),\n this.getConstants(schemaKey.name, context),\n this.getPhenomenon(schemaKey.name, context),\n this.getFormats(schemaKey.name, context)\n ]).then((itemResults) => {\n const flatItemList = itemResults.reduce((acc, item) => acc.concat(item));\n flatItemList.forEach((schemaItem) => {\n schema.items![schemaItem.name!] = schemaItem;\n });\n });\n\n return schema;\n }\n}\n\nfunction parseSchemaReference(referenceName: string): WithSchemaKey {\n return { schemaKey: SchemaKey.parseString(referenceName) };\n}\n\nasync function parseSchemaItemStubs(schemaName: string, context: SchemaContext, itemRows: Array<SchemaItemStubRow>, addItemsHandler: AddSchemaItemHandler) {\n if (!itemRows || itemRows.length === 0) {\n return;\n }\n\n const parseBaseClasses = async (baseClasses: Array<BaseClassStubRow> | undefined) => {\n if (!baseClasses || baseClasses.length < 2)\n return;\n\n for (let index = baseClasses.length - 1; index >= 0;) {\n const currentItem = baseClasses[index--];\n const baseClassItem = baseClasses[index];\n const baseClassName = baseClassItem ? `${baseClassItem.schema}.${baseClassItem.name}` : undefined;\n\n const schemaItem = await SchemaParser.parseItem(currentItem, currentItem.schema, context);\n await addItemsHandler(currentItem.schema, {\n ...schemaItem,\n name: schemaItem.name!,\n schemaItemType: parseSchemaItemType(schemaItem.schemaItemType!)!,\n baseClass: baseClassName,\n });\n }\n };\n\n for (const itemRow of itemRows) {\n const schemaItem = await SchemaParser.parseItem(itemRow, schemaName, context);\n await addItemsHandler(schemaName, {\n ...schemaItem,\n name: schemaItem.name!,\n schemaItemType: parseSchemaItemType(schemaItem.schemaItemType!)!,\n mixins: itemRow.mixins\n ? itemRow.mixins.map(mixin => { return `${mixin.schema}.${mixin.name}`; })\n : undefined,\n });\n\n await parseBaseClasses(itemRow.baseClasses);\n\n for (const mixinRow of itemRow.mixins || []) {\n const mixinItem = await SchemaParser.parseItem(mixinRow, mixinRow.schema, context);\n await addItemsHandler(mixinRow.schema, {\n ...mixinItem,\n name: mixinItem.name!,\n schemaItemType: parseSchemaItemType(mixinItem.schemaItemType!)!,\n });\n await parseBaseClasses(mixinRow.baseClasses);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"ECSqlSchemaLocater.js","sourceRoot":"","sources":["../../../src/IncrementalLoading/ECSqlSchemaLocater.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n * See LICENSE.md in the project root for license terms and full copyright notice.\r\n *--------------------------------------------------------------------------------------------*/\r\nimport { Logger } from \"@itwin/core-bentley\";\r\nimport { SchemaContext } from \"../Context\";\r\nimport { ConstantProps, CustomAttributeClassProps, EntityClassProps, EnumerationProps, InvertedUnitProps, KindOfQuantityProps, MixinProps,\r\n PhenomenonProps, PropertyCategoryProps, RelationshipClassProps, SchemaItemFormatProps, SchemaItemProps, SchemaItemUnitProps, SchemaProps,\r\n StructClassProps, UnitSystemProps } from \"../Deserialization/JsonProps\";\r\nimport { SchemaItemType, SchemaMatchType } from \"../ECObjects\";\r\nimport { SchemaInfo, WithSchemaKey } from \"../Interfaces\";\r\nimport { SchemaKey } from \"../SchemaKey\";\r\nimport { FullSchemaQueries } from \"./FullSchemaQueries\";\r\nimport { IncrementalSchemaLocater, SchemaLocaterOptions } from \"./IncrementalSchemaLocater\";\r\nimport { SchemaItemQueries } from \"./SchemaItemQueries\";\r\nimport { SchemaParser } from \"./SchemaParser\";\r\nimport { ecsqlQueries } from \"./SchemaStubQueries\";\r\n\r\ninterface SchemaItemInfo {\r\n readonly name: string;\r\n readonly schemaItemType: SchemaItemType;\r\n}\r\n\r\ninterface SchemaInfoRow {\r\n readonly name: string;\r\n readonly version: string;\r\n readonly alias: string;\r\n readonly label: string;\r\n readonly description: string; \r\n readonly references: string;\r\n}\r\n\r\ninterface SchemaStubRow {\r\n readonly item: string;\r\n}\r\n\r\ninterface BaseClassStubRow {\r\n readonly schema: string;\r\n readonly name: string;\r\n readonly schemaItemType: string;\r\n readonly modifier: number;\r\n}\r\n\r\ninterface SchemaItemStubRow {\r\n readonly name: string;\r\n readonly schemaItemType: string;\r\n readonly modifier?: number;\r\n readonly baseClasses?: Array<BaseClassStubRow>;\r\n readonly mixins?: Array<{\r\n readonly schema: string,\r\n readonly name: string;\r\n readonly schemaItemType: string;\r\n readonly modifier: number;\r\n readonly baseClasses?: Array<BaseClassStubRow>\r\n }>;\r\n}\r\n\r\ninterface SchemaRow {\r\n schema: string\r\n}\r\n\r\ninterface SchemaItemRow {\r\n item: string | SchemaItemProps;\r\n}\r\n\r\ntype AddSchemaItemHandler = <T extends SchemaItemInfo>(schemaName: string, itemStub: T) => Promise<void>;\r\n\r\ntype MutableSchemaProps = {\r\n -readonly [K in keyof SchemaProps]: SchemaProps[K];\r\n};\r\n\r\ninterface QueryParameters {\r\n [parameterName: string]: string | number;\r\n}\r\n\r\nconst LOGGER_CATEGORY = \"IncrementalSchemaLoading.Performance\";\r\n\r\n/**\r\n * Query options used by the ECSqlSchemaLocater.\r\n * @internal\r\n */\r\nexport interface ECSqlQueryOptions {\r\n parameters?: QueryParameters;\r\n limit?: number;\r\n}\r\n\r\n/**\r\n * Defines the [[ECSqlSchemaLocater]] options which determine how each\r\n * schema is to be loaded. All options are optional.\r\n * @internal\r\n */\r\nexport interface ECSqlSchemaLocaterOptions extends SchemaLocaterOptions {\r\n /** Query for Schemas using multiple queries. Defaults to false. */\r\n readonly useMultipleQueries?: boolean;\r\n}\r\n\r\n/**\r\n * An abstract [[IncrementalSchemaLocater]] implementation for loading\r\n * EC [Schema] instances from an iModelDb using ECSql queries.\r\n * @internal\r\n */\r\nexport abstract class ECSqlSchemaLocater extends IncrementalSchemaLocater {\r\n /**\r\n * Gets the [[ECSqlSchemaLocaterOptions]] used by this locater.\r\n */\r\n protected override get options(): ECSqlSchemaLocaterOptions {\r\n return super.options as ECSqlSchemaLocaterOptions;\r\n }\r\n\r\n /**\r\n * Initializes a new ECSqlSchemaLocater instance.\r\n * @param options The options used by this Schema locater.\r\n */\r\n constructor(options?: ECSqlSchemaLocaterOptions) {\r\n super(options);\r\n }\r\n\r\n /**\r\n * Executes the given ECSql query and returns the resulting rows.\r\n * @param query The ECSql query to execute.\r\n * @param options Optional arguments to control the query result.\r\n * @returns A promise that resolves to the resulting rows.\r\n */\r\n protected abstract executeQuery<TRow>(query: string, options?: ECSqlQueryOptions): Promise<ReadonlyArray<TRow>>;\r\n\r\n /**\r\n * Gets the [[SchemaProps]] for the given schema key.\r\n * @param schemaKey The schema key of the schema to be resolved.\r\n */\r\n protected abstract getSchemaProps(schemaKey: SchemaKey): Promise<SchemaProps | undefined>\r\n\r\n /**\r\n * Gets the [[SchemaProps]] for the given schema key. This is the full schema json with all elements that are defined\r\n * in the schema. The schema locater calls this after the stub has been loaded to fully load the schema in the background.\r\n * @param schemaKey The [[SchemaKey]] of the schema to be resolved.\r\n * @param context The [[SchemaContext]] to use for resolving references.\r\n * @internal\r\n */\r\n protected async getSchemaJson(schemaKey: SchemaKey, context: SchemaContext): Promise<SchemaProps | undefined> {\r\n // If the meta schema is an earlier version than 4.0.3, we can't use the ECSql query interface to get the schema\r\n // information required to load the schema entirely. In this case, we fallback to use the ECSchema RPC interface\r\n // to fetch the whole schema json.\r\n if (!await this.supportPartialSchemaLoading(context))\r\n return this.getSchemaProps(schemaKey);\r\n\r\n const queryStart = Date.now();\r\n const schemaProps = this.options.useMultipleQueries\r\n ? await this.getFullSchemaMultipleQueries(schemaKey, context)\r\n : await this.getFullSchema(schemaKey, context);\r\n\r\n const queryDuration = Date.now() - queryStart;\r\n Logger.logTrace(LOGGER_CATEGORY, `Recieved SchemaProps for ${schemaKey.name} in ${queryDuration}ms`, {\r\n schemaName: schemaKey.name,\r\n queryMode: this.options.useMultipleQueries ? \"parallel\" : \"single\",\r\n duration: queryDuration,\r\n });\r\n\r\n return schemaProps;\r\n };\r\n\r\n /**\r\n * Gets the [[SchemaProps]] without schemaItems for the given schema name.\r\n * @param schemaName The name of the Schema.\r\n * @param context The [[SchemaContext]] to use for resolving references.\r\n * @returns\r\n * @internal\r\n */\r\n private async getSchemaNoItems(schemaName: string, context: SchemaContext): Promise<SchemaProps | undefined> {\r\n const schemaRows = await this.executeQuery<SchemaRow>(FullSchemaQueries.schemaNoItemsQuery, { parameters: { schemaName } });\r\n const schemaRow = schemaRows[0];\r\n if (schemaRow === undefined)\r\n return undefined;\r\n\r\n const schema = JSON.parse(schemaRow.schema) as SchemaProps;\r\n const schemaInfos = await this._schemaInfoCache.getSchemasByContext(context) ?? [];\r\n return SchemaParser.parse(schema, schemaInfos);\r\n }\r\n\r\n /**\r\n * Checks if the [[SchemaContext]] has the right Meta Schema version to support the incremental schema loading.\r\n * @param context The schema context to lookup the meta schema.\r\n * @returns true if the context has a supported meta schema version, false otherwise.\r\n */\r\n protected async supportPartialSchemaLoading(context: SchemaContext): Promise<boolean> {\r\n const metaSchemaKey = new SchemaKey(\"ECDbMeta\", 4, 0, 3);\r\n const metaSchemaInfo = await context.getSchemaInfo(metaSchemaKey, SchemaMatchType.LatestWriteCompatible);\r\n return metaSchemaInfo !== undefined;\r\n };\r\n\r\n /**\r\n * Gets all the Schema's Entity classes as [[EntityClassProps]] JSON objects.\r\n * @param schemaName The name of the Schema.\r\n * @param context The [[SchemaContext]] to which the schema belongs.\r\n * @returns A promise that resolves to a EntityClassProps array. Maybe empty of no entities are found.\r\n * @internal\r\n */\r\n protected async getEntities(schema: string, context: SchemaContext, queryOverride?: string): Promise<EntityClassProps[]> {\r\n const query = queryOverride ?? FullSchemaQueries.entityQuery;\r\n return this.querySchemaItem<EntityClassProps>(context, schema, query, \"EntityClass\");\r\n }\r\n\r\n /**\r\n * Gets all the Schema's Mixin classes as [[MixinProps]] JSON objects.\r\n * @param schemaName The name of the Schema.\r\n * @param context The SchemaContext to which the schema belongs.\r\n * @returns A promise that resolves to a MixinProps array. Maybe empty of no entities are found.\r\n * @internal\r\n */\r\n protected async getMixins(schema: string, context: SchemaContext, queryOverride?: string): Promise<MixinProps[]> {\r\n const query = queryOverride ?? FullSchemaQueries.mixinQuery;\r\n return this.querySchemaItem<MixinProps>(context, schema, query, \"Mixin\");\r\n }\r\n\r\n /**\r\n * Gets all the Schema's Relationship classes as [[RelationshipClassProps]] JSON objects.\r\n * @param schemaName The name of the Schema.\r\n * @param context The SchemaContext to which the schema belongs.\r\n * @returns A promise that resolves to a RelationshipClassProps array. Maybe empty if no items are found.\r\n * @internal\r\n */\r\n protected async getRelationships(schema: string, context: SchemaContext, queryOverride?: string): Promise<RelationshipClassProps[]> {\r\n const query = queryOverride ?? FullSchemaQueries.relationshipClassQuery;\r\n return this.querySchemaItem<RelationshipClassProps>(context, schema, query, \"RelationshipClass\");\r\n }\r\n\r\n /**\r\n * Gets all the Schema's CustomAttributeClass items as [[CustomAttributeClassProps]] JSON objects.\r\n * @param schemaName The name of the Schema.\r\n * @param context The SchemaContext to which the schema belongs.\r\n * @returns A promise that resolves to a CustomAttributeClassProps array. Maybe empty if not items are found.\r\n * @internal\r\n */\r\n protected async getCustomAttributeClasses(schema: string, context: SchemaContext, queryOverride?: string): Promise<CustomAttributeClassProps[]> {\r\n const query = queryOverride ?? FullSchemaQueries.customAttributeQuery;\r\n return this.querySchemaItem<CustomAttributeClassProps>(context, schema, query, \"CustomAttributeClass\");\r\n }\r\n\r\n\r\n /**\r\n * Gets all the Schema's StructClass items as [[StructClassProps]] JSON objects.\r\n * @param schemaName The name of the Schema.\r\n * @param context The SchemaContext to which the schema belongs.\r\n * @returns A promise that resolves to a StructClassProps array. Maybe empty if not items are found.\r\n * @internal\r\n */\r\n protected async getStructs(schema: string, context: SchemaContext, queryOverride?: string): Promise<StructClassProps[]> {\r\n const query = queryOverride ?? FullSchemaQueries.structQuery;\r\n return this.querySchemaItem<StructClassProps>(context, schema, query, \"StructClass\");\r\n }\r\n\r\n /**\r\n * Gets all the Schema's KindOfQuantity items as [[KindOfQuantityProps]] JSON objects.\r\n * @param schema The name of the Schema.\r\n * @param context The SchemaContext to which the schema belongs.\r\n * @returns A promise that resolves to a KindOfQuantityProps array. Maybe empty if not items are found.\r\n * @internal\r\n */\r\n protected async getKindOfQuantities(schema: string, context: SchemaContext): Promise<KindOfQuantityProps[]> {\r\n return this.querySchemaItem<KindOfQuantityProps>(context, schema, SchemaItemQueries.kindOfQuantity(true), \"KindOfQuantity\");\r\n }\r\n\r\n /**\r\n * Gets all the Schema's PropertyCategory items as [[PropertyCategoryProps]] JSON objects.\r\n * @param schema The name of the Schema.\r\n * @param context The SchemaContext to which the schema belongs.\r\n * @returns A promise that resolves to a PropertyCategoryProps array. Maybe empty if not items are found.\r\n * @internal\r\n */\r\n protected async getPropertyCategories(schema: string, context: SchemaContext): Promise<PropertyCategoryProps[]> {\r\n return this.querySchemaItem<PropertyCategoryProps>(context, schema, SchemaItemQueries.propertyCategory(true), \"PropertyCategory\");\r\n }\r\n\r\n /**\r\n * Gets all the Schema's Enumeration items as [[EnumerationProps]] JSON objects.\r\n * @param schema The name of the Schema.\r\n * @param context The SchemaContext to which the schema belongs.\r\n * @returns A promise that resolves to a EnumerationProps array. Maybe empty if not items are found.\r\n * @internal\r\n */\r\n protected async getEnumerations(schema: string, context: SchemaContext): Promise<EnumerationProps[]> {\r\n return this.querySchemaItem<EnumerationProps>(context, schema, SchemaItemQueries.enumeration(true), \"Enumeration\");\r\n }\r\n\r\n /**\r\n * Gets all the Schema's Unit items as [[SchemaItemUnitProps]] JSON objects.\r\n * @param schema The name of the Schema.\r\n * @param context The SchemaContext to which the schema belongs.\r\n * @returns A promise that resolves to a SchemaItemUnitProps array. Maybe empty if not items are found.\r\n * @internal\r\n */\r\n protected async getUnits(schema: string, context: SchemaContext): Promise<SchemaItemUnitProps[]> {\r\n return this.querySchemaItem<SchemaItemUnitProps>(context, schema, SchemaItemQueries.unit(true), \"Unit\");\r\n }\r\n\r\n /**\r\n * Gets all the Schema's InvertedUnit items as [[InvertedUnitProps]] JSON objects.\r\n * @param schema The name of the Schema.\r\n * @param context The SchemaContext to which the schema belongs.\r\n * @returns A promise that resolves to a InvertedUnitProps array. Maybe empty if not items are found.\r\n * @internal\r\n */\r\n protected async getInvertedUnits(schema: string, context: SchemaContext): Promise<InvertedUnitProps[]> {\r\n return this.querySchemaItem<InvertedUnitProps>(context, schema, SchemaItemQueries.invertedUnit(true), \"InvertedUnit\");\r\n }\r\n\r\n /**\r\n * Gets all the Schema's Constant items as [[ConstantProps]] JSON objects.\r\n * @param schema The name of the Schema.\r\n * @param context The SchemaContext to which the schema belongs.\r\n * @returns A promise that resolves to a ConstantProps array. Maybe empty if not items are found.\r\n * @internal\r\n */\r\n protected async getConstants(schema: string, context: SchemaContext): Promise<ConstantProps[]> {\r\n return this.querySchemaItem<ConstantProps>(context, schema, SchemaItemQueries.constant(true), \"Constant\");\r\n }\r\n\r\n /**\r\n * Gets all the Schema's UnitSystem items as [[UnitSystemProps]] JSON objects.\r\n * @param schema The name of the Schema.\r\n * @param context The SchemaContext to which the schema belongs.\r\n * @returns A promise that resolves to a UnitSystemProps array. Maybe empty if not items are found.\r\n * @internal\r\n */\r\n protected async getUnitSystems(schema: string, context: SchemaContext): Promise<UnitSystemProps[]> {\r\n return this.querySchemaItem<UnitSystemProps>(context, schema, SchemaItemQueries.unitSystem(true), \"UnitSystem\");\r\n }\r\n\r\n /**\r\n * Gets all the Schema's Phenomenon items as [[PhenomenonProps]] JSON objects.\r\n * @param schema The name of the Schema.\r\n * @param context The SchemaContext to which the schema belongs.\r\n * @returns A promise that resolves to a PhenomenonProps array. Maybe empty if not items are found.\r\n * @internal\r\n */\r\n protected async getPhenomenon(schema: string, context: SchemaContext): Promise<PhenomenonProps[]> {\r\n return this.querySchemaItem<PhenomenonProps>(context, schema, SchemaItemQueries.phenomenon(true), \"Phenomenon\");\r\n }\r\n\r\n /**\r\n * Gets all the Schema's Format items as [[SchemaItemFormatProps]] JSON objects.\r\n * @param schema The name of the Schema.\r\n * @param context The SchemaContext to which the schema belongs.\r\n * @returns A promise that resolves to a SchemaItemFormatProps array. Maybe empty if not items are found.\r\n * @internal\r\n */\r\n protected async getFormats(schema: string, context: SchemaContext): Promise<SchemaItemFormatProps[]> {\r\n return this.querySchemaItem<SchemaItemFormatProps>(context, schema, SchemaItemQueries.format(true), \"Format\");\r\n }\r\n\r\n /**\r\n * Gets [[SchemaInfo]] objects for all schemas including their direct schema references.\r\n * @internal\r\n */\r\n protected async loadSchemaInfos(): Promise<ReadonlyArray<SchemaInfo>> {\r\n const schemaRows = await this.executeQuery<SchemaInfoRow>(ecsqlQueries.schemaInfoQuery);\r\n return schemaRows.map((schemaRow) => (\r\n {\r\n alias: schemaRow.alias,\r\n description: schemaRow.description,\r\n label: schemaRow.label,\r\n schemaKey: SchemaKey.parseString(`${schemaRow.name}.${schemaRow.version}`),\r\n references: Array.from(JSON.parse(schemaRow.references), parseSchemaReference),\r\n }\r\n ));\r\n }\r\n\r\n /**\r\n * Gets the [[SchemaProps]] to create the basic schema skeleton. Depending on which options are set, the schema items or class hierarchy\r\n * can be included in the initial fetch.\r\n * @param schemaKey The [[SchemaKey]] of the schema to be resolved.\r\n * @returns A promise that resolves to the schema partials, which is an array of [[SchemaProps]].\r\n * @internal\r\n */\r\n protected async getSchemaPartials(schemaKey: SchemaKey, context: SchemaContext): Promise<ReadonlyArray<SchemaProps> | undefined> {\r\n const queryStart = Date.now();\r\n const itemRows = await this.executeQuery<SchemaStubRow>(ecsqlQueries.schemaStubQuery, {\r\n parameters: { schemaName: schemaKey.name }\r\n });\r\n\r\n const queryDuration = Date.now() - queryStart;\r\n Logger.logTrace(LOGGER_CATEGORY, `Recieved PartialSchema for ${schemaKey.name} in ${queryDuration}ms`, {\r\n schemaName: schemaKey.name,\r\n itemCount: itemRows.length,\r\n duration: queryDuration,\r\n });\r\n\r\n if (itemRows.length === 0)\r\n return undefined;\r\n\r\n const schemaPartials: Array<SchemaProps> = [];\r\n const addSchema = async (key: SchemaKey) => {\r\n const stub = await this.createSchemaProps(key, context);\r\n schemaPartials.push(stub);\r\n\r\n if (stub.references) {\r\n for (const referenceProps of stub.references) {\r\n if (!schemaPartials.some((schema) => schema.name === referenceProps.name)) {\r\n await addSchema(SchemaKey.parseString(`${referenceProps.name}.${referenceProps.version}`));\r\n }\r\n }\r\n }\r\n\r\n return stub;\r\n };\r\n\r\n const addItems = async (schemaName: string, itemInfo: SchemaItemInfo) => {\r\n let schemaStub = schemaPartials.find((schema) => schema.name === schemaName);\r\n if (!schemaStub) {\r\n schemaStub = await addSchema(SchemaKey.parseString(`${schemaName}.0.0.0`));\r\n }\r\n\r\n let items = schemaStub.items;\r\n if (!items) {\r\n Object.assign(schemaStub, items = { items: {} });\r\n }\r\n\r\n const existingItem = items[itemInfo.name] || {};\r\n Object.assign(items, { [itemInfo.name]: Object.assign(existingItem, itemInfo) });\r\n };\r\n\r\n const reviver = (_key: string, value: any) => {\r\n return value === null ? undefined : value;\r\n };\r\n\r\n await addSchema(schemaKey);\r\n\r\n const schemaInfos = await this._schemaInfoCache.getSchemasByContext(context) ?? [];\r\n const stubItems = itemRows.map((itemRow) => {\r\n return JSON.parse(itemRow.item, reviver) as SchemaItemStubRow;\r\n });\r\n await parseSchemaItemStubs(schemaKey.name, stubItems, addItems, schemaInfos);\r\n\r\n return schemaPartials;\r\n }\r\n\r\n private async querySchemaItem<TRow extends SchemaItemProps>(context: SchemaContext, schemaName: string, query: string, schemaType: string): Promise<Array<TRow>> {\r\n const start = Date.now();\r\n const itemRows = await this.executeQuery<SchemaItemRow>(query, { parameters: { schemaName } });\r\n\r\n const queryDuration = Date.now() - start;\r\n Logger.logTrace(LOGGER_CATEGORY, `Recieved rows of ${schemaType} items for ${schemaName} in ${queryDuration}ms`, {\r\n schemaName,\r\n itemCount: itemRows.length,\r\n itemType: schemaType,\r\n duration: queryDuration,\r\n });\r\n\r\n if (itemRows.length === 0)\r\n return [];\r\n\r\n const items = itemRows.map((itemRow: SchemaItemRow) => {\r\n return \"string\" === typeof itemRow.item ? JSON.parse(itemRow.item) : itemRow.item;\r\n });\r\n\r\n const schemaInfos = await this._schemaInfoCache.getSchemasByContext(context) ?? [];\r\n return await SchemaParser.parseSchemaItems(items, schemaName, schemaInfos) as Array<TRow> ?? []\r\n }\r\n\r\n private async getFullSchema(schemaKey: SchemaKey, context: SchemaContext): Promise<SchemaProps | undefined> {\r\n const schemaRows = await this.executeQuery<SchemaRow>(FullSchemaQueries.schemaQuery, { parameters: { schemaName: schemaKey.name } });\r\n const schemaRow = schemaRows[0];\r\n if (schemaRow === undefined)\r\n return undefined;\r\n\r\n // Map SchemaItemRow array, [{item: SchemaItemProps}], to array of SchemaItemProps.\r\n const schema = JSON.parse(schemaRow.schema) as SchemaProps;\r\n if (schema.items) {\r\n (schema as any).items = (schema.items as any).map((itemRow: SchemaItemRow) => { return itemRow.item; });\r\n }\r\n\r\n const schemaInfos = await this._schemaInfoCache.getSchemasByContext(context) ?? [];\r\n return SchemaParser.parse(schema, schemaInfos);\r\n }\r\n\r\n private async getFullSchemaMultipleQueries(schemaKey: SchemaKey, context: SchemaContext): Promise<SchemaProps | undefined> {\r\n const schema = await this.getSchemaNoItems(schemaKey.name, context) as MutableSchemaProps;\r\n if (!schema)\r\n return undefined;\r\n\r\n const items = schema.items || (schema.items = {});\r\n await Promise.all([\r\n this.getEntities(schemaKey.name, context),\r\n this.getMixins(schemaKey.name, context),\r\n this.getStructs(schemaKey.name, context),\r\n this.getRelationships(schemaKey.name, context),\r\n this.getCustomAttributeClasses(schemaKey.name, context),\r\n this.getKindOfQuantities(schemaKey.name, context),\r\n this.getPropertyCategories(schemaKey.name, context),\r\n this.getEnumerations(schemaKey.name, context),\r\n this.getUnits(schemaKey.name, context),\r\n this.getInvertedUnits(schemaKey.name, context),\r\n this.getUnitSystems(schemaKey.name, context),\r\n this.getConstants(schemaKey.name, context),\r\n this.getPhenomenon(schemaKey.name, context),\r\n this.getFormats(schemaKey.name, context)\r\n ]).then((itemResults) => {\r\n const flatItemList = itemResults.reduce((acc, result) => acc.concat(result));\r\n flatItemList.forEach((schemaItem) => {\r\n if(!schemaItem.name) {\r\n // This should never be happen, as we query the schema items by name from the database, but since the SchemaProps\r\n // have name optional, we need the check here to make the compiler happy.\r\n throw new Error(`SchemaItem with no name encountered in schema ${schemaKey.name}`);\r\n }\r\n items[schemaItem.name] = schemaItem;\r\n });\r\n });\r\n\r\n return schema;\r\n }\r\n}\r\n\r\nfunction parseSchemaReference(referenceName: string): WithSchemaKey {\r\n return { schemaKey: SchemaKey.parseString(referenceName) };\r\n}\r\n\r\nasync function parseSchemaItemStubs(schemaName: string, itemRows: Array<SchemaItemStubRow>, addItemsHandler: AddSchemaItemHandler, schemaInfos: Iterable<SchemaInfo>) {\r\n if (!itemRows || itemRows.length === 0) {\r\n return;\r\n }\r\n\r\n const parseBaseClasses = async (baseClasses: Array<BaseClassStubRow> | undefined) => {\r\n if (!baseClasses || baseClasses.length < 2)\r\n return;\r\n\r\n for (let index = baseClasses.length - 1; index >= 0;) {\r\n const currentItem = baseClasses[index--];\r\n const baseClassItem = baseClasses[index];\r\n const baseClassName = baseClassItem ? `${baseClassItem.schema}.${baseClassItem.name}` : undefined;\r\n\r\n const schemaItem = await SchemaParser.parseItem(currentItem, currentItem.schema, schemaInfos);\r\n await addItemsHandler(currentItem.schema, {\r\n ...schemaItem,\r\n name: schemaItem.name,\r\n schemaItemType: schemaItem.schemaItemType,\r\n baseClass: baseClassName,\r\n });\r\n }\r\n };\r\n\r\n for (const itemRow of itemRows) {\r\n const schemaItem = await SchemaParser.parseItem(itemRow, schemaName, schemaInfos);\r\n await addItemsHandler(schemaName, {\r\n ...schemaItem,\r\n name: schemaItem.name,\r\n schemaItemType: schemaItem.schemaItemType,\r\n mixins: itemRow.mixins\r\n ? itemRow.mixins.map(mixin => { return `${mixin.schema}.${mixin.name}`; })\r\n : undefined,\r\n });\r\n\r\n await parseBaseClasses(itemRow.baseClasses);\r\n\r\n for (const mixinRow of itemRow.mixins || []) {\r\n const mixinItem = await SchemaParser.parseItem(mixinRow, mixinRow.schema, schemaInfos);\r\n await addItemsHandler(mixinRow.schema, {\r\n ...mixinItem,\r\n name: mixinItem.name,\r\n schemaItemType: mixinItem.schemaItemType,\r\n });\r\n await parseBaseClasses(mixinRow.baseClasses);\r\n }\r\n }\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"FullSchemaQueries.d.ts","sourceRoot":"","sources":["../../../src/IncrementalLoading/FullSchemaQueries.ts"],"names":[],"mappings":"AA0mBA;;;GAGG;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;CAQ7B,CAAC"}
1
+ {"version":3,"file":"FullSchemaQueries.d.ts","sourceRoot":"","sources":["../../../src/IncrementalLoading/FullSchemaQueries.ts"],"names":[],"mappings":"AA2mBA;;;GAGG;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;CAQ7B,CAAC"}