@itwin/ecschema-metadata 5.5.0-dev.1 → 5.5.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.
Files changed (121) hide show
  1. package/lib/cjs/Constants.js.map +1 -1
  2. package/lib/cjs/DelayedPromise.js.map +1 -1
  3. package/lib/cjs/Deserialization/AbstractParser.js.map +1 -1
  4. package/lib/cjs/Deserialization/Helper.js.map +1 -1
  5. package/lib/cjs/Deserialization/JsonParser.js.map +1 -1
  6. package/lib/cjs/Deserialization/JsonProps.js.map +1 -1
  7. package/lib/cjs/Deserialization/SchemaGraphUtil.js.map +1 -1
  8. package/lib/cjs/Deserialization/XmlParser.js.map +1 -1
  9. package/lib/cjs/Deserialization/XmlSerializationUtils.js.map +1 -1
  10. package/lib/cjs/ECName.js.map +1 -1
  11. package/lib/cjs/ECObjects.js.map +1 -1
  12. package/lib/cjs/Exception.js.map +1 -1
  13. package/lib/cjs/Formatting/FormatSetFormatsProvider.js.map +1 -1
  14. package/lib/cjs/Formatting/SchemaFormatsProvider.js.map +1 -1
  15. package/lib/cjs/IncrementalLoading/ClassParsers.js.map +1 -1
  16. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.js.map +1 -1
  17. package/lib/cjs/IncrementalLoading/FullSchemaQueries.js +466 -466
  18. package/lib/cjs/IncrementalLoading/FullSchemaQueries.js.map +1 -1
  19. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.js.map +1 -1
  20. package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.js.map +1 -1
  21. package/lib/cjs/IncrementalLoading/SchemaItemParsers.js.map +1 -1
  22. package/lib/cjs/IncrementalLoading/SchemaItemQueries.js +235 -235
  23. package/lib/cjs/IncrementalLoading/SchemaItemQueries.js.map +1 -1
  24. package/lib/cjs/IncrementalLoading/SchemaParser.js.map +1 -1
  25. package/lib/cjs/IncrementalLoading/SchemaStubQueries.js +309 -309
  26. package/lib/cjs/IncrementalLoading/SchemaStubQueries.js.map +1 -1
  27. package/lib/cjs/Interfaces.js.map +1 -1
  28. package/lib/cjs/Metadata/Class.js.map +1 -1
  29. package/lib/cjs/Metadata/Constant.js.map +1 -1
  30. package/lib/cjs/Metadata/CustomAttribute.js.map +1 -1
  31. package/lib/cjs/Metadata/CustomAttributeClass.js.map +1 -1
  32. package/lib/cjs/Metadata/EntityClass.js.map +1 -1
  33. package/lib/cjs/Metadata/Enumeration.js.map +1 -1
  34. package/lib/cjs/Metadata/Format.js.map +1 -1
  35. package/lib/cjs/Metadata/InvertedUnit.js.map +1 -1
  36. package/lib/cjs/Metadata/KindOfQuantity.js.map +1 -1
  37. package/lib/cjs/Metadata/Mixin.js.map +1 -1
  38. package/lib/cjs/Metadata/OverrideFormat.js.map +1 -1
  39. package/lib/cjs/Metadata/Phenomenon.js.map +1 -1
  40. package/lib/cjs/Metadata/Property.js.map +1 -1
  41. package/lib/cjs/Metadata/PropertyCategory.js.map +1 -1
  42. package/lib/cjs/Metadata/RelationshipClass.js.map +1 -1
  43. package/lib/cjs/Metadata/Schema.js.map +1 -1
  44. package/lib/cjs/Metadata/SchemaItem.js.map +1 -1
  45. package/lib/cjs/Metadata/UnitSystem.js.map +1 -1
  46. package/lib/cjs/PropertyTypes.js.map +1 -1
  47. package/lib/cjs/SchemaJsonLocater.js.map +1 -1
  48. package/lib/cjs/SchemaKey.js.map +1 -1
  49. package/lib/cjs/SchemaLoader.js.map +1 -1
  50. package/lib/cjs/SchemaPartVisitorDelegate.js.map +1 -1
  51. package/lib/cjs/UnitConversion/Graph.js.map +1 -1
  52. package/lib/cjs/UnitConversion/Parser.js.map +1 -1
  53. package/lib/cjs/UnitConversion/UnitConversion.js.map +1 -1
  54. package/lib/cjs/UnitConversion/UnitConverter.js.map +1 -1
  55. package/lib/cjs/UnitConversion/UnitTree.js.map +1 -1
  56. package/lib/cjs/UnitProvider/SchemaUnitProvider.js.map +1 -1
  57. package/lib/cjs/Validation/SchemaWalker.js.map +1 -1
  58. package/lib/cjs/ecschema-metadata.js.map +1 -1
  59. package/lib/cjs/utils/SchemaGraph.js.map +1 -1
  60. package/lib/cjs/utils/SchemaLoadingController.js.map +1 -1
  61. package/lib/esm/Constants.js.map +1 -1
  62. package/lib/esm/DelayedPromise.js.map +1 -1
  63. package/lib/esm/Deserialization/AbstractParser.js.map +1 -1
  64. package/lib/esm/Deserialization/Helper.js.map +1 -1
  65. package/lib/esm/Deserialization/JsonParser.js.map +1 -1
  66. package/lib/esm/Deserialization/JsonProps.js.map +1 -1
  67. package/lib/esm/Deserialization/SchemaGraphUtil.js.map +1 -1
  68. package/lib/esm/Deserialization/XmlParser.js.map +1 -1
  69. package/lib/esm/Deserialization/XmlSerializationUtils.js.map +1 -1
  70. package/lib/esm/ECName.js.map +1 -1
  71. package/lib/esm/ECObjects.js.map +1 -1
  72. package/lib/esm/Exception.js.map +1 -1
  73. package/lib/esm/Formatting/FormatSetFormatsProvider.js.map +1 -1
  74. package/lib/esm/Formatting/SchemaFormatsProvider.js.map +1 -1
  75. package/lib/esm/IncrementalLoading/ClassParsers.js.map +1 -1
  76. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.js.map +1 -1
  77. package/lib/esm/IncrementalLoading/FullSchemaQueries.js +466 -466
  78. package/lib/esm/IncrementalLoading/FullSchemaQueries.js.map +1 -1
  79. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.js.map +1 -1
  80. package/lib/esm/IncrementalLoading/IncrementalSchemaReader.js.map +1 -1
  81. package/lib/esm/IncrementalLoading/SchemaItemParsers.js.map +1 -1
  82. package/lib/esm/IncrementalLoading/SchemaItemQueries.js +235 -235
  83. package/lib/esm/IncrementalLoading/SchemaItemQueries.js.map +1 -1
  84. package/lib/esm/IncrementalLoading/SchemaParser.js.map +1 -1
  85. package/lib/esm/IncrementalLoading/SchemaStubQueries.js +309 -309
  86. package/lib/esm/IncrementalLoading/SchemaStubQueries.js.map +1 -1
  87. package/lib/esm/Interfaces.js.map +1 -1
  88. package/lib/esm/Metadata/Class.js.map +1 -1
  89. package/lib/esm/Metadata/Constant.js.map +1 -1
  90. package/lib/esm/Metadata/CustomAttribute.js.map +1 -1
  91. package/lib/esm/Metadata/CustomAttributeClass.js.map +1 -1
  92. package/lib/esm/Metadata/EntityClass.js.map +1 -1
  93. package/lib/esm/Metadata/Enumeration.js.map +1 -1
  94. package/lib/esm/Metadata/Format.js.map +1 -1
  95. package/lib/esm/Metadata/InvertedUnit.js.map +1 -1
  96. package/lib/esm/Metadata/KindOfQuantity.js.map +1 -1
  97. package/lib/esm/Metadata/Mixin.js.map +1 -1
  98. package/lib/esm/Metadata/OverrideFormat.js.map +1 -1
  99. package/lib/esm/Metadata/Phenomenon.js.map +1 -1
  100. package/lib/esm/Metadata/Property.js.map +1 -1
  101. package/lib/esm/Metadata/PropertyCategory.js.map +1 -1
  102. package/lib/esm/Metadata/RelationshipClass.js.map +1 -1
  103. package/lib/esm/Metadata/Schema.js.map +1 -1
  104. package/lib/esm/Metadata/SchemaItem.js.map +1 -1
  105. package/lib/esm/Metadata/UnitSystem.js.map +1 -1
  106. package/lib/esm/PropertyTypes.js.map +1 -1
  107. package/lib/esm/SchemaJsonLocater.js.map +1 -1
  108. package/lib/esm/SchemaKey.js.map +1 -1
  109. package/lib/esm/SchemaLoader.js.map +1 -1
  110. package/lib/esm/SchemaPartVisitorDelegate.js.map +1 -1
  111. package/lib/esm/UnitConversion/Graph.js.map +1 -1
  112. package/lib/esm/UnitConversion/Parser.js.map +1 -1
  113. package/lib/esm/UnitConversion/UnitConversion.js.map +1 -1
  114. package/lib/esm/UnitConversion/UnitConverter.js.map +1 -1
  115. package/lib/esm/UnitConversion/UnitTree.js.map +1 -1
  116. package/lib/esm/UnitProvider/SchemaUnitProvider.js.map +1 -1
  117. package/lib/esm/Validation/SchemaWalker.js.map +1 -1
  118. package/lib/esm/ecschema-metadata.js.map +1 -1
  119. package/lib/esm/utils/SchemaGraph.js.map +1 -1
  120. package/lib/esm/utils/SchemaLoadingController.js.map +1 -1
  121. package/package.json +6 -6
@@ -13,281 +13,281 @@ exports.SchemaItemQueries = void 0;
13
13
  * Query for SchemaItemType KindOfQuantity data.
14
14
  * @param singleSchema Indicates if a filter and join for a single Schema should be applied.
15
15
  */
16
- const kindOfQuantity = (singleSchema) => `
17
- SELECT
18
- [koq].[Schema].[Id] AS [SchemaId],
19
- json_object (
20
- 'schemaItemType', 'KindOfQuantity',
21
- 'name', [koq].[Name],
22
- 'label', [koq].[DisplayLabel],
23
- 'description', [koq].[Description],
24
- 'relativeError', [koq].[RelativeError],
25
- 'persistenceUnit', [koq].[PersistenceUnit]
26
- ${singleSchema ? `
27
- ,'presentationUnits', (
28
- SELECT json_group_array(js."value")
29
- FROM [meta].[KindOfQuantityDef] [koq1], json1.json_each([PresentationUnits]) js
30
- WHERE [koq1].[ECInstanceId] = [koq].[ECInstanceId]
31
- ) ` : ""}
32
- ) as [item]
33
- FROM
34
- [meta].[KindOfQuantityDef] [koq]
35
- ${singleSchema ? `
36
- JOIN
37
- [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [koq].[Schema].[Id]
38
- WHERE [schema].[Name] = :schemaName
39
- ` : ""}
16
+ const kindOfQuantity = (singleSchema) => `
17
+ SELECT
18
+ [koq].[Schema].[Id] AS [SchemaId],
19
+ json_object (
20
+ 'schemaItemType', 'KindOfQuantity',
21
+ 'name', [koq].[Name],
22
+ 'label', [koq].[DisplayLabel],
23
+ 'description', [koq].[Description],
24
+ 'relativeError', [koq].[RelativeError],
25
+ 'persistenceUnit', [koq].[PersistenceUnit]
26
+ ${singleSchema ? `
27
+ ,'presentationUnits', (
28
+ SELECT json_group_array(js."value")
29
+ FROM [meta].[KindOfQuantityDef] [koq1], json1.json_each([PresentationUnits]) js
30
+ WHERE [koq1].[ECInstanceId] = [koq].[ECInstanceId]
31
+ ) ` : ""}
32
+ ) as [item]
33
+ FROM
34
+ [meta].[KindOfQuantityDef] [koq]
35
+ ${singleSchema ? `
36
+ JOIN
37
+ [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [koq].[Schema].[Id]
38
+ WHERE [schema].[Name] = :schemaName
39
+ ` : ""}
40
40
  `;
41
41
  /**
42
42
  * Query for SchemaItemType PropertyCategory data.
43
43
  * @param singleSchema Indicates if a filter and join for a single Schema should be applied.
44
44
  */
45
- const propertyCategory = (singleSchema) => `
46
- SELECT
47
- [pc].[Schema].[Id] AS [SchemaId],
48
- json_object (
49
- 'schemaItemType', 'PropertyCategory',
50
- 'name', [pc].[Name],
51
- 'label', [pc].[DisplayLabel],
52
- 'description', [pc].[Description],
53
- 'priority', [pc].[Priority]
54
- ) as [item]
55
- FROM
56
- [meta].[PropertyCategoryDef] [pc]
57
- ${singleSchema ? `
58
- JOIN
59
- [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [pc].[Schema].[Id]
60
- WHERE [schema].[Name] = :schemaName
61
- ` : ""}
45
+ const propertyCategory = (singleSchema) => `
46
+ SELECT
47
+ [pc].[Schema].[Id] AS [SchemaId],
48
+ json_object (
49
+ 'schemaItemType', 'PropertyCategory',
50
+ 'name', [pc].[Name],
51
+ 'label', [pc].[DisplayLabel],
52
+ 'description', [pc].[Description],
53
+ 'priority', [pc].[Priority]
54
+ ) as [item]
55
+ FROM
56
+ [meta].[PropertyCategoryDef] [pc]
57
+ ${singleSchema ? `
58
+ JOIN
59
+ [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [pc].[Schema].[Id]
60
+ WHERE [schema].[Name] = :schemaName
61
+ ` : ""}
62
62
  `;
63
63
  /**
64
64
  * Query for SchemaItemType Enumeration data.
65
65
  * @param singleSchema Indicates if a filter and join for a single Schema should be applied.
66
66
  */
67
- const enumeration = (singleSchema) => `
68
- SELECT
69
- [ed].[Schema].[Id] AS [SchemaId],
70
- json_object (
71
- 'schemaItemType', 'Enumeration',
72
- 'name', [ed].[Name],
73
- 'label', [ed].[DisplayLabel],
74
- 'description', [ed].[Description],
75
- 'type', IIF([ed].[Type] = 1281, 'int', IIF([ed].[Type] = 2305, 'string', null)),
76
- 'isStrict', IIF([ed].[IsStrict] = 1, json('true'), json('false')),
77
- 'enumerators', (
78
- SELECT json_group_array(json(json_object(
79
- 'name', json_extract(js."value", '$.Name'),
80
- 'value', IFNULL(json_extract(js."value", '$.StringValue'), (json_extract(js."value", '$.IntValue'))),
81
- 'label', json_extract(js."value", '$.DisplayLabel'),
82
- 'description', json_extract(js."value", '$.Description')
83
- )))
84
- FROM [meta].[ECEnumerationDef] [enumerationDef], json1.json_each([EnumValues]) js
85
- WHERE [enumerationDef].[ECInstanceId] = [ed].[ECInstanceId]
86
- )
87
- ) as [item]
88
- FROM
89
- [meta].[ECEnumerationDef] [ed]
90
- ${singleSchema ? `
91
- JOIN
92
- [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [ed].[Schema].[Id]
93
- WHERE [schema].[Name] = :schemaName` : ""}
67
+ const enumeration = (singleSchema) => `
68
+ SELECT
69
+ [ed].[Schema].[Id] AS [SchemaId],
70
+ json_object (
71
+ 'schemaItemType', 'Enumeration',
72
+ 'name', [ed].[Name],
73
+ 'label', [ed].[DisplayLabel],
74
+ 'description', [ed].[Description],
75
+ 'type', IIF([ed].[Type] = 1281, 'int', IIF([ed].[Type] = 2305, 'string', null)),
76
+ 'isStrict', IIF([ed].[IsStrict] = 1, json('true'), json('false')),
77
+ 'enumerators', (
78
+ SELECT json_group_array(json(json_object(
79
+ 'name', json_extract(js."value", '$.Name'),
80
+ 'value', IFNULL(json_extract(js."value", '$.StringValue'), (json_extract(js."value", '$.IntValue'))),
81
+ 'label', json_extract(js."value", '$.DisplayLabel'),
82
+ 'description', json_extract(js."value", '$.Description')
83
+ )))
84
+ FROM [meta].[ECEnumerationDef] [enumerationDef], json1.json_each([EnumValues]) js
85
+ WHERE [enumerationDef].[ECInstanceId] = [ed].[ECInstanceId]
86
+ )
87
+ ) as [item]
88
+ FROM
89
+ [meta].[ECEnumerationDef] [ed]
90
+ ${singleSchema ? `
91
+ JOIN
92
+ [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [ed].[Schema].[Id]
93
+ WHERE [schema].[Name] = :schemaName` : ""}
94
94
  `;
95
95
  /**
96
96
  * Query for SchemaItemType Unit data.
97
97
  * @param singleSchema Indicates if a filter and join for a single Schema should be applied.
98
98
  */
99
- const unit = (singleSchema) => `
100
- SELECT
101
- [ud].[Schema].[Id] AS [SchemaId],
102
- json_object (
103
- 'schemaItemType', 'Unit',
104
- 'name', [ud].[Name],
105
- 'label', [ud].[DisplayLabel],
106
- 'description', [ud].[Description],
107
- 'definition', [ud].[Definition],
108
- 'numerator', IIF([ud].[Numerator] IS NULL, NULL, json(format('%.16g', [ud].[Numerator]))),
109
- 'denominator', IIF([ud].[Denominator] IS NULL, NULL, json(format('%.16g', [ud].[Denominator]))),
110
- 'offset', IIF([ud].[Offset] IS NULL, NULL, json(format('%!.15f', [ud].[Offset]))),
111
- 'unitSystem', CONCAT([uss].[Name],'.', [usd].[Name]),
112
- 'phenomenon', CONCAT([ps].[Name],'.', [pd].[Name])
113
- ) as item
114
- FROM
115
- [meta].[UnitDef] [ud]
116
- ${singleSchema ? `
117
- JOIN
118
- [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [ud].[Schema].[Id]` : ""}
119
- JOIN [meta].[UnitSystemDef] [usd]
120
- ON [usd].[ECInstanceId] = [ud].[UnitSystem].[Id]
121
- JOIN [meta].[ECSchemaDef] [uss]
122
- ON [uss].[ECInstanceId] = [usd].[Schema].[Id]
123
- JOIN [meta].[PhenomenonDef] [pd]
124
- ON [pd].[ECInstanceId] = [ud].[Phenomenon].[Id]
125
- JOIN [meta].[ECSchemaDef] [ps]
126
- ON [ps].[ECInstanceId] = [pd].[Schema].[Id]
127
- WHERE
128
- ${singleSchema ? `
129
- [schema].[Name] = :schemaName AND` : ""}
130
- [ud].[IsConstant] = 0 AND
131
- [ud].[InvertingUnit] IS NULL
99
+ const unit = (singleSchema) => `
100
+ SELECT
101
+ [ud].[Schema].[Id] AS [SchemaId],
102
+ json_object (
103
+ 'schemaItemType', 'Unit',
104
+ 'name', [ud].[Name],
105
+ 'label', [ud].[DisplayLabel],
106
+ 'description', [ud].[Description],
107
+ 'definition', [ud].[Definition],
108
+ 'numerator', IIF([ud].[Numerator] IS NULL, NULL, json(format('%.16g', [ud].[Numerator]))),
109
+ 'denominator', IIF([ud].[Denominator] IS NULL, NULL, json(format('%.16g', [ud].[Denominator]))),
110
+ 'offset', IIF([ud].[Offset] IS NULL, NULL, json(format('%!.15f', [ud].[Offset]))),
111
+ 'unitSystem', CONCAT([uss].[Name],'.', [usd].[Name]),
112
+ 'phenomenon', CONCAT([ps].[Name],'.', [pd].[Name])
113
+ ) as item
114
+ FROM
115
+ [meta].[UnitDef] [ud]
116
+ ${singleSchema ? `
117
+ JOIN
118
+ [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [ud].[Schema].[Id]` : ""}
119
+ JOIN [meta].[UnitSystemDef] [usd]
120
+ ON [usd].[ECInstanceId] = [ud].[UnitSystem].[Id]
121
+ JOIN [meta].[ECSchemaDef] [uss]
122
+ ON [uss].[ECInstanceId] = [usd].[Schema].[Id]
123
+ JOIN [meta].[PhenomenonDef] [pd]
124
+ ON [pd].[ECInstanceId] = [ud].[Phenomenon].[Id]
125
+ JOIN [meta].[ECSchemaDef] [ps]
126
+ ON [ps].[ECInstanceId] = [pd].[Schema].[Id]
127
+ WHERE
128
+ ${singleSchema ? `
129
+ [schema].[Name] = :schemaName AND` : ""}
130
+ [ud].[IsConstant] = 0 AND
131
+ [ud].[InvertingUnit] IS NULL
132
132
  `;
133
133
  /**
134
134
  * Query for SchemaItemType InvertedUnit data.
135
135
  * @param singleSchema Indicates if a filter and join for a single Schema should be applied.
136
136
  */
137
- const invertedUnit = (singleSchema) => `
138
- SELECT
139
- [ud].[Schema].[Id] AS [SchemaId],
140
- json_object (
141
- 'schemaItemType', 'InvertedUnit',
142
- 'name', [ud].[Name],
143
- 'label', [ud].[DisplayLabel],
144
- 'description', [ud].[Description],
145
- 'unitSystem', CONCAT([systemSchema].[Name],'.', [usd].[Name]),
146
- 'invertsUnit', IIF([iud].[Name] IS NULL, null, CONCAT([ius].[Name],'.', [iud].[Name]))
147
- ) as [item]
148
- FROM
149
- [meta].[UnitDef] [ud]
150
- ${singleSchema ? `
151
- JOIN
152
- [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [ud].[Schema].[Id]` : ""}
153
- JOIN [meta].[UnitSystemDef] [usd]
154
- ON [usd].[ECInstanceId] = [ud].[UnitSystem].[Id]
155
- JOIN [meta].[ECSchemaDef] [systemSchema]
156
- ON [systemSchema].[ECInstanceId] = [usd].[Schema].[Id]
157
- LEFT JOIN [meta].[UnitDef] [iud]
158
- ON [iud].[ECInstanceId] = [ud].[InvertingUnit].[Id]
159
- LEFT JOIN [meta].[ECSchemaDef] [ius]
160
- ON [ius].[ECInstanceId] = [iud].[Schema].[Id]
161
- WHERE
162
- ${singleSchema ? `
163
- [schema].[Name] = :schemaName AND` : ""}
164
- [ud].[IsConstant] = 0 AND
165
- [ud].[InvertingUnit] IS NOT NULL
137
+ const invertedUnit = (singleSchema) => `
138
+ SELECT
139
+ [ud].[Schema].[Id] AS [SchemaId],
140
+ json_object (
141
+ 'schemaItemType', 'InvertedUnit',
142
+ 'name', [ud].[Name],
143
+ 'label', [ud].[DisplayLabel],
144
+ 'description', [ud].[Description],
145
+ 'unitSystem', CONCAT([systemSchema].[Name],'.', [usd].[Name]),
146
+ 'invertsUnit', IIF([iud].[Name] IS NULL, null, CONCAT([ius].[Name],'.', [iud].[Name]))
147
+ ) as [item]
148
+ FROM
149
+ [meta].[UnitDef] [ud]
150
+ ${singleSchema ? `
151
+ JOIN
152
+ [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [ud].[Schema].[Id]` : ""}
153
+ JOIN [meta].[UnitSystemDef] [usd]
154
+ ON [usd].[ECInstanceId] = [ud].[UnitSystem].[Id]
155
+ JOIN [meta].[ECSchemaDef] [systemSchema]
156
+ ON [systemSchema].[ECInstanceId] = [usd].[Schema].[Id]
157
+ LEFT JOIN [meta].[UnitDef] [iud]
158
+ ON [iud].[ECInstanceId] = [ud].[InvertingUnit].[Id]
159
+ LEFT JOIN [meta].[ECSchemaDef] [ius]
160
+ ON [ius].[ECInstanceId] = [iud].[Schema].[Id]
161
+ WHERE
162
+ ${singleSchema ? `
163
+ [schema].[Name] = :schemaName AND` : ""}
164
+ [ud].[IsConstant] = 0 AND
165
+ [ud].[InvertingUnit] IS NOT NULL
166
166
  `;
167
167
  /**
168
168
  * Query for SchemaItemType Constant data.
169
169
  * @param singleSchema Indicates if a filter and join for a single Schema should be applied.
170
170
  */
171
- const constant = (singleSchema) => `
172
- SELECT
173
- [cd].[Schema].[Id] AS [SchemaId],
174
- json_object(
175
- 'schemaItemType', 'Constant',
176
- 'name', [cd].[Name],
177
- 'label', [cd].[DisplayLabel],
178
- 'description', [cd].[Description],
179
- 'definition', [cd].[Definition],
180
- 'numerator', IIF([cd].[Numerator] IS NULL, NULL, json(format('%.16g', [cd].[Numerator]))),
181
- 'denominator', IIF([cd].[Denominator] IS NULL, NULL, json(format('%.16g', [cd].[Denominator]))),
182
- 'phenomenon', CONCAT([phenomSchema].[Name],'.', [phenomDef].[Name])
183
- ) as item
184
- FROM
185
- [meta].[UnitDef] [cd]
186
- ${singleSchema ? `
187
- JOIN
188
- [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [cd].[Schema].[Id]` : ""}
189
- JOIN [meta].[PhenomenonDef] [phenomDef]
190
- ON [phenomDef].[ECInstanceId] = [cd].[Phenomenon].[Id]
191
- JOIN [meta].[ECSchemaDef] [phenomSchema]
192
- ON [phenomSchema].[ECInstanceId] = [phenomDef].[Schema].[Id]
193
- WHERE
194
- ${singleSchema ? `
195
- [schema].[Name] = :schemaName AND` : ""}
196
- [cd].[IsConstant] = 1
171
+ const constant = (singleSchema) => `
172
+ SELECT
173
+ [cd].[Schema].[Id] AS [SchemaId],
174
+ json_object(
175
+ 'schemaItemType', 'Constant',
176
+ 'name', [cd].[Name],
177
+ 'label', [cd].[DisplayLabel],
178
+ 'description', [cd].[Description],
179
+ 'definition', [cd].[Definition],
180
+ 'numerator', IIF([cd].[Numerator] IS NULL, NULL, json(format('%.16g', [cd].[Numerator]))),
181
+ 'denominator', IIF([cd].[Denominator] IS NULL, NULL, json(format('%.16g', [cd].[Denominator]))),
182
+ 'phenomenon', CONCAT([phenomSchema].[Name],'.', [phenomDef].[Name])
183
+ ) as item
184
+ FROM
185
+ [meta].[UnitDef] [cd]
186
+ ${singleSchema ? `
187
+ JOIN
188
+ [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [cd].[Schema].[Id]` : ""}
189
+ JOIN [meta].[PhenomenonDef] [phenomDef]
190
+ ON [phenomDef].[ECInstanceId] = [cd].[Phenomenon].[Id]
191
+ JOIN [meta].[ECSchemaDef] [phenomSchema]
192
+ ON [phenomSchema].[ECInstanceId] = [phenomDef].[Schema].[Id]
193
+ WHERE
194
+ ${singleSchema ? `
195
+ [schema].[Name] = :schemaName AND` : ""}
196
+ [cd].[IsConstant] = 1
197
197
  `;
198
198
  /**
199
199
  * Query for SchemaItemType UnitSystem data.
200
200
  * @param singleSchema Indicates if a filter and join for a single Schema should be applied.
201
201
  */
202
- const unitSystem = (singleSchema) => `
203
- SELECT
204
- [us].[Schema].[Id] AS [SchemaId],
205
- json_object (
206
- 'schemaItemType', 'UnitSystem',
207
- 'name', [us].[Name],
208
- 'label', [us].[DisplayLabel],
209
- 'description', [us].[Description]
210
- ) as [item]
211
- FROM
212
- [meta].[UnitSystemDef] [us]
213
- ${singleSchema ? `
214
- JOIN
215
- [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [us].[Schema].[Id]
216
- WHERE [schema].[Name] = :schemaName` : ""}
202
+ const unitSystem = (singleSchema) => `
203
+ SELECT
204
+ [us].[Schema].[Id] AS [SchemaId],
205
+ json_object (
206
+ 'schemaItemType', 'UnitSystem',
207
+ 'name', [us].[Name],
208
+ 'label', [us].[DisplayLabel],
209
+ 'description', [us].[Description]
210
+ ) as [item]
211
+ FROM
212
+ [meta].[UnitSystemDef] [us]
213
+ ${singleSchema ? `
214
+ JOIN
215
+ [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [us].[Schema].[Id]
216
+ WHERE [schema].[Name] = :schemaName` : ""}
217
217
  `;
218
218
  /**
219
219
  * Query for SchemaItemType Phenomenon data.
220
220
  * @param singleSchema Indicates if a filter and join for a single Schema should be applied.
221
221
  */
222
- const phenomenon = (singleSchema) => `
223
- SELECT
224
- [pd].[Schema].[Id] AS [SchemaId],
225
- json_object(
226
- 'schemaItemType', 'Phenomenon',
227
- 'name', [pd].[Name],
228
- 'label', [pd].[DisplayLabel],
229
- 'description', [pd].[Description],
230
- 'definition', [pd].[Definition]
231
- ) as [item]
232
- FROM
233
- [meta].[PhenomenonDef] [pd]
234
- ${singleSchema ? `
235
- JOIN
236
- [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [pd].[Schema].[Id]
237
- WHERE [schema].[Name] = :schemaName` : ""}
222
+ const phenomenon = (singleSchema) => `
223
+ SELECT
224
+ [pd].[Schema].[Id] AS [SchemaId],
225
+ json_object(
226
+ 'schemaItemType', 'Phenomenon',
227
+ 'name', [pd].[Name],
228
+ 'label', [pd].[DisplayLabel],
229
+ 'description', [pd].[Description],
230
+ 'definition', [pd].[Definition]
231
+ ) as [item]
232
+ FROM
233
+ [meta].[PhenomenonDef] [pd]
234
+ ${singleSchema ? `
235
+ JOIN
236
+ [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [pd].[Schema].[Id]
237
+ WHERE [schema].[Name] = :schemaName` : ""}
238
238
  `;
239
239
  /**
240
240
  * Query for SchemaItemType Format data.
241
241
  * @param singleSchema Indicates if a filter and join for a single Schema should be applied.
242
242
  */
243
- const format = (singleSchema) => `
244
- SELECT
245
- [fd].[Schema].[Id] AS [SchemaId],
246
- json_object(
247
- 'schemaItemType', 'Format',
248
- 'name', [fd].[Name],
249
- 'label', [fd].[DisplayLabel],
250
- 'description', [fd].[Description],
251
- 'type', json_extract([fd].[NumericSpec], '$.type'),
252
- 'precision', json_extract([fd].[NumericSpec], '$.precision'),
253
- 'roundFactor', json_extract([fd].[NumericSpec], '$.roundFactor'),
254
- 'minWidth', json_extract([fd].[NumericSpec], '$.minWidth'),
255
- 'showSignOption', json_extract([fd].[NumericSpec], '$.showSignOption'),
256
- 'decimalSeparator', json_extract([fd].[NumericSpec], '$.decimalSeparator'),
257
- 'thousandSeparator', json_extract([fd].[NumericSpec], '$.thousandSeparator'),
258
- 'uomSeparator', json_extract([fd].[NumericSpec], '$.uomSeparator'),
259
- 'scientificType', json_extract([fd].[NumericSpec], '$.scientificType'),
260
- 'stationOffsetSize', json_extract([fd].[NumericSpec], '$.stationOffsetSize'),
261
- 'stationSeparator', json_extract([fd].[NumericSpec], '$.stationSeparator'),
262
- 'formatTraits', json_extract([fd].[NumericSpec], '$.formatTraits')
263
- ${singleSchema ? `
264
- ,'composite', (
265
- SELECT
266
- json_object(
267
- 'spacer', json_extract([fd1].[CompositeSpec], '$.spacer'),
268
- 'includeZero', json(IIF(json_extract([fd1].[CompositeSpec], '$.includeZero') = 1, 'true', IIF(json_extract([fd1].[CompositeSpec], '$.includeZero') = 0, 'false', null))),
269
- 'units', (
270
- SELECT json_group_array(json(json_object(
271
- 'name', CONCAT([sd].[Name], '.', [ud].[Name]),
272
- 'label', [fud].[Label]
273
- )))
274
- FROM [meta].[FormatDef] [fd2]
275
- LEFT JOIN [meta].[FormatCompositeUnitDef] [fud] ON [fud].[Format].[Id] = [fd2].[ECInstanceId]
276
- LEFT JOIN [meta].[UnitDef] [ud] ON [ud].[ECInstanceId] = [fud].[Unit].[Id]
277
- INNER JOIN [meta].[ECSchemaDef] [sd] ON [sd].[ECInstanceId] = [ud].[Schema].[Id]
278
- WHERE [fd2].[ECInstanceId] = [fd1].[ECInstanceId]
279
- )
280
- )
281
- FROM [meta].[FormatDef] [fd1]
282
- WHERE [fd1].[ECInstanceId]= [fd].[ECInstanceId] AND [fd1].[CompositeSpec] IS NOT NULL
283
- )` : ""}
284
- ) AS item
285
- FROM
286
- [meta].[FormatDef] [fd]
287
- ${singleSchema ? `
288
- JOIN
289
- [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [fd].[Schema].[Id]
290
- WHERE [schema].[Name] = :schemaName` : ""}
243
+ const format = (singleSchema) => `
244
+ SELECT
245
+ [fd].[Schema].[Id] AS [SchemaId],
246
+ json_object(
247
+ 'schemaItemType', 'Format',
248
+ 'name', [fd].[Name],
249
+ 'label', [fd].[DisplayLabel],
250
+ 'description', [fd].[Description],
251
+ 'type', json_extract([fd].[NumericSpec], '$.type'),
252
+ 'precision', json_extract([fd].[NumericSpec], '$.precision'),
253
+ 'roundFactor', json_extract([fd].[NumericSpec], '$.roundFactor'),
254
+ 'minWidth', json_extract([fd].[NumericSpec], '$.minWidth'),
255
+ 'showSignOption', json_extract([fd].[NumericSpec], '$.showSignOption'),
256
+ 'decimalSeparator', json_extract([fd].[NumericSpec], '$.decimalSeparator'),
257
+ 'thousandSeparator', json_extract([fd].[NumericSpec], '$.thousandSeparator'),
258
+ 'uomSeparator', json_extract([fd].[NumericSpec], '$.uomSeparator'),
259
+ 'scientificType', json_extract([fd].[NumericSpec], '$.scientificType'),
260
+ 'stationOffsetSize', json_extract([fd].[NumericSpec], '$.stationOffsetSize'),
261
+ 'stationSeparator', json_extract([fd].[NumericSpec], '$.stationSeparator'),
262
+ 'formatTraits', json_extract([fd].[NumericSpec], '$.formatTraits')
263
+ ${singleSchema ? `
264
+ ,'composite', (
265
+ SELECT
266
+ json_object(
267
+ 'spacer', json_extract([fd1].[CompositeSpec], '$.spacer'),
268
+ 'includeZero', json(IIF(json_extract([fd1].[CompositeSpec], '$.includeZero') = 1, 'true', IIF(json_extract([fd1].[CompositeSpec], '$.includeZero') = 0, 'false', null))),
269
+ 'units', (
270
+ SELECT json_group_array(json(json_object(
271
+ 'name', CONCAT([sd].[Name], '.', [ud].[Name]),
272
+ 'label', [fud].[Label]
273
+ )))
274
+ FROM [meta].[FormatDef] [fd2]
275
+ LEFT JOIN [meta].[FormatCompositeUnitDef] [fud] ON [fud].[Format].[Id] = [fd2].[ECInstanceId]
276
+ LEFT JOIN [meta].[UnitDef] [ud] ON [ud].[ECInstanceId] = [fud].[Unit].[Id]
277
+ INNER JOIN [meta].[ECSchemaDef] [sd] ON [sd].[ECInstanceId] = [ud].[Schema].[Id]
278
+ WHERE [fd2].[ECInstanceId] = [fd1].[ECInstanceId]
279
+ )
280
+ )
281
+ FROM [meta].[FormatDef] [fd1]
282
+ WHERE [fd1].[ECInstanceId]= [fd].[ECInstanceId] AND [fd1].[CompositeSpec] IS NOT NULL
283
+ )` : ""}
284
+ ) AS item
285
+ FROM
286
+ [meta].[FormatDef] [fd]
287
+ ${singleSchema ? `
288
+ JOIN
289
+ [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [fd].[Schema].[Id]
290
+ WHERE [schema].[Name] = :schemaName` : ""}
291
291
  `;
292
292
  /**
293
293
  * Queries for each SchemaItemType
@@ -1 +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;;;;;;;;;;MAU7C,YAAY,CAAC,CAAC,CAAC;;;;;OAKd,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;AACnD,QAAA,iBAAiB,GAAG;IAC/B,cAAc;IACd,gBAAgB;IAChB,WAAW;IACX,IAAI;IACJ,YAAY;IACZ,QAAQ;IACR,UAAU;IACV,UAAU;IACV,MAAM;CACP,CAAC","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\n\r\n/************************************************************************************\r\n * All SchemaItem queries for each SchemaItemType are defined here. These queries\r\n * are shared for both 'partial schema' and 'full schema' queries.\r\n ***********************************************************************************/\r\n\r\n/**\r\n * Query for SchemaItemType KindOfQuantity data.\r\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\r\n */\r\nconst kindOfQuantity = (singleSchema?: boolean) => `\r\nSELECT\r\n [koq].[Schema].[Id] AS [SchemaId],\r\n json_object (\r\n 'schemaItemType', 'KindOfQuantity',\r\n 'name', [koq].[Name],\r\n 'label', [koq].[DisplayLabel],\r\n 'description', [koq].[Description],\r\n 'relativeError', [koq].[RelativeError],\r\n 'persistenceUnit', [koq].[PersistenceUnit]\r\n ${singleSchema ? `\r\n ,'presentationUnits', (\r\n SELECT json_group_array(js.\"value\")\r\n FROM [meta].[KindOfQuantityDef] [koq1], json1.json_each([PresentationUnits]) js\r\n WHERE [koq1].[ECInstanceId] = [koq].[ECInstanceId]\r\n ) `: \"\"}\r\n ) as [item]\r\nFROM\r\n [meta].[KindOfQuantityDef] [koq]\r\n${singleSchema ? `\r\nJOIN\r\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [koq].[Schema].[Id]\r\nWHERE [schema].[Name] = :schemaName\r\n` : \"\"}\r\n`;\r\n\r\n/**\r\n * Query for SchemaItemType PropertyCategory data.\r\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\r\n */\r\nconst propertyCategory = (singleSchema?: boolean) => `\r\nSELECT\r\n [pc].[Schema].[Id] AS [SchemaId],\r\n json_object (\r\n 'schemaItemType', 'PropertyCategory',\r\n 'name', [pc].[Name],\r\n 'label', [pc].[DisplayLabel],\r\n 'description', [pc].[Description],\r\n 'priority', [pc].[Priority]\r\n ) as [item]\r\nFROM\r\n [meta].[PropertyCategoryDef] [pc]\r\n${singleSchema ? `\r\nJOIN\r\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [pc].[Schema].[Id]\r\nWHERE [schema].[Name] = :schemaName\r\n` : \"\"}\r\n`;\r\n\r\n/**\r\n * Query for SchemaItemType Enumeration data.\r\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\r\n */\r\nconst enumeration = (singleSchema?: boolean) => `\r\nSELECT\r\n [ed].[Schema].[Id] AS [SchemaId],\r\n json_object (\r\n 'schemaItemType', 'Enumeration',\r\n 'name', [ed].[Name],\r\n 'label', [ed].[DisplayLabel],\r\n 'description', [ed].[Description],\r\n 'type', IIF([ed].[Type] = 1281, 'int', IIF([ed].[Type] = 2305, 'string', null)),\r\n 'isStrict', IIF([ed].[IsStrict] = 1, json('true'), json('false')),\r\n 'enumerators', (\r\n SELECT json_group_array(json(json_object(\r\n 'name', json_extract(js.\"value\", '$.Name'),\r\n 'value', IFNULL(json_extract(js.\"value\", '$.StringValue'), (json_extract(js.\"value\", '$.IntValue'))),\r\n 'label', json_extract(js.\"value\", '$.DisplayLabel'),\r\n 'description', json_extract(js.\"value\", '$.Description')\r\n )))\r\n FROM [meta].[ECEnumerationDef] [enumerationDef], json1.json_each([EnumValues]) js\r\n WHERE [enumerationDef].[ECInstanceId] = [ed].[ECInstanceId]\r\n )\r\n ) as [item]\r\nFROM\r\n [meta].[ECEnumerationDef] [ed]\r\n${singleSchema ? `\r\nJOIN\r\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [ed].[Schema].[Id]\r\nWHERE [schema].[Name] = :schemaName` : \"\"}\r\n`;\r\n\r\n/**\r\n * Query for SchemaItemType Unit data.\r\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\r\n */\r\nconst unit = (singleSchema?: boolean) => `\r\nSELECT\r\n [ud].[Schema].[Id] AS [SchemaId],\r\n json_object (\r\n 'schemaItemType', 'Unit',\r\n 'name', [ud].[Name],\r\n 'label', [ud].[DisplayLabel],\r\n 'description', [ud].[Description],\r\n 'definition', [ud].[Definition],\r\n 'numerator', IIF([ud].[Numerator] IS NULL, NULL, json(format('%.16g', [ud].[Numerator]))),\r\n 'denominator', IIF([ud].[Denominator] IS NULL, NULL, json(format('%.16g', [ud].[Denominator]))),\r\n 'offset', IIF([ud].[Offset] IS NULL, NULL, json(format('%!.15f', [ud].[Offset]))),\r\n 'unitSystem', CONCAT([uss].[Name],'.', [usd].[Name]),\r\n 'phenomenon', CONCAT([ps].[Name],'.', [pd].[Name])\r\n ) as item\r\nFROM\r\n [meta].[UnitDef] [ud]\r\n${singleSchema ? `\r\nJOIN\r\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [ud].[Schema].[Id]` : \"\"}\r\nJOIN [meta].[UnitSystemDef] [usd]\r\n ON [usd].[ECInstanceId] = [ud].[UnitSystem].[Id]\r\nJOIN [meta].[ECSchemaDef] [uss]\r\n ON [uss].[ECInstanceId] = [usd].[Schema].[Id]\r\nJOIN [meta].[PhenomenonDef] [pd]\r\n ON [pd].[ECInstanceId] = [ud].[Phenomenon].[Id]\r\nJOIN [meta].[ECSchemaDef] [ps]\r\n ON [ps].[ECInstanceId] = [pd].[Schema].[Id]\r\nWHERE\r\n ${singleSchema ? `\r\n [schema].[Name] = :schemaName AND` : \"\"}\r\n [ud].[IsConstant] = 0 AND\r\n [ud].[InvertingUnit] IS NULL\r\n`;\r\n\r\n/**\r\n * Query for SchemaItemType InvertedUnit data.\r\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\r\n */\r\nconst invertedUnit = (singleSchema?: boolean) => `\r\nSELECT\r\n [ud].[Schema].[Id] AS [SchemaId],\r\n json_object (\r\n 'schemaItemType', 'InvertedUnit',\r\n 'name', [ud].[Name],\r\n 'label', [ud].[DisplayLabel],\r\n 'description', [ud].[Description],\r\n 'unitSystem', CONCAT([systemSchema].[Name],'.', [usd].[Name]),\r\n 'invertsUnit', IIF([iud].[Name] IS NULL, null, CONCAT([ius].[Name],'.', [iud].[Name]))\r\n ) as [item]\r\nFROM\r\n [meta].[UnitDef] [ud]\r\n${singleSchema ? `\r\nJOIN\r\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [ud].[Schema].[Id]` : \"\"}\r\nJOIN [meta].[UnitSystemDef] [usd]\r\n ON [usd].[ECInstanceId] = [ud].[UnitSystem].[Id]\r\nJOIN [meta].[ECSchemaDef] [systemSchema]\r\n ON [systemSchema].[ECInstanceId] = [usd].[Schema].[Id]\r\nLEFT JOIN [meta].[UnitDef] [iud]\r\n ON [iud].[ECInstanceId] = [ud].[InvertingUnit].[Id]\r\nLEFT JOIN [meta].[ECSchemaDef] [ius]\r\n ON [ius].[ECInstanceId] = [iud].[Schema].[Id]\r\nWHERE\r\n ${singleSchema ? `\r\n [schema].[Name] = :schemaName AND` : \"\"}\r\n [ud].[IsConstant] = 0 AND\r\n [ud].[InvertingUnit] IS NOT NULL\r\n`;\r\n\r\n/**\r\n * Query for SchemaItemType Constant data.\r\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\r\n */\r\nconst constant = (singleSchema?: boolean) => `\r\nSELECT\r\n [cd].[Schema].[Id] AS [SchemaId],\r\n json_object(\r\n 'schemaItemType', 'Constant',\r\n 'name', [cd].[Name],\r\n 'label', [cd].[DisplayLabel],\r\n 'description', [cd].[Description],\r\n 'definition', [cd].[Definition],\r\n 'numerator', IIF([cd].[Numerator] IS NULL, NULL, json(format('%.16g', [cd].[Numerator]))),\r\n 'denominator', IIF([cd].[Denominator] IS NULL, NULL, json(format('%.16g', [cd].[Denominator]))),\r\n 'phenomenon', CONCAT([phenomSchema].[Name],'.', [phenomDef].[Name])\r\n ) as item\r\nFROM\r\n [meta].[UnitDef] [cd]\r\n${singleSchema ? `\r\nJOIN\r\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [cd].[Schema].[Id]` : \"\"}\r\nJOIN [meta].[PhenomenonDef] [phenomDef]\r\n ON [phenomDef].[ECInstanceId] = [cd].[Phenomenon].[Id]\r\nJOIN [meta].[ECSchemaDef] [phenomSchema]\r\n ON [phenomSchema].[ECInstanceId] = [phenomDef].[Schema].[Id]\r\nWHERE\r\n ${singleSchema ? `\r\n [schema].[Name] = :schemaName AND` : \"\"}\r\n [cd].[IsConstant] = 1\r\n`;\r\n\r\n/**\r\n * Query for SchemaItemType UnitSystem data.\r\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\r\n */\r\nconst unitSystem = (singleSchema?: boolean) => `\r\nSELECT\r\n [us].[Schema].[Id] AS [SchemaId],\r\n json_object (\r\n 'schemaItemType', 'UnitSystem',\r\n 'name', [us].[Name],\r\n 'label', [us].[DisplayLabel],\r\n 'description', [us].[Description]\r\n ) as [item]\r\nFROM\r\n [meta].[UnitSystemDef] [us]\r\n${singleSchema ? `\r\nJOIN\r\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [us].[Schema].[Id]\r\nWHERE [schema].[Name] = :schemaName` : \"\"}\r\n`;\r\n\r\n/**\r\n * Query for SchemaItemType Phenomenon data.\r\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\r\n */\r\nconst phenomenon = (singleSchema?: boolean) => `\r\nSELECT\r\n [pd].[Schema].[Id] AS [SchemaId],\r\n json_object(\r\n 'schemaItemType', 'Phenomenon',\r\n 'name', [pd].[Name],\r\n 'label', [pd].[DisplayLabel],\r\n 'description', [pd].[Description],\r\n 'definition', [pd].[Definition]\r\n ) as [item]\r\nFROM\r\n [meta].[PhenomenonDef] [pd]\r\n${singleSchema ? `\r\nJOIN\r\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [pd].[Schema].[Id]\r\nWHERE [schema].[Name] = :schemaName` : \"\"}\r\n`;\r\n\r\n/**\r\n * Query for SchemaItemType Format data.\r\n * @param singleSchema Indicates if a filter and join for a single Schema should be applied.\r\n */\r\nconst format = (singleSchema?: boolean) => `\r\nSELECT\r\n [fd].[Schema].[Id] AS [SchemaId],\r\n json_object(\r\n 'schemaItemType', 'Format',\r\n 'name', [fd].[Name],\r\n 'label', [fd].[DisplayLabel],\r\n 'description', [fd].[Description],\r\n 'type', json_extract([fd].[NumericSpec], '$.type'),\r\n 'precision', json_extract([fd].[NumericSpec], '$.precision'),\r\n 'roundFactor', json_extract([fd].[NumericSpec], '$.roundFactor'),\r\n 'minWidth', json_extract([fd].[NumericSpec], '$.minWidth'),\r\n 'showSignOption', json_extract([fd].[NumericSpec], '$.showSignOption'),\r\n 'decimalSeparator', json_extract([fd].[NumericSpec], '$.decimalSeparator'),\r\n 'thousandSeparator', json_extract([fd].[NumericSpec], '$.thousandSeparator'),\r\n 'uomSeparator', json_extract([fd].[NumericSpec], '$.uomSeparator'),\r\n 'scientificType', json_extract([fd].[NumericSpec], '$.scientificType'),\r\n 'stationOffsetSize', json_extract([fd].[NumericSpec], '$.stationOffsetSize'),\r\n 'stationSeparator', json_extract([fd].[NumericSpec], '$.stationSeparator'),\r\n 'formatTraits', json_extract([fd].[NumericSpec], '$.formatTraits')\r\n ${singleSchema ? `\r\n ,'composite', (\r\n SELECT\r\n json_object(\r\n 'spacer', json_extract([fd1].[CompositeSpec], '$.spacer'),\r\n 'includeZero', json(IIF(json_extract([fd1].[CompositeSpec], '$.includeZero') = 1, 'true', IIF(json_extract([fd1].[CompositeSpec], '$.includeZero') = 0, 'false', null))),\r\n 'units', (\r\n SELECT json_group_array(json(json_object(\r\n 'name', CONCAT([sd].[Name], '.', [ud].[Name]),\r\n 'label', [fud].[Label]\r\n )))\r\n FROM [meta].[FormatDef] [fd2]\r\n LEFT JOIN [meta].[FormatCompositeUnitDef] [fud] ON [fud].[Format].[Id] = [fd2].[ECInstanceId]\r\n LEFT JOIN [meta].[UnitDef] [ud] ON [ud].[ECInstanceId] = [fud].[Unit].[Id]\r\n INNER JOIN [meta].[ECSchemaDef] [sd] ON [sd].[ECInstanceId] = [ud].[Schema].[Id]\r\n WHERE [fd2].[ECInstanceId] = [fd1].[ECInstanceId]\r\n )\r\n )\r\n FROM [meta].[FormatDef] [fd1]\r\n WHERE [fd1].[ECInstanceId]= [fd].[ECInstanceId] AND [fd1].[CompositeSpec] IS NOT NULL\r\n )` : \"\"}\r\n) AS item\r\nFROM\r\n [meta].[FormatDef] [fd]\r\n${singleSchema ? `\r\nJOIN\r\n [meta].[ECSchemaDef] [schema] ON [schema].[ECInstanceId] = [fd].[Schema].[Id]\r\nWHERE [schema].[Name] = :schemaName` : \"\"}\r\n`\r\n\r\n/**\r\n * Queries for each SchemaItemType\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport const SchemaItemQueries = {\r\n kindOfQuantity,\r\n propertyCategory,\r\n enumeration,\r\n unit,\r\n invertedUnit,\r\n constant,\r\n unitSystem,\r\n phenomenon,\r\n format\r\n};\r\n"]}
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;;;;;;;;;;MAU7C,YAAY,CAAC,CAAC,CAAC;;;;;OAKd,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;AACnD,QAAA,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 'relativeError', [koq].[RelativeError],\n 'persistenceUnit', [koq].[PersistenceUnit]\n ${singleSchema ? `\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"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SchemaParser.js","sourceRoot":"","sources":["../../../src/IncrementalLoading/SchemaParser.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\n\r\nimport { ECSchemaNamespaceUris } from \"../Constants\";\r\nimport { SchemaItemProps, SchemaProps } from \"../Deserialization/JsonProps\";\r\nimport { parseSchemaItemType, SchemaItemType } from \"../ECObjects\";\r\nimport { SchemaInfo } from \"../Interfaces\";\r\nimport { CustomAttribute } from \"../Metadata/CustomAttribute\";\r\nimport { ClassParser, CustomAttributeClassParser, MixinParser, RelationshipClassParser } from \"./ClassParsers\";\r\nimport { KindOfQuantityParser, SchemaItemParser } from \"./SchemaItemParsers\";\r\n\r\nfunction clean(_key: string, value: any) {\r\n return value === null ? undefined : value;\r\n}\r\n\r\ntype MutableSchemaProps = {\r\n -readonly [K in keyof SchemaProps]: SchemaProps[K]\r\n};\r\n\r\ninterface NamedSchemaItemProps extends SchemaItemProps {\r\n name: string;\r\n schemaItemType: SchemaItemType;\r\n}\r\n\r\n/**\r\n * Parses SchemaProps JSON returned from an ECSql query and returns the correct SchemaProps JSON object.\r\n * This is necessary as a small amount information (ie. CustomAttributes, unqualified type names, etc.)\r\n * returned from the iModelDb is in a different format than is required for a given Schema or\r\n * SchemaItemProps JSON object.\r\n * @internal\r\n */\r\nexport class SchemaParser {\r\n /**\r\n * Corrects the SchemaProps JSON returned from the query to a proper SchemaProps\r\n * JSON object.\r\n * @param schema The SchemaProps JSON object to parse.\r\n * @param context The SchemaContext that will contain the schema and it's references.\r\n * @returns The corrected SchemaProps JSON.\r\n */\r\n public static async parse(schema: SchemaProps, schemaInfos: Iterable<SchemaInfo>): Promise<SchemaProps> {\r\n const props = schema as MutableSchemaProps;\r\n props.$schema = ECSchemaNamespaceUris.SCHEMAURL3_2_JSON,\r\n props.customAttributes = props.customAttributes ? props.customAttributes.map((attr: any) => { return parseCustomAttribute(attr); }) : undefined;\r\n props.label = props.label === null ? undefined : props.label;\r\n props.description = props.description === null ? undefined : props.description;\r\n if (props.items) {\r\n props.items = await this.parseItems(props.items as any, props.name, schemaInfos);\r\n }\r\n\r\n if (!props.customAttributes || props.customAttributes.length === 0)\r\n delete props.customAttributes;\r\n\r\n const cleaned = JSON.parse(JSON.stringify(props, clean)) as SchemaProps;\r\n return cleaned;\r\n }\r\n\r\n /**\r\n * Parse the given SchemaItemProps array, as returned from an ECSql query, and returns the corrected SchemaItemProps.\r\n * @param schemaItems The SchemaItemProps array returned from an iModelDb.\r\n * @param schemaName The name of the Schema to which the SchemaItemProps belong.\r\n * @param context The SchemaContext containing the Schema.\r\n * @returns The corrected SchemaItemProps.\r\n */\r\n public static async parseSchemaItems(schemaItems: readonly SchemaItemProps[], schemaName: string, schemaInfos: Iterable<SchemaInfo>): Promise<NamedSchemaItemProps[] | undefined> {\r\n const items: NamedSchemaItemProps[] = [];\r\n for (const item of schemaItems) {\r\n const props = await this.parseItem(item, schemaName, schemaInfos);\r\n const cleaned = JSON.parse(JSON.stringify(props, clean));\r\n items.push(cleaned);\r\n }\r\n return items.length > 0 ? items : undefined;\r\n }\r\n\r\n private static async parseItems(schemaItemProps: readonly SchemaItemProps[], schemaName: string, schemaInfos: Iterable<SchemaInfo>): Promise<{ [name: string]: SchemaItemProps } | undefined> {\r\n const items: { [name: string]: SchemaItemProps } = {};\r\n for (const itemProps of schemaItemProps) {\r\n const props = await this.parseItem(itemProps, schemaName, schemaInfos);\r\n items[props.name] = props;\r\n delete (props as any).name;\r\n }\r\n\r\n return Object.keys(items).length > 0 ? items : undefined;\r\n }\r\n\r\n public static async parseItem(props: SchemaItemProps, schemaName: string, schemaInfos: Iterable<SchemaInfo>): Promise<NamedSchemaItemProps> {\r\n const schemaItem = \"string\" === typeof (props) ? JSON.parse(props) : props;\r\n const type = parseSchemaItemType(schemaItem.schemaItemType);\r\n switch (type) {\r\n case SchemaItemType.KindOfQuantity:\r\n const koqParser = new KindOfQuantityParser(schemaName, schemaInfos);\r\n return await koqParser.parse(schemaItem) as NamedSchemaItemProps;\r\n case SchemaItemType.EntityClass:\r\n case SchemaItemType.StructClass:\r\n const classParser = new ClassParser(schemaName, schemaInfos);\r\n return await classParser.parse(schemaItem) as NamedSchemaItemProps;\r\n case SchemaItemType.RelationshipClass:\r\n const relationshipParser = new RelationshipClassParser(schemaName, schemaInfos);\r\n return await relationshipParser.parse(schemaItem) as NamedSchemaItemProps;\r\n case SchemaItemType.Mixin:\r\n const mixinParser = new MixinParser(schemaName, schemaInfos);\r\n return await mixinParser.parse(schemaItem) as NamedSchemaItemProps;\r\n case SchemaItemType.CustomAttributeClass:\r\n const caParser = new CustomAttributeClassParser(schemaName, schemaInfos);\r\n return await caParser.parse(schemaItem) as NamedSchemaItemProps;\r\n default:\r\n const itemParser = new SchemaItemParser(schemaName, schemaInfos);\r\n return await itemParser.parse(schemaItem) as NamedSchemaItemProps;\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Utility method to parse CustomAttribute data retrieved from a ECSql query.\r\n * @param customAttribute CustomAttribute data as retrieved from an iModel query.\r\n * @returns The CustomAttribute instance.\r\n * @internal\r\n */\r\nexport function parseCustomAttribute(customAttribute: { ecClass: string; ecSchema: string;[propName: string]: any; }): CustomAttribute {\r\n return {\r\n ...customAttribute[customAttribute.ecClass],\r\n className: `${(customAttribute.ecSchema).split('.')[0]}.${customAttribute.ecClass}`,\r\n }\r\n}"]}
1
+ {"version":3,"file":"SchemaParser.js","sourceRoot":"","sources":["../../../src/IncrementalLoading/SchemaParser.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 { ECSchemaNamespaceUris } from \"../Constants\";\nimport { SchemaItemProps, SchemaProps } from \"../Deserialization/JsonProps\";\nimport { parseSchemaItemType, SchemaItemType } from \"../ECObjects\";\nimport { SchemaInfo } from \"../Interfaces\";\nimport { CustomAttribute } from \"../Metadata/CustomAttribute\";\nimport { ClassParser, CustomAttributeClassParser, MixinParser, RelationshipClassParser } from \"./ClassParsers\";\nimport { KindOfQuantityParser, SchemaItemParser } from \"./SchemaItemParsers\";\n\nfunction clean(_key: string, value: any) {\n return value === null ? undefined : value;\n}\n\ntype MutableSchemaProps = {\n -readonly [K in keyof SchemaProps]: SchemaProps[K]\n};\n\ninterface NamedSchemaItemProps extends SchemaItemProps {\n name: string;\n schemaItemType: SchemaItemType;\n}\n\n/**\n * Parses SchemaProps JSON returned from an ECSql query and returns the correct SchemaProps JSON object.\n * This is necessary as a small amount information (ie. CustomAttributes, unqualified type names, etc.)\n * returned from the iModelDb is in a different format than is required for a given Schema or\n * SchemaItemProps JSON object.\n * @internal\n */\nexport class SchemaParser {\n /**\n * Corrects the SchemaProps JSON returned from the query to a proper SchemaProps\n * JSON object.\n * @param schema The SchemaProps JSON object to parse.\n * @param context The SchemaContext that will contain the schema and it's references.\n * @returns The corrected SchemaProps JSON.\n */\n public static async parse(schema: SchemaProps, schemaInfos: Iterable<SchemaInfo>): Promise<SchemaProps> {\n const props = schema as MutableSchemaProps;\n props.$schema = ECSchemaNamespaceUris.SCHEMAURL3_2_JSON,\n props.customAttributes = props.customAttributes ? props.customAttributes.map((attr: any) => { return parseCustomAttribute(attr); }) : undefined;\n props.label = props.label === null ? undefined : props.label;\n props.description = props.description === null ? undefined : props.description;\n if (props.items) {\n props.items = await this.parseItems(props.items as any, props.name, schemaInfos);\n }\n\n if (!props.customAttributes || props.customAttributes.length === 0)\n delete props.customAttributes;\n\n const cleaned = JSON.parse(JSON.stringify(props, clean)) as SchemaProps;\n return cleaned;\n }\n\n /**\n * Parse the given SchemaItemProps array, as returned from an ECSql query, and returns the corrected SchemaItemProps.\n * @param schemaItems The SchemaItemProps array returned from an iModelDb.\n * @param schemaName The name of the Schema to which the SchemaItemProps belong.\n * @param context The SchemaContext containing the Schema.\n * @returns The corrected SchemaItemProps.\n */\n public static async parseSchemaItems(schemaItems: readonly SchemaItemProps[], schemaName: string, schemaInfos: Iterable<SchemaInfo>): Promise<NamedSchemaItemProps[] | undefined> {\n const items: NamedSchemaItemProps[] = [];\n for (const item of schemaItems) {\n const props = await this.parseItem(item, schemaName, schemaInfos);\n const cleaned = JSON.parse(JSON.stringify(props, clean));\n items.push(cleaned);\n }\n return items.length > 0 ? items : undefined;\n }\n\n private static async parseItems(schemaItemProps: readonly SchemaItemProps[], schemaName: string, schemaInfos: Iterable<SchemaInfo>): Promise<{ [name: string]: SchemaItemProps } | undefined> {\n const items: { [name: string]: SchemaItemProps } = {};\n for (const itemProps of schemaItemProps) {\n const props = await this.parseItem(itemProps, schemaName, schemaInfos);\n items[props.name] = props;\n delete (props as any).name;\n }\n\n return Object.keys(items).length > 0 ? items : undefined;\n }\n\n public static async parseItem(props: SchemaItemProps, schemaName: string, schemaInfos: Iterable<SchemaInfo>): Promise<NamedSchemaItemProps> {\n const schemaItem = \"string\" === typeof (props) ? JSON.parse(props) : props;\n const type = parseSchemaItemType(schemaItem.schemaItemType);\n switch (type) {\n case SchemaItemType.KindOfQuantity:\n const koqParser = new KindOfQuantityParser(schemaName, schemaInfos);\n return await koqParser.parse(schemaItem) as NamedSchemaItemProps;\n case SchemaItemType.EntityClass:\n case SchemaItemType.StructClass:\n const classParser = new ClassParser(schemaName, schemaInfos);\n return await classParser.parse(schemaItem) as NamedSchemaItemProps;\n case SchemaItemType.RelationshipClass:\n const relationshipParser = new RelationshipClassParser(schemaName, schemaInfos);\n return await relationshipParser.parse(schemaItem) as NamedSchemaItemProps;\n case SchemaItemType.Mixin:\n const mixinParser = new MixinParser(schemaName, schemaInfos);\n return await mixinParser.parse(schemaItem) as NamedSchemaItemProps;\n case SchemaItemType.CustomAttributeClass:\n const caParser = new CustomAttributeClassParser(schemaName, schemaInfos);\n return await caParser.parse(schemaItem) as NamedSchemaItemProps;\n default:\n const itemParser = new SchemaItemParser(schemaName, schemaInfos);\n return await itemParser.parse(schemaItem) as NamedSchemaItemProps;\n }\n }\n}\n\n/**\n * Utility method to parse CustomAttribute data retrieved from a ECSql query.\n * @param customAttribute CustomAttribute data as retrieved from an iModel query.\n * @returns The CustomAttribute instance.\n * @internal\n */\nexport function parseCustomAttribute(customAttribute: { ecClass: string; ecSchema: string;[propName: string]: any; }): CustomAttribute {\n return {\n ...customAttribute[customAttribute.ecClass],\n className: `${(customAttribute.ecSchema).split('.')[0]}.${customAttribute.ecClass}`,\n }\n}"]}