@itwin/ecschema-metadata 5.1.0-dev.9 → 5.2.0-dev.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +74 -1
- package/lib/cjs/Context.d.ts +1 -1
- package/lib/cjs/Context.js +1 -1
- package/lib/cjs/Context.js.map +1 -1
- package/lib/cjs/Deserialization/Helper.d.ts +30 -11
- package/lib/cjs/Deserialization/Helper.d.ts.map +1 -1
- package/lib/cjs/Deserialization/Helper.js +124 -96
- package/lib/cjs/Deserialization/Helper.js.map +1 -1
- package/lib/cjs/Deserialization/SchemaGraphUtil.d.ts +12 -3
- package/lib/cjs/Deserialization/SchemaGraphUtil.d.ts.map +1 -1
- package/lib/cjs/Deserialization/SchemaGraphUtil.js +36 -23
- package/lib/cjs/Deserialization/SchemaGraphUtil.js.map +1 -1
- package/lib/cjs/Deserialization/XmlParser.d.ts.map +1 -1
- package/lib/cjs/Deserialization/XmlParser.js +14 -5
- package/lib/cjs/Deserialization/XmlParser.js.map +1 -1
- package/lib/cjs/Deserialization/XmlSerializationUtils.js +1 -1
- package/lib/cjs/Deserialization/XmlSerializationUtils.js.map +1 -1
- package/lib/cjs/ECName.js +1 -1
- package/lib/cjs/ECName.js.map +1 -1
- package/lib/cjs/ECObjects.d.ts +1 -1
- package/lib/cjs/ECObjects.js +2 -2
- package/lib/cjs/ECObjects.js.map +1 -1
- package/lib/cjs/IncrementalLoading/ClassParsers.d.ts +60 -0
- package/lib/cjs/IncrementalLoading/ClassParsers.d.ts.map +1 -0
- package/lib/cjs/IncrementalLoading/ClassParsers.js +111 -0
- package/lib/cjs/IncrementalLoading/ClassParsers.js.map +1 -0
- package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.d.ts +211 -0
- package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.d.ts.map +1 -0
- package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.js +387 -0
- package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.js.map +1 -0
- package/lib/cjs/IncrementalLoading/FullSchemaQueries.d.ts +14 -0
- package/lib/cjs/IncrementalLoading/FullSchemaQueries.d.ts.map +1 -0
- package/lib/cjs/IncrementalLoading/FullSchemaQueries.js +609 -0
- package/lib/cjs/IncrementalLoading/FullSchemaQueries.js.map +1 -0
- package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.d.ts +109 -0
- package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.d.ts.map +1 -0
- package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.js +219 -0
- package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.js.map +1 -0
- package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.d.ts +36 -0
- package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.d.ts.map +1 -0
- package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.js +77 -0
- package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.js.map +1 -0
- package/lib/cjs/IncrementalLoading/PerformanceLogger.d.ts +60 -0
- package/lib/cjs/IncrementalLoading/PerformanceLogger.d.ts.map +1 -0
- package/lib/cjs/IncrementalLoading/PerformanceLogger.js +82 -0
- package/lib/cjs/IncrementalLoading/PerformanceLogger.js.map +1 -0
- package/lib/cjs/IncrementalLoading/SchemaItemParsers.d.ts +51 -0
- package/lib/cjs/IncrementalLoading/SchemaItemParsers.d.ts.map +1 -0
- package/lib/cjs/IncrementalLoading/SchemaItemParsers.js +122 -0
- package/lib/cjs/IncrementalLoading/SchemaItemParsers.js.map +1 -0
- package/lib/cjs/IncrementalLoading/SchemaItemQueries.d.ts +16 -0
- package/lib/cjs/IncrementalLoading/SchemaItemQueries.d.ts.map +1 -0
- package/lib/cjs/IncrementalLoading/SchemaItemQueries.js +308 -0
- package/lib/cjs/IncrementalLoading/SchemaItemQueries.js.map +1 -0
- package/lib/cjs/IncrementalLoading/SchemaParser.d.ts +42 -0
- package/lib/cjs/IncrementalLoading/SchemaParser.d.ts.map +1 -0
- package/lib/cjs/IncrementalLoading/SchemaParser.js +109 -0
- package/lib/cjs/IncrementalLoading/SchemaParser.js.map +1 -0
- package/lib/cjs/IncrementalLoading/SchemaStubQueries.d.ts +12 -0
- package/lib/cjs/IncrementalLoading/SchemaStubQueries.d.ts.map +1 -0
- package/lib/cjs/IncrementalLoading/SchemaStubQueries.js +365 -0
- package/lib/cjs/IncrementalLoading/SchemaStubQueries.js.map +1 -0
- package/lib/cjs/Metadata/Class.d.ts +5 -16
- package/lib/cjs/Metadata/Class.d.ts.map +1 -1
- package/lib/cjs/Metadata/Class.js +68 -68
- package/lib/cjs/Metadata/Class.js.map +1 -1
- package/lib/cjs/Metadata/CustomAttribute.d.ts +7 -1
- package/lib/cjs/Metadata/CustomAttribute.d.ts.map +1 -1
- package/lib/cjs/Metadata/CustomAttribute.js.map +1 -1
- package/lib/cjs/Metadata/CustomAttributeClass.d.ts +1 -1
- package/lib/cjs/Metadata/CustomAttributeClass.js +1 -1
- package/lib/cjs/Metadata/CustomAttributeClass.js.map +1 -1
- package/lib/cjs/Metadata/EntityClass.d.ts +6 -6
- package/lib/cjs/Metadata/EntityClass.d.ts.map +1 -1
- package/lib/cjs/Metadata/EntityClass.js +48 -26
- package/lib/cjs/Metadata/EntityClass.js.map +1 -1
- package/lib/cjs/Metadata/Format.d.ts +5 -0
- package/lib/cjs/Metadata/Format.d.ts.map +1 -1
- package/lib/cjs/Metadata/Format.js +7 -0
- package/lib/cjs/Metadata/Format.js.map +1 -1
- package/lib/cjs/Metadata/KindOfQuantity.js.map +1 -1
- package/lib/cjs/Metadata/Schema.d.ts +10 -0
- package/lib/cjs/Metadata/Schema.d.ts.map +1 -1
- package/lib/cjs/Metadata/Schema.js +13 -0
- package/lib/cjs/Metadata/Schema.js.map +1 -1
- package/lib/cjs/Metadata/SchemaItem.d.ts +10 -0
- package/lib/cjs/Metadata/SchemaItem.d.ts.map +1 -1
- package/lib/cjs/Metadata/SchemaItem.js +13 -0
- package/lib/cjs/Metadata/SchemaItem.js.map +1 -1
- package/lib/cjs/SchemaFormatsProvider.d.ts +4 -3
- package/lib/cjs/SchemaFormatsProvider.d.ts.map +1 -1
- package/lib/cjs/SchemaFormatsProvider.js +60 -17
- package/lib/cjs/SchemaFormatsProvider.js.map +1 -1
- package/lib/cjs/SchemaLoader.d.ts +4 -1
- package/lib/cjs/SchemaLoader.d.ts.map +1 -1
- package/lib/cjs/SchemaLoader.js +4 -1
- package/lib/cjs/SchemaLoader.js.map +1 -1
- package/lib/cjs/ecschema-metadata.d.ts +2 -0
- package/lib/cjs/ecschema-metadata.d.ts.map +1 -1
- package/lib/cjs/ecschema-metadata.js +2 -0
- package/lib/cjs/ecschema-metadata.js.map +1 -1
- package/lib/cjs/utils/SchemaLoadingController.d.ts +37 -0
- package/lib/cjs/utils/SchemaLoadingController.d.ts.map +1 -0
- package/lib/cjs/utils/SchemaLoadingController.js +65 -0
- package/lib/cjs/utils/SchemaLoadingController.js.map +1 -0
- package/lib/esm/Context.d.ts +1 -1
- package/lib/esm/Context.js +1 -1
- package/lib/esm/Context.js.map +1 -1
- package/lib/esm/Deserialization/Helper.d.ts +30 -11
- package/lib/esm/Deserialization/Helper.d.ts.map +1 -1
- package/lib/esm/Deserialization/Helper.js +124 -96
- package/lib/esm/Deserialization/Helper.js.map +1 -1
- package/lib/esm/Deserialization/SchemaGraphUtil.d.ts +12 -3
- package/lib/esm/Deserialization/SchemaGraphUtil.d.ts.map +1 -1
- package/lib/esm/Deserialization/SchemaGraphUtil.js +36 -23
- package/lib/esm/Deserialization/SchemaGraphUtil.js.map +1 -1
- package/lib/esm/Deserialization/XmlParser.d.ts.map +1 -1
- package/lib/esm/Deserialization/XmlParser.js +14 -5
- package/lib/esm/Deserialization/XmlParser.js.map +1 -1
- package/lib/esm/Deserialization/XmlSerializationUtils.js +1 -1
- package/lib/esm/Deserialization/XmlSerializationUtils.js.map +1 -1
- package/lib/esm/ECName.js +1 -1
- package/lib/esm/ECName.js.map +1 -1
- package/lib/esm/ECObjects.d.ts +1 -1
- package/lib/esm/ECObjects.js +2 -2
- package/lib/esm/ECObjects.js.map +1 -1
- package/lib/esm/IncrementalLoading/ClassParsers.d.ts +60 -0
- package/lib/esm/IncrementalLoading/ClassParsers.d.ts.map +1 -0
- package/lib/esm/IncrementalLoading/ClassParsers.js +104 -0
- package/lib/esm/IncrementalLoading/ClassParsers.js.map +1 -0
- package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.d.ts +211 -0
- package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.d.ts.map +1 -0
- package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.js +383 -0
- package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.js.map +1 -0
- package/lib/esm/IncrementalLoading/FullSchemaQueries.d.ts +14 -0
- package/lib/esm/IncrementalLoading/FullSchemaQueries.d.ts.map +1 -0
- package/lib/esm/IncrementalLoading/FullSchemaQueries.js +606 -0
- package/lib/esm/IncrementalLoading/FullSchemaQueries.js.map +1 -0
- package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.d.ts +109 -0
- package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.d.ts.map +1 -0
- package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.js +215 -0
- package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.js.map +1 -0
- package/lib/esm/IncrementalLoading/IncrementalSchemaReader.d.ts +36 -0
- package/lib/esm/IncrementalLoading/IncrementalSchemaReader.d.ts.map +1 -0
- package/lib/esm/IncrementalLoading/IncrementalSchemaReader.js +73 -0
- package/lib/esm/IncrementalLoading/IncrementalSchemaReader.js.map +1 -0
- package/lib/esm/IncrementalLoading/PerformanceLogger.d.ts +60 -0
- package/lib/esm/IncrementalLoading/PerformanceLogger.d.ts.map +1 -0
- package/lib/esm/IncrementalLoading/PerformanceLogger.js +78 -0
- package/lib/esm/IncrementalLoading/PerformanceLogger.js.map +1 -0
- package/lib/esm/IncrementalLoading/SchemaItemParsers.d.ts +51 -0
- package/lib/esm/IncrementalLoading/SchemaItemParsers.d.ts.map +1 -0
- package/lib/esm/IncrementalLoading/SchemaItemParsers.js +117 -0
- package/lib/esm/IncrementalLoading/SchemaItemParsers.js.map +1 -0
- package/lib/esm/IncrementalLoading/SchemaItemQueries.d.ts +16 -0
- package/lib/esm/IncrementalLoading/SchemaItemQueries.d.ts.map +1 -0
- package/lib/esm/IncrementalLoading/SchemaItemQueries.js +305 -0
- package/lib/esm/IncrementalLoading/SchemaItemQueries.js.map +1 -0
- package/lib/esm/IncrementalLoading/SchemaParser.d.ts +42 -0
- package/lib/esm/IncrementalLoading/SchemaParser.d.ts.map +1 -0
- package/lib/esm/IncrementalLoading/SchemaParser.js +104 -0
- package/lib/esm/IncrementalLoading/SchemaParser.js.map +1 -0
- package/lib/esm/IncrementalLoading/SchemaStubQueries.d.ts +12 -0
- package/lib/esm/IncrementalLoading/SchemaStubQueries.d.ts.map +1 -0
- package/lib/esm/IncrementalLoading/SchemaStubQueries.js +359 -0
- package/lib/esm/IncrementalLoading/SchemaStubQueries.js.map +1 -0
- package/lib/esm/Metadata/Class.d.ts +5 -16
- package/lib/esm/Metadata/Class.d.ts.map +1 -1
- package/lib/esm/Metadata/Class.js +68 -68
- package/lib/esm/Metadata/Class.js.map +1 -1
- package/lib/esm/Metadata/CustomAttribute.d.ts +7 -1
- package/lib/esm/Metadata/CustomAttribute.d.ts.map +1 -1
- package/lib/esm/Metadata/CustomAttribute.js.map +1 -1
- package/lib/esm/Metadata/CustomAttributeClass.d.ts +1 -1
- package/lib/esm/Metadata/CustomAttributeClass.js +1 -1
- package/lib/esm/Metadata/CustomAttributeClass.js.map +1 -1
- package/lib/esm/Metadata/EntityClass.d.ts +6 -6
- package/lib/esm/Metadata/EntityClass.d.ts.map +1 -1
- package/lib/esm/Metadata/EntityClass.js +48 -26
- package/lib/esm/Metadata/EntityClass.js.map +1 -1
- package/lib/esm/Metadata/Format.d.ts +5 -0
- package/lib/esm/Metadata/Format.d.ts.map +1 -1
- package/lib/esm/Metadata/Format.js +7 -0
- package/lib/esm/Metadata/Format.js.map +1 -1
- package/lib/esm/Metadata/KindOfQuantity.js.map +1 -1
- package/lib/esm/Metadata/Schema.d.ts +10 -0
- package/lib/esm/Metadata/Schema.d.ts.map +1 -1
- package/lib/esm/Metadata/Schema.js +13 -0
- package/lib/esm/Metadata/Schema.js.map +1 -1
- package/lib/esm/Metadata/SchemaItem.d.ts +10 -0
- package/lib/esm/Metadata/SchemaItem.d.ts.map +1 -1
- package/lib/esm/Metadata/SchemaItem.js +13 -0
- package/lib/esm/Metadata/SchemaItem.js.map +1 -1
- package/lib/esm/SchemaFormatsProvider.d.ts +4 -3
- package/lib/esm/SchemaFormatsProvider.d.ts.map +1 -1
- package/lib/esm/SchemaFormatsProvider.js +61 -18
- package/lib/esm/SchemaFormatsProvider.js.map +1 -1
- package/lib/esm/SchemaLoader.d.ts +4 -1
- package/lib/esm/SchemaLoader.d.ts.map +1 -1
- package/lib/esm/SchemaLoader.js +4 -1
- package/lib/esm/SchemaLoader.js.map +1 -1
- package/lib/esm/ecschema-metadata.d.ts +2 -0
- package/lib/esm/ecschema-metadata.d.ts.map +1 -1
- package/lib/esm/ecschema-metadata.js +2 -0
- package/lib/esm/ecschema-metadata.js.map +1 -1
- package/lib/esm/utils/SchemaLoadingController.d.ts +37 -0
- package/lib/esm/utils/SchemaLoadingController.d.ts.map +1 -0
- package/lib/esm/utils/SchemaLoadingController.js +61 -0
- package/lib/esm/utils/SchemaLoadingController.js.map +1 -0
- package/package.json +15 -10
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PerformanceLogger.js","sourceRoot":"","sources":["../../../src/IncrementalLoading/PerformanceLogger.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAsBhG;;;;GAIG;AACH,MAAM,OAAO,iBAAiB;IACpB,YAAY,GAA6C,IAAI,GAAG,EAAE,CAAC;IACnE,MAAM,CAAS;IAEvB,4CAA4C;IACrC,cAAc,GAAG,KAAK,CAAC;IAE9B;;;OAGG;IACH,YAAY,KAAc;QACxB,IAAI,CAAC,MAAM,GAAG,KAAK,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;;;OAIG;IACI,SAAS,CAAC,SAAiB,EAAE,UAAkB;QACpD,IAAI,IAAI,CAAC,cAAc;YACrB,OAAO;QAET,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC;QAElD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAErE,cAAc,CAAC,QAAQ,GAAG,QAAQ,CAAC;IACrC,CAAC;IAED;;;;;;OAMG;IACI,aAAa,CAAC,SAAiB,EAAE,UAAkB,EAAE,cAAsB,EAAE,SAAiB;QACnG,IAAI,IAAI,CAAC,cAAc;YACrB,OAAO;QAET,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC;QAElD,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAErE,IAAI,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,mGAAmG,CAAC,CAAC;QAEvH,cAAc,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED;;OAEG;IACI,SAAS;QACd,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAEO,YAAY,CAAC,MAAc;QACjC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAgC,CAAC;IACtE,CAAC;IAEO,iBAAiB,CAAC,SAAsC,EAAE,UAAkB;QAClF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;YAC5B,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC,CAAA;QAEzD,OAAO,SAAS,CAAC,GAAG,CAAC,UAAU,CAAmB,CAAC;IACrD,CAAC;CACF","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\n/**\n * Contains the properties needed to track load times\n * for SchemaItem queries.\n * @internal\n */\nexport interface SchemaItemLoadData {\n loadTime: number,\n itemCount: number\n}\n\n/**\n * Contains the properties needed to track load times\n * for Schema queries.\n * @internal\n */\nexport interface SchemaLoadData {\n loadTime?: number,\n schemaItemMap: Map<string, SchemaItemLoadData>;\n}\n\n/**\n * Utility class used to log query load times for Schema and\n * SchemaItem queries.\n * @internal\n */\nexport class PerformanceLogger {\n private _iModelItems: Map<string, Map<string, SchemaLoadData>> = new Map();\n private _label: string;\n\n // flag that controls if logging is enabled.\n public disableLogging = false;\n\n /**\n * Initializes a new PerformanceLogger instance.\n * @param label Arbitrary label used to tag this logging session (ex. IModel name)\n */\n constructor(label?: string) {\n this._label = label || \"\";\n }\n\n /**\n * Gets the Map of logged Schema entries. The Map key is the iModel name. The Map\n * value is a second Map whose key is a Schema name and value is a SchemaLoadData\n * object.\n */\n public get logItems(): Map<string, Map<string, SchemaLoadData>> {\n return this._iModelItems;\n }\n\n /**\n * Adds a new log entry to the Schema Map.\n * @param startTime The start time of the entry to be logged (end time/duration is handled in this method).\n * @param schemaName The Schema being queried.\n */\n public logSchema(startTime: number, schemaName: string) {\n if (this.disableLogging)\n return;\n\n const loadTime = new Date().getTime() - startTime;\n\n const schemaMap = this.getSchemaMap(this._label);\n const schemaLoadData = this.getSchemaLoadData(schemaMap, schemaName);\n\n schemaLoadData.loadTime = loadTime;\n }\n\n /**\n * Adds a new log entry to the SchemaItem Map.\n * @param startTime The start time of the entry to be logged (end time/duration is handled in this method).\n * @param schemaName The name of the Schema being queried.\n * @param schemaItemType The SchemaItemType name of the type being queried.\n * @param itemCount The number of items retrieved in the query.\n */\n public logSchemaItem(startTime: number, schemaName: string, schemaItemType: string, itemCount: number) {\n if (this.disableLogging)\n return;\n\n const loadTime = new Date().getTime() - startTime;\n\n const schemaMap = this.getSchemaMap(this._label);\n const schemaLoadData = this.getSchemaLoadData(schemaMap, schemaName);\n\n if (schemaLoadData.schemaItemMap.has(schemaItemType))\n throw new Error(\"There should not be a multiple load times for a given iModel, Schema, SchemaItemType combination.\");\n\n schemaLoadData.schemaItemMap.set(schemaItemType, { loadTime, itemCount });\n }\n\n /**\n * Clears all log entries from the Map.\n */\n public clearLogs() {\n this._iModelItems.clear();\n }\n\n private getSchemaMap(iModel: string): Map<string, SchemaLoadData> {\n if (!this._iModelItems.has(iModel)) {\n this._iModelItems.set(iModel, new Map());\n }\n\n return this._iModelItems.get(iModel) as Map<string, SchemaLoadData>;\n }\n\n private getSchemaLoadData(schemaMap: Map<string, SchemaLoadData>, schemaName: string): SchemaLoadData {\n if (!schemaMap.has(schemaName))\n schemaMap.set(schemaName, { schemaItemMap: new Map() })\n\n return schemaMap.get(schemaName) as SchemaLoadData;\n }\n}"]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { SchemaContext } from "../Context";
|
|
2
|
+
import { AnySchemaItemProps, KindOfQuantityProps, SchemaItemProps } from "../Deserialization/JsonProps";
|
|
3
|
+
/**
|
|
4
|
+
* Parses SchemaItemProps JSON returned from an ECSql query and returns the correct SchemaItemProps JSON.
|
|
5
|
+
* This is necessary as a small amount information (ie. CustomAttribute data) returned from the iModelDb
|
|
6
|
+
* is in a different format than is required for a SchemaItemProps JSON object.
|
|
7
|
+
* @internal
|
|
8
|
+
*/
|
|
9
|
+
export declare class SchemaItemParser {
|
|
10
|
+
protected _schema: string;
|
|
11
|
+
protected _context: SchemaContext;
|
|
12
|
+
/**
|
|
13
|
+
* Initializes a new SchemaItemParser.
|
|
14
|
+
* @param schemaName The name the Schema containing the SchemaItems.
|
|
15
|
+
* @param context The SchemaContext containing the Schema.
|
|
16
|
+
*/
|
|
17
|
+
constructor(schemaName: string, context: SchemaContext);
|
|
18
|
+
/**
|
|
19
|
+
* Parses the given SchemaItemProps JSON returned from an ECSql query.
|
|
20
|
+
* @param data The SchemaItemProps JSON as returned from an iModelDb.
|
|
21
|
+
* @returns The corrected SchemaItemProps Json.
|
|
22
|
+
*/
|
|
23
|
+
parse(data: AnySchemaItemProps): Promise<SchemaItemProps>;
|
|
24
|
+
/**
|
|
25
|
+
* Helper method to resolve the SchemaItem's full name from the given rawTypeName.
|
|
26
|
+
* If the SchemaItem is defined in the same Schema from which it is referenced,
|
|
27
|
+
* the rawTypeName will be SchemaItem name ('PhysicalElement'). Otherwise,
|
|
28
|
+
* the rawTypeName will have the schema alias ('bis:PhysicalElement').
|
|
29
|
+
* @param rawTypeName The name or aliased name of the SchemaItem.
|
|
30
|
+
* @returns The full name of the SchemaItem, ie. 'BisCore.PhysicalElement'
|
|
31
|
+
*/
|
|
32
|
+
getQualifiedTypeName(rawTypeName: string): Promise<string>;
|
|
33
|
+
private resolveNameFromAlias;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Parses KindOfQuantityProps JSON returned from an ECSql query and returns the correct KindOfQuantityProps JSON.
|
|
37
|
+
* This is necessary as a small amount information (ie. unqualified type names of presentationUnits) returned from
|
|
38
|
+
* the iModelDb is in a different format than is required for a KindOfQuantityProps JSON object.
|
|
39
|
+
* @internal
|
|
40
|
+
*/
|
|
41
|
+
export declare class KindOfQuantityParser extends SchemaItemParser {
|
|
42
|
+
/**
|
|
43
|
+
* Parses the given KindOfQuantityProps JSON returned from an ECSql query.
|
|
44
|
+
* @param data The KindOfQuantityProps JSON as returned from an iModelDb.
|
|
45
|
+
* @returns The corrected KindOfQuantityProps Json.
|
|
46
|
+
*/
|
|
47
|
+
parse(data: KindOfQuantityProps): Promise<KindOfQuantityProps>;
|
|
48
|
+
private parsePresentationUnits;
|
|
49
|
+
private createOverrideFormatString;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=SchemaItemParsers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaItemParsers.d.ts","sourceRoot":"","sources":["../../../src/IncrementalLoading/SchemaItemParsers.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAUxG;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC;IAElC;;;;OAIG;gBACgB,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa;IAK7D;;;;OAIG;IACU,KAAK,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,eAAe,CAAC;IAUtE;;;;;;;OAOG;IACU,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAgBzD,oBAAoB;CAOnC;AAMD;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,gBAAgB;IACxD;;;;OAIG;IACmB,KAAK,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;YAWtE,sBAAsB;YActB,0BAA0B;CAmBzC"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
import { parseSchemaItemType } from "../ECObjects";
|
|
6
|
+
import { OverrideFormat } from "../Metadata/OverrideFormat";
|
|
7
|
+
import { SchemaItem } from "../Metadata/SchemaItem";
|
|
8
|
+
import { parseCustomAttribute } from "./SchemaParser";
|
|
9
|
+
/**
|
|
10
|
+
* Parses SchemaItemProps JSON returned from an ECSql query and returns the correct SchemaItemProps JSON.
|
|
11
|
+
* This is necessary as a small amount information (ie. CustomAttribute data) returned from the iModelDb
|
|
12
|
+
* is in a different format than is required for a SchemaItemProps JSON object.
|
|
13
|
+
* @internal
|
|
14
|
+
*/
|
|
15
|
+
export class SchemaItemParser {
|
|
16
|
+
_schema;
|
|
17
|
+
_context;
|
|
18
|
+
/**
|
|
19
|
+
* Initializes a new SchemaItemParser.
|
|
20
|
+
* @param schemaName The name the Schema containing the SchemaItems.
|
|
21
|
+
* @param context The SchemaContext containing the Schema.
|
|
22
|
+
*/
|
|
23
|
+
constructor(schemaName, context) {
|
|
24
|
+
this._schema = schemaName;
|
|
25
|
+
this._context = context;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Parses the given SchemaItemProps JSON returned from an ECSql query.
|
|
29
|
+
* @param data The SchemaItemProps JSON as returned from an iModelDb.
|
|
30
|
+
* @returns The corrected SchemaItemProps Json.
|
|
31
|
+
*/
|
|
32
|
+
async parse(data) {
|
|
33
|
+
const props = data;
|
|
34
|
+
props.schemaItemType = parseSchemaItemType(data.schemaItemType);
|
|
35
|
+
props.customAttributes = props.customAttributes ? props.customAttributes.map((attr) => { return parseCustomAttribute(attr); }) : undefined;
|
|
36
|
+
if (!props.customAttributes || props.customAttributes.length === 0)
|
|
37
|
+
delete props.customAttributes;
|
|
38
|
+
return props;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Helper method to resolve the SchemaItem's full name from the given rawTypeName.
|
|
42
|
+
* If the SchemaItem is defined in the same Schema from which it is referenced,
|
|
43
|
+
* the rawTypeName will be SchemaItem name ('PhysicalElement'). Otherwise,
|
|
44
|
+
* the rawTypeName will have the schema alias ('bis:PhysicalElement').
|
|
45
|
+
* @param rawTypeName The name or aliased name of the SchemaItem.
|
|
46
|
+
* @returns The full name of the SchemaItem, ie. 'BisCore.PhysicalElement'
|
|
47
|
+
*/
|
|
48
|
+
async getQualifiedTypeName(rawTypeName) {
|
|
49
|
+
const nameParts = rawTypeName.split(":");
|
|
50
|
+
if (nameParts.length !== 2) {
|
|
51
|
+
const [schemaName, itemName] = SchemaItem.parseFullName(rawTypeName);
|
|
52
|
+
if (!schemaName || schemaName === '')
|
|
53
|
+
return `${this._schema}.${itemName}`;
|
|
54
|
+
return rawTypeName;
|
|
55
|
+
}
|
|
56
|
+
const resolvedName = await this.resolveNameFromAlias(nameParts[0].toLocaleLowerCase());
|
|
57
|
+
if (!resolvedName)
|
|
58
|
+
throw new Error(`No valid schema found for alias '${nameParts[0]}'`);
|
|
59
|
+
return `${resolvedName}.${nameParts[1]}`;
|
|
60
|
+
}
|
|
61
|
+
async resolveNameFromAlias(alias) {
|
|
62
|
+
for (const schema of this._context.getKnownSchemas()) {
|
|
63
|
+
if (schema.alias === alias)
|
|
64
|
+
return schema.schemaKey.name;
|
|
65
|
+
}
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Parses KindOfQuantityProps JSON returned from an ECSql query and returns the correct KindOfQuantityProps JSON.
|
|
71
|
+
* This is necessary as a small amount information (ie. unqualified type names of presentationUnits) returned from
|
|
72
|
+
* the iModelDb is in a different format than is required for a KindOfQuantityProps JSON object.
|
|
73
|
+
* @internal
|
|
74
|
+
*/
|
|
75
|
+
export class KindOfQuantityParser extends SchemaItemParser {
|
|
76
|
+
/**
|
|
77
|
+
* Parses the given KindOfQuantityProps JSON returned from an ECSql query.
|
|
78
|
+
* @param data The KindOfQuantityProps JSON as returned from an iModelDb.
|
|
79
|
+
* @returns The corrected KindOfQuantityProps Json.
|
|
80
|
+
*/
|
|
81
|
+
async parse(data) {
|
|
82
|
+
const mutableProps = await super.parse(data);
|
|
83
|
+
if (mutableProps.persistenceUnit) {
|
|
84
|
+
mutableProps.persistenceUnit = await this.getQualifiedTypeName(mutableProps.persistenceUnit);
|
|
85
|
+
}
|
|
86
|
+
mutableProps.presentationUnits = await this.parsePresentationUnits(mutableProps);
|
|
87
|
+
return mutableProps;
|
|
88
|
+
}
|
|
89
|
+
async parsePresentationUnits(props) {
|
|
90
|
+
const presentationUnits = [];
|
|
91
|
+
if (!props.presentationUnits)
|
|
92
|
+
return [];
|
|
93
|
+
for (const presentationUnit of props.presentationUnits) {
|
|
94
|
+
const presFormatOverride = OverrideFormat.parseFormatString(presentationUnit);
|
|
95
|
+
const formatString = await this.createOverrideFormatString(presFormatOverride);
|
|
96
|
+
presentationUnits.push(formatString);
|
|
97
|
+
}
|
|
98
|
+
;
|
|
99
|
+
return presentationUnits;
|
|
100
|
+
}
|
|
101
|
+
async createOverrideFormatString(overrideFormatProps) {
|
|
102
|
+
let formatFullName = await this.getQualifiedTypeName(overrideFormatProps.name);
|
|
103
|
+
if (overrideFormatProps.precision)
|
|
104
|
+
formatFullName += `(${overrideFormatProps.precision.toString()})`;
|
|
105
|
+
if (undefined === overrideFormatProps.unitAndLabels)
|
|
106
|
+
return formatFullName;
|
|
107
|
+
for (const [unit, unitLabel] of overrideFormatProps.unitAndLabels) {
|
|
108
|
+
const unitFullName = await this.getQualifiedTypeName(unit);
|
|
109
|
+
if (undefined === unitLabel)
|
|
110
|
+
formatFullName += `[${unitFullName}]`;
|
|
111
|
+
else
|
|
112
|
+
formatFullName += `[${unitFullName}|${unitLabel}]`;
|
|
113
|
+
}
|
|
114
|
+
return formatFullName;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=SchemaItemParsers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaItemParsers.js","sourceRoot":"","sources":["../../../src/IncrementalLoading/SchemaItemParsers.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 { AnySchemaItemProps, KindOfQuantityProps, SchemaItemProps } from \"../Deserialization/JsonProps\";\nimport { parseSchemaItemType } from \"../ECObjects\";\nimport { OverrideFormat, OverrideFormatProps } from \"../Metadata/OverrideFormat\";\nimport { SchemaItem } from \"../Metadata/SchemaItem\";\nimport { parseCustomAttribute } from \"./SchemaParser\";\n\ntype MutableSchemaItemProps = {\n -readonly [K in keyof SchemaItemProps]: SchemaItemProps[K]\n};\n\n/**\n * Parses SchemaItemProps JSON returned from an ECSql query and returns the correct SchemaItemProps JSON.\n * This is necessary as a small amount information (ie. CustomAttribute data) returned from the iModelDb\n * is in a different format than is required for a SchemaItemProps JSON object.\n * @internal\n */\nexport class SchemaItemParser {\n protected _schema: string;\n protected _context: SchemaContext;\n\n /**\n * Initializes a new SchemaItemParser.\n * @param schemaName The name the Schema containing the SchemaItems.\n * @param context The SchemaContext containing the Schema.\n */\n public constructor(schemaName: string, context: SchemaContext) {\n this._schema = schemaName;\n this._context = context;\n }\n\n /**\n * Parses the given SchemaItemProps JSON returned from an ECSql query.\n * @param data The SchemaItemProps JSON as returned from an iModelDb.\n * @returns The corrected SchemaItemProps Json.\n */\n public async parse(data: AnySchemaItemProps): Promise<SchemaItemProps> {\n const props = data as MutableSchemaItemProps;\n props.schemaItemType = parseSchemaItemType((data as any).schemaItemType);\n props.customAttributes = props.customAttributes ? props.customAttributes.map((attr: any) => { return parseCustomAttribute(attr); }) : undefined;\n if (!props.customAttributes || props.customAttributes.length === 0)\n delete props.customAttributes;\n\n return props;\n }\n\n /**\n * Helper method to resolve the SchemaItem's full name from the given rawTypeName.\n * If the SchemaItem is defined in the same Schema from which it is referenced,\n * the rawTypeName will be SchemaItem name ('PhysicalElement'). Otherwise,\n * the rawTypeName will have the schema alias ('bis:PhysicalElement').\n * @param rawTypeName The name or aliased name of the SchemaItem.\n * @returns The full name of the SchemaItem, ie. 'BisCore.PhysicalElement'\n */\n public async getQualifiedTypeName(rawTypeName: string): Promise<string> {\n const nameParts = rawTypeName.split(\":\");\n if (nameParts.length !== 2) {\n const [schemaName, itemName] = SchemaItem.parseFullName(rawTypeName);\n if (!schemaName || schemaName === '')\n return `${this._schema}.${itemName}`;\n return rawTypeName;\n }\n\n const resolvedName = await this.resolveNameFromAlias(nameParts[0].toLocaleLowerCase());\n if (!resolvedName)\n throw new Error(`No valid schema found for alias '${nameParts[0]}'`);\n\n return `${resolvedName}.${nameParts[1]}`;\n }\n\n private async resolveNameFromAlias(alias: string): Promise<string | undefined> {\n for (const schema of this._context.getKnownSchemas()) {\n if (schema.alias === alias)\n return schema.schemaKey.name;\n }\n return undefined;\n }\n}\n\ntype MutableKindOfQuantityProps = {\n -readonly [K in keyof KindOfQuantityProps]: KindOfQuantityProps[K]\n};\n\n/**\n * Parses KindOfQuantityProps JSON returned from an ECSql query and returns the correct KindOfQuantityProps JSON.\n * This is necessary as a small amount information (ie. unqualified type names of presentationUnits) returned from\n * the iModelDb is in a different format than is required for a KindOfQuantityProps JSON object.\n * @internal\n */\nexport class KindOfQuantityParser extends SchemaItemParser {\n /**\n * Parses the given KindOfQuantityProps JSON returned from an ECSql query.\n * @param data The KindOfQuantityProps JSON as returned from an iModelDb.\n * @returns The corrected KindOfQuantityProps Json.\n */\n public override async parse(data: KindOfQuantityProps): Promise<KindOfQuantityProps> {\n const mutableProps = await super.parse(data) as MutableKindOfQuantityProps;\n\n if (mutableProps.persistenceUnit) {\n mutableProps.persistenceUnit = await this.getQualifiedTypeName(mutableProps.persistenceUnit);\n }\n mutableProps.presentationUnits = await this.parsePresentationUnits(mutableProps);\n\n return mutableProps;\n }\n\n private async parsePresentationUnits(props: KindOfQuantityProps): Promise<string[]> {\n const presentationUnits: string[] = [];\n if (!props.presentationUnits)\n return [];\n\n for (const presentationUnit of props.presentationUnits) {\n const presFormatOverride: OverrideFormatProps = OverrideFormat.parseFormatString(presentationUnit);\n const formatString = await this.createOverrideFormatString(presFormatOverride);\n presentationUnits.push(formatString);\n };\n\n return presentationUnits;\n }\n\n private async createOverrideFormatString(overrideFormatProps: OverrideFormatProps): Promise<string> {\n\n let formatFullName = await this.getQualifiedTypeName(overrideFormatProps.name);\n if (overrideFormatProps.precision)\n formatFullName += `(${overrideFormatProps.precision.toString()})`;\n\n if (undefined === overrideFormatProps.unitAndLabels)\n return formatFullName;\n\n for (const [unit, unitLabel] of overrideFormatProps.unitAndLabels) {\n const unitFullName = await this.getQualifiedTypeName(unit);\n\n if (undefined === unitLabel)\n formatFullName += `[${unitFullName}]`;\n else\n formatFullName += `[${unitFullName}|${unitLabel}]`;\n }\n return formatFullName;\n }\n}"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Queries for each SchemaItemType
|
|
3
|
+
* @internal
|
|
4
|
+
*/
|
|
5
|
+
export declare const SchemaItemQueries: {
|
|
6
|
+
kindOfQuantity: (singleSchema?: boolean) => string;
|
|
7
|
+
propertyCategory: (singleSchema?: boolean) => string;
|
|
8
|
+
enumeration: (singleSchema?: boolean) => string;
|
|
9
|
+
unit: (singleSchema?: boolean) => string;
|
|
10
|
+
invertedUnit: (singleSchema?: boolean) => string;
|
|
11
|
+
constant: (singleSchema?: boolean) => string;
|
|
12
|
+
unitSystem: (singleSchema?: boolean) => string;
|
|
13
|
+
phenomenon: (singleSchema?: boolean) => string;
|
|
14
|
+
format: (singleSchema?: boolean) => string;
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=SchemaItemQueries.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaItemQueries.d.ts","sourceRoot":"","sources":["../../../src/IncrementalLoading/SchemaItemQueries.ts"],"names":[],"mappings":"AA2SA;;;GAGG;AAEH,eAAO,MAAM,iBAAiB;oCAlSS,OAAO;sCA8BL,OAAO;iCAuBZ,OAAO;0BAiCd,OAAO;kCAuCC,OAAO;8BAmCX,OAAO;gCAgCL,OAAO;gCAqBP,OAAO;4BAsBX,OAAO;CAiErC,CAAC"}
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
/************************************************************************************
|
|
6
|
+
* All SchemaItem queries for each SchemaItemType are defined here. These queries
|
|
7
|
+
* are shared for both 'partial schema' and 'full schema' queries.
|
|
8
|
+
***********************************************************************************/
|
|
9
|
+
/**
|
|
10
|
+
* Query for SchemaItemType KindOfQuantity data.
|
|
11
|
+
* @param singleSchema Indicates if a filter and join for a single Schema should be applied.
|
|
12
|
+
*/
|
|
13
|
+
const kindOfQuantity = (singleSchema) => `
|
|
14
|
+
SELECT
|
|
15
|
+
[koq].[Schema].[Id] AS [SchemaId],
|
|
16
|
+
json_object (
|
|
17
|
+
'schemaItemType', 'KindOfQuantity',
|
|
18
|
+
'name', [koq].[Name],
|
|
19
|
+
'label', [koq].[DisplayLabel],
|
|
20
|
+
'description', [koq].[Description]
|
|
21
|
+
${singleSchema ? `
|
|
22
|
+
,'relativeError', [koq].[RelativeError],
|
|
23
|
+
'persistenceUnit', [koq].[PersistenceUnit],
|
|
24
|
+
'presentationUnits', (
|
|
25
|
+
SELECT json_group_array(js."value")
|
|
26
|
+
FROM [meta].[KindOfQuantityDef] [koq1], json1.json_each([PresentationUnits]) js
|
|
27
|
+
WHERE [koq1].[ECInstanceId] = [koq].[ECInstanceId]
|
|
28
|
+
) ` : ""}
|
|
29
|
+
) as [item]
|
|
30
|
+
FROM
|
|
31
|
+
[meta].[KindOfQuantityDef] [koq]
|
|
32
|
+
${singleSchema ? `
|
|
33
|
+
JOIN
|
|
34
|
+
[meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [koq].[Schema].[Id]
|
|
35
|
+
WHERE [schema].[Name] = :schemaName
|
|
36
|
+
` : ""}
|
|
37
|
+
`;
|
|
38
|
+
/**
|
|
39
|
+
* Query for SchemaItemType PropertyCategory data.
|
|
40
|
+
* @param singleSchema Indicates if a filter and join for a single Schema should be applied.
|
|
41
|
+
*/
|
|
42
|
+
const propertyCategory = (singleSchema) => `
|
|
43
|
+
SELECT
|
|
44
|
+
[pc].[Schema].[Id] AS [SchemaId],
|
|
45
|
+
json_object (
|
|
46
|
+
'schemaItemType', 'PropertyCategory',
|
|
47
|
+
'name', [pc].[Name],
|
|
48
|
+
'label', [pc].[DisplayLabel],
|
|
49
|
+
'description', [pc].[Description],
|
|
50
|
+
'priority', [pc].[Priority]
|
|
51
|
+
) as [item]
|
|
52
|
+
FROM
|
|
53
|
+
[meta].[PropertyCategoryDef] [pc]
|
|
54
|
+
${singleSchema ? `
|
|
55
|
+
JOIN
|
|
56
|
+
[meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [pc].[Schema].[Id]
|
|
57
|
+
WHERE [schema].[Name] = :schemaName
|
|
58
|
+
` : ""}
|
|
59
|
+
`;
|
|
60
|
+
/**
|
|
61
|
+
* Query for SchemaItemType Enumeration data.
|
|
62
|
+
* @param singleSchema Indicates if a filter and join for a single Schema should be applied.
|
|
63
|
+
*/
|
|
64
|
+
const enumeration = (singleSchema) => `
|
|
65
|
+
SELECT
|
|
66
|
+
[ed].[Schema].[Id] AS [SchemaId],
|
|
67
|
+
json_object (
|
|
68
|
+
'schemaItemType', 'Enumeration',
|
|
69
|
+
'name', [ed].[Name],
|
|
70
|
+
'label', [ed].[DisplayLabel],
|
|
71
|
+
'description', [ed].[Description],
|
|
72
|
+
'type', IIF([ed].[Type] = 1281, 'int', IIF([ed].[Type] = 2305, 'string', null)),
|
|
73
|
+
'isStrict', IIF([ed].[IsStrict] = 1, json('true'), json('false')),
|
|
74
|
+
'enumerators', (
|
|
75
|
+
SELECT json_group_array(json(json_object(
|
|
76
|
+
'name', json_extract(js."value", '$.Name'),
|
|
77
|
+
'value', IFNULL(json_extract(js."value", '$.StringValue'), (json_extract(js."value", '$.IntValue'))),
|
|
78
|
+
'label', json_extract(js."value", '$.DisplayLabel'),
|
|
79
|
+
'description', json_extract(js."value", '$.Description')
|
|
80
|
+
)))
|
|
81
|
+
FROM [meta].[ECEnumerationDef] [enumerationDef], json1.json_each([EnumValues]) js
|
|
82
|
+
WHERE [enumerationDef].[ECInstanceId] = [ed].[ECInstanceId]
|
|
83
|
+
)
|
|
84
|
+
) as [item]
|
|
85
|
+
FROM
|
|
86
|
+
[meta].[ECEnumerationDef] [ed]
|
|
87
|
+
${singleSchema ? `
|
|
88
|
+
JOIN
|
|
89
|
+
[meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [ed].[Schema].[Id]
|
|
90
|
+
WHERE [schema].[Name] = :schemaName` : ""}
|
|
91
|
+
`;
|
|
92
|
+
/**
|
|
93
|
+
* Query for SchemaItemType Unit data.
|
|
94
|
+
* @param singleSchema Indicates if a filter and join for a single Schema should be applied.
|
|
95
|
+
*/
|
|
96
|
+
const unit = (singleSchema) => `
|
|
97
|
+
SELECT
|
|
98
|
+
[ud].[Schema].[Id] AS [SchemaId],
|
|
99
|
+
json_object (
|
|
100
|
+
'schemaItemType', 'Unit',
|
|
101
|
+
'name', [ud].[Name],
|
|
102
|
+
'label', [ud].[DisplayLabel],
|
|
103
|
+
'description', [ud].[Description],
|
|
104
|
+
'definition', [ud].[Definition],
|
|
105
|
+
'numerator', IIF([ud].[Numerator] IS NULL, NULL, json(format('%.16g', [ud].[Numerator]))),
|
|
106
|
+
'denominator', IIF([ud].[Denominator] IS NULL, NULL, json(format('%.16g', [ud].[Denominator]))),
|
|
107
|
+
'offset', IIF([ud].[Offset] IS NULL, NULL, json(format('%!.15f', [ud].[Offset]))),
|
|
108
|
+
'unitSystem', CONCAT([uss].[Name],'.', [usd].[Name]),
|
|
109
|
+
'phenomenon', CONCAT([ps].[Name],'.', [pd].[Name])
|
|
110
|
+
) as item
|
|
111
|
+
FROM
|
|
112
|
+
[meta].[UnitDef] [ud]
|
|
113
|
+
${singleSchema ? `
|
|
114
|
+
JOIN
|
|
115
|
+
[meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [ud].[Schema].[Id]` : ""}
|
|
116
|
+
JOIN [meta].[UnitSystemDef] [usd]
|
|
117
|
+
ON [usd].[ECInstanceId] = [ud].[UnitSystem].[Id]
|
|
118
|
+
JOIN [meta].[ECSchemaDef] [uss]
|
|
119
|
+
ON [uss].[ECInstanceId] = [usd].[Schema].[Id]
|
|
120
|
+
JOIN [meta].[PhenomenonDef] [pd]
|
|
121
|
+
ON [pd].[ECInstanceId] = [ud].[Phenomenon].[Id]
|
|
122
|
+
JOIN [meta].[ECSchemaDef] [ps]
|
|
123
|
+
ON [ps].[ECInstanceId] = [pd].[Schema].[Id]
|
|
124
|
+
WHERE
|
|
125
|
+
${singleSchema ? `
|
|
126
|
+
[schema].[Name] = :schemaName AND` : ""}
|
|
127
|
+
[ud].[IsConstant] = 0 AND
|
|
128
|
+
[ud].[InvertingUnit] IS NULL
|
|
129
|
+
`;
|
|
130
|
+
/**
|
|
131
|
+
* Query for SchemaItemType InvertedUnit data.
|
|
132
|
+
* @param singleSchema Indicates if a filter and join for a single Schema should be applied.
|
|
133
|
+
*/
|
|
134
|
+
const invertedUnit = (singleSchema) => `
|
|
135
|
+
SELECT
|
|
136
|
+
[ud].[Schema].[Id] AS [SchemaId],
|
|
137
|
+
json_object (
|
|
138
|
+
'schemaItemType', 'InvertedUnit',
|
|
139
|
+
'name', [ud].[Name],
|
|
140
|
+
'label', [ud].[DisplayLabel],
|
|
141
|
+
'description', [ud].[Description],
|
|
142
|
+
'unitSystem', CONCAT([systemSchema].[Name],'.', [usd].[Name]),
|
|
143
|
+
'invertsUnit', IIF([iud].[Name] IS NULL, null, CONCAT([ius].[Name],'.', [iud].[Name]))
|
|
144
|
+
) as [item]
|
|
145
|
+
FROM
|
|
146
|
+
[meta].[UnitDef] [ud]
|
|
147
|
+
${singleSchema ? `
|
|
148
|
+
JOIN
|
|
149
|
+
[meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [ud].[Schema].[Id]` : ""}
|
|
150
|
+
JOIN [meta].[UnitSystemDef] [usd]
|
|
151
|
+
ON [usd].[ECInstanceId] = [ud].[UnitSystem].[Id]
|
|
152
|
+
JOIN [meta].[ECSchemaDef] [systemSchema]
|
|
153
|
+
ON [systemSchema].[ECInstanceId] = [usd].[Schema].[Id]
|
|
154
|
+
LEFT JOIN [meta].[UnitDef] [iud]
|
|
155
|
+
ON [iud].[ECInstanceId] = [ud].[InvertingUnit].[Id]
|
|
156
|
+
LEFT JOIN [meta].[ECSchemaDef] [ius]
|
|
157
|
+
ON [ius].[ECInstanceId] = [iud].[Schema].[Id]
|
|
158
|
+
WHERE
|
|
159
|
+
${singleSchema ? `
|
|
160
|
+
[schema].[Name] = :schemaName AND` : ""}
|
|
161
|
+
[ud].[IsConstant] = 0 AND
|
|
162
|
+
[ud].[InvertingUnit] IS NOT NULL
|
|
163
|
+
`;
|
|
164
|
+
/**
|
|
165
|
+
* Query for SchemaItemType Constant data.
|
|
166
|
+
* @param singleSchema Indicates if a filter and join for a single Schema should be applied.
|
|
167
|
+
*/
|
|
168
|
+
const constant = (singleSchema) => `
|
|
169
|
+
SELECT
|
|
170
|
+
[cd].[Schema].[Id] AS [SchemaId],
|
|
171
|
+
json_object(
|
|
172
|
+
'schemaItemType', 'Constant',
|
|
173
|
+
'name', [cd].[Name],
|
|
174
|
+
'label', [cd].[DisplayLabel],
|
|
175
|
+
'description', [cd].[Description],
|
|
176
|
+
'definition', [cd].[Definition],
|
|
177
|
+
'numerator', IIF([cd].[Numerator] IS NULL, NULL, json(format('%.16g', [cd].[Numerator]))),
|
|
178
|
+
'denominator', IIF([cd].[Denominator] IS NULL, NULL, json(format('%.16g', [cd].[Denominator]))),
|
|
179
|
+
'phenomenon', CONCAT([phenomSchema].[Name],'.', [phenomDef].[Name])
|
|
180
|
+
) as item
|
|
181
|
+
FROM
|
|
182
|
+
[meta].[UnitDef] [cd]
|
|
183
|
+
${singleSchema ? `
|
|
184
|
+
JOIN
|
|
185
|
+
[meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [cd].[Schema].[Id]` : ""}
|
|
186
|
+
JOIN [meta].[PhenomenonDef] [phenomDef]
|
|
187
|
+
ON [phenomDef].[ECInstanceId] = [cd].[Phenomenon].[Id]
|
|
188
|
+
JOIN [meta].[ECSchemaDef] [phenomSchema]
|
|
189
|
+
ON [phenomSchema].[ECInstanceId] = [phenomDef].[Schema].[Id]
|
|
190
|
+
WHERE
|
|
191
|
+
${singleSchema ? `
|
|
192
|
+
[schema].[Name] = :schemaName AND` : ""}
|
|
193
|
+
[cd].[IsConstant] = 1
|
|
194
|
+
`;
|
|
195
|
+
/**
|
|
196
|
+
* Query for SchemaItemType UnitSystem data.
|
|
197
|
+
* @param singleSchema Indicates if a filter and join for a single Schema should be applied.
|
|
198
|
+
*/
|
|
199
|
+
const unitSystem = (singleSchema) => `
|
|
200
|
+
SELECT
|
|
201
|
+
[us].[Schema].[Id] AS [SchemaId],
|
|
202
|
+
json_object (
|
|
203
|
+
'schemaItemType', 'UnitSystem',
|
|
204
|
+
'name', [us].[Name],
|
|
205
|
+
'label', [us].[DisplayLabel],
|
|
206
|
+
'description', [us].[Description]
|
|
207
|
+
) as [item]
|
|
208
|
+
FROM
|
|
209
|
+
[meta].[UnitSystemDef] [us]
|
|
210
|
+
${singleSchema ? `
|
|
211
|
+
JOIN
|
|
212
|
+
[meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [us].[Schema].[Id]
|
|
213
|
+
WHERE [schema].[Name] = :schemaName` : ""}
|
|
214
|
+
`;
|
|
215
|
+
/**
|
|
216
|
+
* Query for SchemaItemType Phenomenon data.
|
|
217
|
+
* @param singleSchema Indicates if a filter and join for a single Schema should be applied.
|
|
218
|
+
*/
|
|
219
|
+
const phenomenon = (singleSchema) => `
|
|
220
|
+
SELECT
|
|
221
|
+
[pd].[Schema].[Id] AS [SchemaId],
|
|
222
|
+
json_object(
|
|
223
|
+
'schemaItemType', 'Phenomenon',
|
|
224
|
+
'name', [pd].[Name],
|
|
225
|
+
'label', [pd].[DisplayLabel],
|
|
226
|
+
'description', [pd].[Description],
|
|
227
|
+
'definition', [pd].[Definition]
|
|
228
|
+
) as [item]
|
|
229
|
+
FROM
|
|
230
|
+
[meta].[PhenomenonDef] [pd]
|
|
231
|
+
${singleSchema ? `
|
|
232
|
+
JOIN
|
|
233
|
+
[meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [pd].[Schema].[Id]
|
|
234
|
+
WHERE [schema].[Name] = :schemaName` : ""}
|
|
235
|
+
`;
|
|
236
|
+
/**
|
|
237
|
+
* Query for SchemaItemType Format data.
|
|
238
|
+
* @param singleSchema Indicates if a filter and join for a single Schema should be applied.
|
|
239
|
+
*/
|
|
240
|
+
const format = (singleSchema) => `
|
|
241
|
+
SELECT
|
|
242
|
+
[fd].[Schema].[Id] AS [SchemaId],
|
|
243
|
+
json_object(
|
|
244
|
+
'schemaItemType', 'Format',
|
|
245
|
+
'name', [fd].[Name],
|
|
246
|
+
'label', [fd].[DisplayLabel],
|
|
247
|
+
'description', [fd].[Description],
|
|
248
|
+
'type', json_extract([fd].[NumericSpec], '$.type'),
|
|
249
|
+
'precision', json_extract([fd].[NumericSpec], '$.precision'),
|
|
250
|
+
'roundFactor', json_extract([fd].[NumericSpec], '$.roundFactor'),
|
|
251
|
+
'minWidth', json_extract([fd].[NumericSpec], '$.minWidth'),
|
|
252
|
+
'showSignOption', json_extract([fd].[NumericSpec], '$.showSignOption'),
|
|
253
|
+
'decimalSeparator', json_extract([fd].[NumericSpec], '$.decimalSeparator'),
|
|
254
|
+
'thousandSeparator', json_extract([fd].[NumericSpec], '$.thousandSeparator'),
|
|
255
|
+
'uomSeparator', json_extract([fd].[NumericSpec], '$.uomSeparator'),
|
|
256
|
+
'scientificType', json_extract([fd].[NumericSpec], '$.scientificType'),
|
|
257
|
+
'stationOffsetSize', json_extract([fd].[NumericSpec], '$.stationOffsetSize'),
|
|
258
|
+
'stationSeparator', json_extract([fd].[NumericSpec], '$.stationSeparator'),
|
|
259
|
+
'formatTraits', json_extract([fd].[NumericSpec], '$.formatTraits')
|
|
260
|
+
${singleSchema ? `
|
|
261
|
+
,'composite', (
|
|
262
|
+
SELECT
|
|
263
|
+
json_object(
|
|
264
|
+
'spacer', json_extract([fd1].[CompositeSpec], '$.spacer'),
|
|
265
|
+
'includeZero', json(IIF(json_extract([fd1].[CompositeSpec], '$.includeZero') = 1, 'true', IIF(json_extract([fd1].[CompositeSpec], '$.includeZero') = 0, 'false', null))),
|
|
266
|
+
'units', (
|
|
267
|
+
SELECT json_group_array(json(json_object(
|
|
268
|
+
'name', CONCAT([sd].[Name], '.', [ud].[Name]),
|
|
269
|
+
'label', [fud].[Label]
|
|
270
|
+
)))
|
|
271
|
+
FROM [meta].[FormatDef] [fd2]
|
|
272
|
+
LEFT JOIN [meta].[FormatCompositeUnitDef] [fud] ON [fud].[Format].[Id] = [fd2].[ECInstanceId]
|
|
273
|
+
LEFT JOIN [meta].[UnitDef] [ud] ON [ud].[ECInstanceId] = [fud].[Unit].[Id]
|
|
274
|
+
INNER JOIN [meta].[ECSchemaDef] [sd] ON [sd].[ECInstanceId] = [ud].[Schema].[Id]
|
|
275
|
+
WHERE [fd2].[ECInstanceId] = [fd1].[ECInstanceId]
|
|
276
|
+
)
|
|
277
|
+
)
|
|
278
|
+
FROM [meta].[FormatDef] [fd1]
|
|
279
|
+
WHERE [fd1].[ECInstanceId]= [fd].[ECInstanceId] AND [fd1].[CompositeSpec] IS NOT NULL
|
|
280
|
+
)` : ""}
|
|
281
|
+
) AS item
|
|
282
|
+
FROM
|
|
283
|
+
[meta].[FormatDef] [fd]
|
|
284
|
+
${singleSchema ? `
|
|
285
|
+
JOIN
|
|
286
|
+
[meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [fd].[Schema].[Id]
|
|
287
|
+
WHERE [schema].[Name] = :schemaName` : ""}
|
|
288
|
+
`;
|
|
289
|
+
/**
|
|
290
|
+
* Queries for each SchemaItemType
|
|
291
|
+
* @internal
|
|
292
|
+
*/
|
|
293
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
294
|
+
export const SchemaItemQueries = {
|
|
295
|
+
kindOfQuantity,
|
|
296
|
+
propertyCategory,
|
|
297
|
+
enumeration,
|
|
298
|
+
unit,
|
|
299
|
+
invertedUnit,
|
|
300
|
+
constant,
|
|
301
|
+
unitSystem,
|
|
302
|
+
phenomenon,
|
|
303
|
+
format
|
|
304
|
+
};
|
|
305
|
+
//# sourceMappingURL=SchemaItemQueries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaItemQueries.js","sourceRoot":"","sources":["../../../src/IncrementalLoading/SchemaItemQueries.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAEhG;;;qFAGqF;AAErF;;;GAGG;AACH,MAAM,cAAc,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;MAQ7C,YAAY,CAAC,CAAC,CAAC;;;;;;;OAOd,CAAA,CAAC,CAAC,EAAE;;;;EAIT,YAAY,CAAC,CAAC,CAAC;;;;CAIhB,CAAC,CAAC,CAAC,EAAE;CACL,CAAC;AAEF;;;GAGG;AACH,MAAM,gBAAgB,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;;EAYnD,YAAY,CAAC,CAAC,CAAC;;;;CAIhB,CAAC,CAAC,CAAC,EAAE;CACL,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;EAuB9C,YAAY,CAAC,CAAC,CAAC;;;oCAGmB,CAAC,CAAC,CAAC,EAAE;CACxC,CAAC;AAEF;;;GAGG;AACH,MAAM,IAAI,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;;;;;;;EAiBvC,YAAY,CAAC,CAAC,CAAC;;gFAE+D,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;IAUjF,YAAY,CAAC,CAAC,CAAC;oCACiB,CAAC,CAAC,CAAC,EAAE;;;CAGxC,CAAC;AAEF;;;GAGG;AACH,MAAM,YAAY,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;;;EAa/C,YAAY,CAAC,CAAC,CAAC;;gFAE+D,CAAC,CAAC,CAAC,EAAE;;;;;;;;;;IAUjF,YAAY,CAAC,CAAC,CAAC;oCACiB,CAAC,CAAC,CAAC,EAAE;;;CAGxC,CAAC;AAEF;;;GAGG;AACH,MAAM,QAAQ,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;;;;;EAe3C,YAAY,CAAC,CAAC,CAAC;;gFAE+D,CAAC,CAAC,CAAC,EAAE;;;;;;IAMjF,YAAY,CAAC,CAAC,CAAC;oCACiB,CAAC,CAAC,CAAC,EAAE;;CAExC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;EAW7C,YAAY,CAAC,CAAC,CAAC;;;oCAGmB,CAAC,CAAC,CAAC,EAAE;CACxC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;;EAY7C,YAAY,CAAC,CAAC,CAAC;;;oCAGmB,CAAC,CAAC,CAAC,EAAE;CACxC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,GAAG,CAAC,YAAsB,EAAE,EAAE,CAAC;;;;;;;;;;;;;;;;;;;;MAoBrC,YAAY,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;MAoBf,CAAC,CAAC,CAAC,EAAE;;;;EAIT,YAAY,CAAC,CAAC,CAAC;;;oCAGmB,CAAC,CAAC,CAAC,EAAE;CACxC,CAAA;AAED;;;GAGG;AACH,gEAAgE;AAChE,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,cAAc;IACd,gBAAgB;IAChB,WAAW;IACX,IAAI;IACJ,YAAY;IACZ,QAAQ;IACR,UAAU;IACV,UAAU;IACV,MAAM;CACP,CAAC","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\n/************************************************************************************\n * All SchemaItem queries for each SchemaItemType are defined here. These queries\n * are shared for both 'partial schema' and 'full schema' queries.\n ***********************************************************************************/\n\n/**\n * Query for SchemaItemType KindOfQuantity data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst kindOfQuantity = (singleSchema?: boolean) => `\nSELECT\n [koq].[Schema].[Id] AS [SchemaId],\n json_object (\n 'schemaItemType', 'KindOfQuantity',\n 'name', [koq].[Name],\n 'label', [koq].[DisplayLabel],\n 'description', [koq].[Description]\n ${singleSchema ? `\n ,'relativeError', [koq].[RelativeError],\n 'persistenceUnit', [koq].[PersistenceUnit],\n 'presentationUnits', (\n SELECT json_group_array(js.\"value\")\n FROM [meta].[KindOfQuantityDef] [koq1], json1.json_each([PresentationUnits]) js\n WHERE [koq1].[ECInstanceId] = [koq].[ECInstanceId]\n ) `: \"\"}\n ) as [item]\nFROM\n [meta].[KindOfQuantityDef] [koq]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [koq].[Schema].[Id]\nWHERE [schema].[Name] = :schemaName\n` : \"\"}\n`;\n\n/**\n * Query for SchemaItemType PropertyCategory data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst propertyCategory = (singleSchema?: boolean) => `\nSELECT\n [pc].[Schema].[Id] AS [SchemaId],\n json_object (\n 'schemaItemType', 'PropertyCategory',\n 'name', [pc].[Name],\n 'label', [pc].[DisplayLabel],\n 'description', [pc].[Description],\n 'priority', [pc].[Priority]\n ) as [item]\nFROM\n [meta].[PropertyCategoryDef] [pc]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [pc].[Schema].[Id]\nWHERE [schema].[Name] = :schemaName\n` : \"\"}\n`;\n\n/**\n * Query for SchemaItemType Enumeration data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst enumeration = (singleSchema?: boolean) => `\nSELECT\n [ed].[Schema].[Id] AS [SchemaId],\n json_object (\n 'schemaItemType', 'Enumeration',\n 'name', [ed].[Name],\n 'label', [ed].[DisplayLabel],\n 'description', [ed].[Description],\n 'type', IIF([ed].[Type] = 1281, 'int', IIF([ed].[Type] = 2305, 'string', null)),\n 'isStrict', IIF([ed].[IsStrict] = 1, json('true'), json('false')),\n 'enumerators', (\n SELECT json_group_array(json(json_object(\n 'name', json_extract(js.\"value\", '$.Name'),\n 'value', IFNULL(json_extract(js.\"value\", '$.StringValue'), (json_extract(js.\"value\", '$.IntValue'))),\n 'label', json_extract(js.\"value\", '$.DisplayLabel'),\n 'description', json_extract(js.\"value\", '$.Description')\n )))\n FROM [meta].[ECEnumerationDef] [enumerationDef], json1.json_each([EnumValues]) js\n WHERE [enumerationDef].[ECInstanceId] = [ed].[ECInstanceId]\n )\n ) as [item]\nFROM\n [meta].[ECEnumerationDef] [ed]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [ed].[Schema].[Id]\nWHERE [schema].[Name] = :schemaName` : \"\"}\n`;\n\n/**\n * Query for SchemaItemType Unit data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst unit = (singleSchema?: boolean) => `\nSELECT\n [ud].[Schema].[Id] AS [SchemaId],\n json_object (\n 'schemaItemType', 'Unit',\n 'name', [ud].[Name],\n 'label', [ud].[DisplayLabel],\n 'description', [ud].[Description],\n 'definition', [ud].[Definition],\n 'numerator', IIF([ud].[Numerator] IS NULL, NULL, json(format('%.16g', [ud].[Numerator]))),\n 'denominator', IIF([ud].[Denominator] IS NULL, NULL, json(format('%.16g', [ud].[Denominator]))),\n 'offset', IIF([ud].[Offset] IS NULL, NULL, json(format('%!.15f', [ud].[Offset]))),\n 'unitSystem', CONCAT([uss].[Name],'.', [usd].[Name]),\n 'phenomenon', CONCAT([ps].[Name],'.', [pd].[Name])\n ) as item\nFROM\n [meta].[UnitDef] [ud]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [ud].[Schema].[Id]` : \"\"}\nJOIN [meta].[UnitSystemDef] [usd]\n ON [usd].[ECInstanceId] = [ud].[UnitSystem].[Id]\nJOIN [meta].[ECSchemaDef] [uss]\n ON [uss].[ECInstanceId] = [usd].[Schema].[Id]\nJOIN [meta].[PhenomenonDef] [pd]\n ON [pd].[ECInstanceId] = [ud].[Phenomenon].[Id]\nJOIN [meta].[ECSchemaDef] [ps]\n ON [ps].[ECInstanceId] = [pd].[Schema].[Id]\nWHERE\n ${singleSchema ? `\n [schema].[Name] = :schemaName AND` : \"\"}\n [ud].[IsConstant] = 0 AND\n [ud].[InvertingUnit] IS NULL\n`;\n\n/**\n * Query for SchemaItemType InvertedUnit data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst invertedUnit = (singleSchema?: boolean) => `\nSELECT\n [ud].[Schema].[Id] AS [SchemaId],\n json_object (\n 'schemaItemType', 'InvertedUnit',\n 'name', [ud].[Name],\n 'label', [ud].[DisplayLabel],\n 'description', [ud].[Description],\n 'unitSystem', CONCAT([systemSchema].[Name],'.', [usd].[Name]),\n 'invertsUnit', IIF([iud].[Name] IS NULL, null, CONCAT([ius].[Name],'.', [iud].[Name]))\n ) as [item]\nFROM\n [meta].[UnitDef] [ud]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [ud].[Schema].[Id]` : \"\"}\nJOIN [meta].[UnitSystemDef] [usd]\n ON [usd].[ECInstanceId] = [ud].[UnitSystem].[Id]\nJOIN [meta].[ECSchemaDef] [systemSchema]\n ON [systemSchema].[ECInstanceId] = [usd].[Schema].[Id]\nLEFT JOIN [meta].[UnitDef] [iud]\n ON [iud].[ECInstanceId] = [ud].[InvertingUnit].[Id]\nLEFT JOIN [meta].[ECSchemaDef] [ius]\n ON [ius].[ECInstanceId] = [iud].[Schema].[Id]\nWHERE\n ${singleSchema ? `\n [schema].[Name] = :schemaName AND` : \"\"}\n [ud].[IsConstant] = 0 AND\n [ud].[InvertingUnit] IS NOT NULL\n`;\n\n/**\n * Query for SchemaItemType Constant data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst constant = (singleSchema?: boolean) => `\nSELECT\n [cd].[Schema].[Id] AS [SchemaId],\n json_object(\n 'schemaItemType', 'Constant',\n 'name', [cd].[Name],\n 'label', [cd].[DisplayLabel],\n 'description', [cd].[Description],\n 'definition', [cd].[Definition],\n 'numerator', IIF([cd].[Numerator] IS NULL, NULL, json(format('%.16g', [cd].[Numerator]))),\n 'denominator', IIF([cd].[Denominator] IS NULL, NULL, json(format('%.16g', [cd].[Denominator]))),\n 'phenomenon', CONCAT([phenomSchema].[Name],'.', [phenomDef].[Name])\n ) as item\nFROM\n [meta].[UnitDef] [cd]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [cd].[Schema].[Id]` : \"\"}\nJOIN [meta].[PhenomenonDef] [phenomDef]\n ON [phenomDef].[ECInstanceId] = [cd].[Phenomenon].[Id]\nJOIN [meta].[ECSchemaDef] [phenomSchema]\n ON [phenomSchema].[ECInstanceId] = [phenomDef].[Schema].[Id]\nWHERE\n ${singleSchema ? `\n [schema].[Name] = :schemaName AND` : \"\"}\n [cd].[IsConstant] = 1\n`;\n\n/**\n * Query for SchemaItemType UnitSystem data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst unitSystem = (singleSchema?: boolean) => `\nSELECT\n [us].[Schema].[Id] AS [SchemaId],\n json_object (\n 'schemaItemType', 'UnitSystem',\n 'name', [us].[Name],\n 'label', [us].[DisplayLabel],\n 'description', [us].[Description]\n ) as [item]\nFROM\n [meta].[UnitSystemDef] [us]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [us].[Schema].[Id]\nWHERE [schema].[Name] = :schemaName` : \"\"}\n`;\n\n/**\n * Query for SchemaItemType Phenomenon data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst phenomenon = (singleSchema?: boolean) => `\nSELECT\n [pd].[Schema].[Id] AS [SchemaId],\n json_object(\n 'schemaItemType', 'Phenomenon',\n 'name', [pd].[Name],\n 'label', [pd].[DisplayLabel],\n 'description', [pd].[Description],\n 'definition', [pd].[Definition]\n ) as [item]\nFROM\n [meta].[PhenomenonDef] [pd]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [pd].[Schema].[Id]\nWHERE [schema].[Name] = :schemaName` : \"\"}\n`;\n\n/**\n * Query for SchemaItemType Format data.\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\n */\nconst format = (singleSchema?: boolean) => `\nSELECT\n [fd].[Schema].[Id] AS [SchemaId],\n json_object(\n 'schemaItemType', 'Format',\n 'name', [fd].[Name],\n 'label', [fd].[DisplayLabel],\n 'description', [fd].[Description],\n 'type', json_extract([fd].[NumericSpec], '$.type'),\n 'precision', json_extract([fd].[NumericSpec], '$.precision'),\n 'roundFactor', json_extract([fd].[NumericSpec], '$.roundFactor'),\n 'minWidth', json_extract([fd].[NumericSpec], '$.minWidth'),\n 'showSignOption', json_extract([fd].[NumericSpec], '$.showSignOption'),\n 'decimalSeparator', json_extract([fd].[NumericSpec], '$.decimalSeparator'),\n 'thousandSeparator', json_extract([fd].[NumericSpec], '$.thousandSeparator'),\n 'uomSeparator', json_extract([fd].[NumericSpec], '$.uomSeparator'),\n 'scientificType', json_extract([fd].[NumericSpec], '$.scientificType'),\n 'stationOffsetSize', json_extract([fd].[NumericSpec], '$.stationOffsetSize'),\n 'stationSeparator', json_extract([fd].[NumericSpec], '$.stationSeparator'),\n 'formatTraits', json_extract([fd].[NumericSpec], '$.formatTraits')\n ${singleSchema ? `\n ,'composite', (\n SELECT\n json_object(\n 'spacer', json_extract([fd1].[CompositeSpec], '$.spacer'),\n 'includeZero', json(IIF(json_extract([fd1].[CompositeSpec], '$.includeZero') = 1, 'true', IIF(json_extract([fd1].[CompositeSpec], '$.includeZero') = 0, 'false', null))),\n 'units', (\n SELECT json_group_array(json(json_object(\n 'name', CONCAT([sd].[Name], '.', [ud].[Name]),\n 'label', [fud].[Label]\n )))\n FROM [meta].[FormatDef] [fd2]\n LEFT JOIN [meta].[FormatCompositeUnitDef] [fud] ON [fud].[Format].[Id] = [fd2].[ECInstanceId]\n LEFT JOIN [meta].[UnitDef] [ud] ON [ud].[ECInstanceId] = [fud].[Unit].[Id]\n INNER JOIN [meta].[ECSchemaDef] [sd] ON [sd].[ECInstanceId] = [ud].[Schema].[Id]\n WHERE [fd2].[ECInstanceId] = [fd1].[ECInstanceId]\n )\n )\n FROM [meta].[FormatDef] [fd1]\n WHERE [fd1].[ECInstanceId]= [fd].[ECInstanceId] AND [fd1].[CompositeSpec] IS NOT NULL\n )` : \"\"}\n) AS item\nFROM\n [meta].[FormatDef] [fd]\n${singleSchema ? `\nJOIN\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [fd].[Schema].[Id]\nWHERE [schema].[Name] = :schemaName` : \"\"}\n`\n\n/**\n * Queries for each SchemaItemType\n * @internal\n */\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const SchemaItemQueries = {\n kindOfQuantity,\n propertyCategory,\n enumeration,\n unit,\n invertedUnit,\n constant,\n unitSystem,\n phenomenon,\n format\n};\n"]}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { SchemaContext } from "../Context";
|
|
2
|
+
import { SchemaItemProps, SchemaProps } from "../Deserialization/JsonProps";
|
|
3
|
+
import { CustomAttribute } from "../Metadata/CustomAttribute";
|
|
4
|
+
/**
|
|
5
|
+
* Parses SchemaProps JSON returned from an ECSql query and returns the correct SchemaProps JSON object.
|
|
6
|
+
* This is necessary as a small amount information (ie. CustomAttributes, unqualified type names, etc.)
|
|
7
|
+
* returned from the iModelDb is in a different format than is required for a given Schema or
|
|
8
|
+
* SchemaItemProps JSON object.
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
export declare class SchemaParser {
|
|
12
|
+
/**
|
|
13
|
+
* Corrects the SchemaProps JSON returned from the query to a proper SchemaProps
|
|
14
|
+
* JSON object.
|
|
15
|
+
* @param schema The SchemaProps JSON object to parse.
|
|
16
|
+
* @param context The SchemaContext that will contain the schema and it's references.
|
|
17
|
+
* @returns The corrected SchemaProps JSON.
|
|
18
|
+
*/
|
|
19
|
+
static parse(schema: SchemaProps, context: SchemaContext): Promise<SchemaProps>;
|
|
20
|
+
/**
|
|
21
|
+
* Parse the given SchemaItemProps array, as returned from an ECSql query, and returns the corrected SchemaItemProps.
|
|
22
|
+
* @param schemaItems The SchemaItemProps array returned from an iModelDb.
|
|
23
|
+
* @param schemaName The name of the Schema to which the SchemaItemProps belong.
|
|
24
|
+
* @param context The SchemaContext containing the Schema.
|
|
25
|
+
* @returns The corrected SchemaItemProps.
|
|
26
|
+
*/
|
|
27
|
+
static parseSchemaItems(schemaItems: readonly SchemaItemProps[], schemaName: string, context: SchemaContext): Promise<SchemaItemProps[] | undefined>;
|
|
28
|
+
private static parseItems;
|
|
29
|
+
static parseItem(props: SchemaItemProps, schemaName: string, context: SchemaContext): Promise<SchemaItemProps>;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Utility method to parse CustomAttribute data retrieved from a ECSql query.
|
|
33
|
+
* @param customAttribute CustomAttribute data as retrieved from an iModel query.
|
|
34
|
+
* @returns The CustomAttribute instance.
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
37
|
+
export declare function parseCustomAttribute(customAttribute: {
|
|
38
|
+
ecClass: string;
|
|
39
|
+
ecSchema: string;
|
|
40
|
+
[propName: string]: any;
|
|
41
|
+
}): CustomAttribute;
|
|
42
|
+
//# sourceMappingURL=SchemaParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaParser.d.ts","sourceRoot":"","sources":["../../../src/IncrementalLoading/SchemaParser.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAE5E,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAY9D;;;;;;GAMG;AACH,qBAAa,YAAY;IACvB;;;;;;OAMG;WACiB,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IAiB5F;;;;;;OAMG;WACiB,gBAAgB,CAAC,WAAW,EAAE,SAAS,eAAe,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,EAAE,GAAG,SAAS,CAAC;mBAU5I,UAAU;WAWX,SAAS,CAAC,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC;CAyB5H;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,eAAe,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAA,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC;CAAE,GAAG,eAAe,CAKrI"}
|