@itwin/ecschema-metadata 5.2.0-dev.8 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/CHANGELOG.md +46 -1
  2. package/lib/cjs/Constants.js.map +1 -1
  3. package/lib/cjs/DelayedPromise.js.map +1 -1
  4. package/lib/cjs/Deserialization/AbstractParser.js.map +1 -1
  5. package/lib/cjs/Deserialization/Helper.js.map +1 -1
  6. package/lib/cjs/Deserialization/JsonParser.js.map +1 -1
  7. package/lib/cjs/Deserialization/JsonProps.d.ts +9 -2
  8. package/lib/cjs/Deserialization/JsonProps.d.ts.map +1 -1
  9. package/lib/cjs/Deserialization/JsonProps.js.map +1 -1
  10. package/lib/cjs/Deserialization/SchemaGraphUtil.js.map +1 -1
  11. package/lib/cjs/Deserialization/XmlParser.js.map +1 -1
  12. package/lib/cjs/Deserialization/XmlSerializationUtils.js.map +1 -1
  13. package/lib/cjs/ECName.js.map +1 -1
  14. package/lib/cjs/ECObjects.js.map +1 -1
  15. package/lib/cjs/Exception.js.map +1 -1
  16. package/lib/cjs/Formatting/FormatSetFormatsProvider.d.ts +37 -0
  17. package/lib/cjs/Formatting/FormatSetFormatsProvider.d.ts.map +1 -0
  18. package/lib/cjs/Formatting/FormatSetFormatsProvider.js +58 -0
  19. package/lib/cjs/Formatting/FormatSetFormatsProvider.js.map +1 -0
  20. package/lib/cjs/{SchemaFormatsProvider.d.ts → Formatting/SchemaFormatsProvider.d.ts} +1 -1
  21. package/lib/cjs/Formatting/SchemaFormatsProvider.d.ts.map +1 -0
  22. package/lib/cjs/{SchemaFormatsProvider.js → Formatting/SchemaFormatsProvider.js} +6 -6
  23. package/lib/cjs/Formatting/SchemaFormatsProvider.js.map +1 -0
  24. package/lib/cjs/IncrementalLoading/ClassParsers.js.map +1 -1
  25. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.d.ts +18 -24
  26. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.d.ts.map +1 -1
  27. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.js +62 -34
  28. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.js.map +1 -1
  29. package/lib/cjs/IncrementalLoading/FullSchemaQueries.d.ts.map +1 -1
  30. package/lib/cjs/IncrementalLoading/FullSchemaQueries.js +466 -465
  31. package/lib/cjs/IncrementalLoading/FullSchemaQueries.js.map +1 -1
  32. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.d.ts +20 -3
  33. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.d.ts.map +1 -1
  34. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.js +7 -4
  35. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.js.map +1 -1
  36. package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.d.ts.map +1 -1
  37. package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.js +2 -7
  38. package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.js.map +1 -1
  39. package/lib/cjs/IncrementalLoading/SchemaItemParsers.d.ts +4 -4
  40. package/lib/cjs/IncrementalLoading/SchemaItemParsers.d.ts.map +1 -1
  41. package/lib/cjs/IncrementalLoading/SchemaItemParsers.js +17 -17
  42. package/lib/cjs/IncrementalLoading/SchemaItemParsers.js.map +1 -1
  43. package/lib/cjs/IncrementalLoading/SchemaItemQueries.js +235 -235
  44. package/lib/cjs/IncrementalLoading/SchemaItemQueries.js.map +1 -1
  45. package/lib/cjs/IncrementalLoading/SchemaParser.d.ts +10 -4
  46. package/lib/cjs/IncrementalLoading/SchemaParser.d.ts.map +1 -1
  47. package/lib/cjs/IncrementalLoading/SchemaParser.js +19 -19
  48. package/lib/cjs/IncrementalLoading/SchemaParser.js.map +1 -1
  49. package/lib/cjs/IncrementalLoading/SchemaStubQueries.d.ts.map +1 -1
  50. package/lib/cjs/IncrementalLoading/SchemaStubQueries.js +309 -326
  51. package/lib/cjs/IncrementalLoading/SchemaStubQueries.js.map +1 -1
  52. package/lib/cjs/Interfaces.js.map +1 -1
  53. package/lib/cjs/Metadata/Class.js.map +1 -1
  54. package/lib/cjs/Metadata/Constant.js.map +1 -1
  55. package/lib/cjs/Metadata/CustomAttribute.js.map +1 -1
  56. package/lib/cjs/Metadata/CustomAttributeClass.js.map +1 -1
  57. package/lib/cjs/Metadata/EntityClass.js +1 -1
  58. package/lib/cjs/Metadata/EntityClass.js.map +1 -1
  59. package/lib/cjs/Metadata/Enumeration.js.map +1 -1
  60. package/lib/cjs/Metadata/Format.js.map +1 -1
  61. package/lib/cjs/Metadata/InvertedUnit.js.map +1 -1
  62. package/lib/cjs/Metadata/KindOfQuantity.d.ts.map +1 -1
  63. package/lib/cjs/Metadata/KindOfQuantity.js +9 -22
  64. package/lib/cjs/Metadata/KindOfQuantity.js.map +1 -1
  65. package/lib/cjs/Metadata/Mixin.js.map +1 -1
  66. package/lib/cjs/Metadata/OverrideFormat.js.map +1 -1
  67. package/lib/cjs/Metadata/Phenomenon.js.map +1 -1
  68. package/lib/cjs/Metadata/Property.js.map +1 -1
  69. package/lib/cjs/Metadata/PropertyCategory.js.map +1 -1
  70. package/lib/cjs/Metadata/RelationshipClass.js.map +1 -1
  71. package/lib/cjs/Metadata/Schema.d.ts +2 -0
  72. package/lib/cjs/Metadata/Schema.d.ts.map +1 -1
  73. package/lib/cjs/Metadata/Schema.js +4 -0
  74. package/lib/cjs/Metadata/Schema.js.map +1 -1
  75. package/lib/cjs/Metadata/SchemaItem.js.map +1 -1
  76. package/lib/cjs/Metadata/UnitSystem.js.map +1 -1
  77. package/lib/cjs/PropertyTypes.js.map +1 -1
  78. package/lib/cjs/SchemaJsonLocater.js.map +1 -1
  79. package/lib/cjs/SchemaKey.js.map +1 -1
  80. package/lib/cjs/SchemaLoader.js.map +1 -1
  81. package/lib/cjs/SchemaPartVisitorDelegate.js.map +1 -1
  82. package/lib/cjs/UnitConversion/Graph.js.map +1 -1
  83. package/lib/cjs/UnitConversion/Parser.js.map +1 -1
  84. package/lib/cjs/UnitConversion/UnitConversion.js.map +1 -1
  85. package/lib/cjs/UnitConversion/UnitConverter.js.map +1 -1
  86. package/lib/cjs/UnitConversion/UnitTree.js.map +1 -1
  87. package/lib/cjs/UnitProvider/SchemaUnitProvider.js.map +1 -1
  88. package/lib/cjs/Validation/SchemaWalker.js.map +1 -1
  89. package/lib/cjs/ecschema-metadata.d.ts +2 -1
  90. package/lib/cjs/ecschema-metadata.d.ts.map +1 -1
  91. package/lib/cjs/ecschema-metadata.js +2 -1
  92. package/lib/cjs/ecschema-metadata.js.map +1 -1
  93. package/lib/cjs/utils/SchemaGraph.js.map +1 -1
  94. package/lib/cjs/utils/SchemaLoadingController.js.map +1 -1
  95. package/lib/esm/Constants.js.map +1 -1
  96. package/lib/esm/DelayedPromise.js.map +1 -1
  97. package/lib/esm/Deserialization/AbstractParser.js.map +1 -1
  98. package/lib/esm/Deserialization/Helper.js.map +1 -1
  99. package/lib/esm/Deserialization/JsonParser.js.map +1 -1
  100. package/lib/esm/Deserialization/JsonProps.d.ts +9 -2
  101. package/lib/esm/Deserialization/JsonProps.d.ts.map +1 -1
  102. package/lib/esm/Deserialization/JsonProps.js.map +1 -1
  103. package/lib/esm/Deserialization/SchemaGraphUtil.js.map +1 -1
  104. package/lib/esm/Deserialization/XmlParser.js.map +1 -1
  105. package/lib/esm/Deserialization/XmlSerializationUtils.js.map +1 -1
  106. package/lib/esm/ECName.js.map +1 -1
  107. package/lib/esm/ECObjects.js.map +1 -1
  108. package/lib/esm/Exception.js.map +1 -1
  109. package/lib/esm/Formatting/FormatSetFormatsProvider.d.ts +37 -0
  110. package/lib/esm/Formatting/FormatSetFormatsProvider.d.ts.map +1 -0
  111. package/lib/esm/Formatting/FormatSetFormatsProvider.js +54 -0
  112. package/lib/esm/Formatting/FormatSetFormatsProvider.js.map +1 -0
  113. package/lib/esm/{SchemaFormatsProvider.d.ts → Formatting/SchemaFormatsProvider.d.ts} +1 -1
  114. package/lib/esm/Formatting/SchemaFormatsProvider.d.ts.map +1 -0
  115. package/lib/esm/{SchemaFormatsProvider.js → Formatting/SchemaFormatsProvider.js} +6 -6
  116. package/lib/esm/Formatting/SchemaFormatsProvider.js.map +1 -0
  117. package/lib/esm/IncrementalLoading/ClassParsers.js.map +1 -1
  118. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.d.ts +18 -24
  119. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.d.ts.map +1 -1
  120. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.js +61 -33
  121. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.js.map +1 -1
  122. package/lib/esm/IncrementalLoading/FullSchemaQueries.d.ts.map +1 -1
  123. package/lib/esm/IncrementalLoading/FullSchemaQueries.js +466 -465
  124. package/lib/esm/IncrementalLoading/FullSchemaQueries.js.map +1 -1
  125. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.d.ts +20 -3
  126. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.d.ts.map +1 -1
  127. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.js +7 -4
  128. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.js.map +1 -1
  129. package/lib/esm/IncrementalLoading/IncrementalSchemaReader.d.ts.map +1 -1
  130. package/lib/esm/IncrementalLoading/IncrementalSchemaReader.js +2 -7
  131. package/lib/esm/IncrementalLoading/IncrementalSchemaReader.js.map +1 -1
  132. package/lib/esm/IncrementalLoading/SchemaItemParsers.d.ts +4 -4
  133. package/lib/esm/IncrementalLoading/SchemaItemParsers.d.ts.map +1 -1
  134. package/lib/esm/IncrementalLoading/SchemaItemParsers.js +17 -17
  135. package/lib/esm/IncrementalLoading/SchemaItemParsers.js.map +1 -1
  136. package/lib/esm/IncrementalLoading/SchemaItemQueries.js +235 -235
  137. package/lib/esm/IncrementalLoading/SchemaItemQueries.js.map +1 -1
  138. package/lib/esm/IncrementalLoading/SchemaParser.d.ts +10 -4
  139. package/lib/esm/IncrementalLoading/SchemaParser.d.ts.map +1 -1
  140. package/lib/esm/IncrementalLoading/SchemaParser.js +19 -19
  141. package/lib/esm/IncrementalLoading/SchemaParser.js.map +1 -1
  142. package/lib/esm/IncrementalLoading/SchemaStubQueries.d.ts.map +1 -1
  143. package/lib/esm/IncrementalLoading/SchemaStubQueries.js +309 -326
  144. package/lib/esm/IncrementalLoading/SchemaStubQueries.js.map +1 -1
  145. package/lib/esm/Interfaces.js.map +1 -1
  146. package/lib/esm/Metadata/Class.js.map +1 -1
  147. package/lib/esm/Metadata/Constant.js.map +1 -1
  148. package/lib/esm/Metadata/CustomAttribute.js.map +1 -1
  149. package/lib/esm/Metadata/CustomAttributeClass.js.map +1 -1
  150. package/lib/esm/Metadata/EntityClass.js +1 -1
  151. package/lib/esm/Metadata/EntityClass.js.map +1 -1
  152. package/lib/esm/Metadata/Enumeration.js.map +1 -1
  153. package/lib/esm/Metadata/Format.js.map +1 -1
  154. package/lib/esm/Metadata/InvertedUnit.js.map +1 -1
  155. package/lib/esm/Metadata/KindOfQuantity.d.ts.map +1 -1
  156. package/lib/esm/Metadata/KindOfQuantity.js +9 -22
  157. package/lib/esm/Metadata/KindOfQuantity.js.map +1 -1
  158. package/lib/esm/Metadata/Mixin.js.map +1 -1
  159. package/lib/esm/Metadata/OverrideFormat.js.map +1 -1
  160. package/lib/esm/Metadata/Phenomenon.js.map +1 -1
  161. package/lib/esm/Metadata/Property.js.map +1 -1
  162. package/lib/esm/Metadata/PropertyCategory.js.map +1 -1
  163. package/lib/esm/Metadata/RelationshipClass.js.map +1 -1
  164. package/lib/esm/Metadata/Schema.d.ts +2 -0
  165. package/lib/esm/Metadata/Schema.d.ts.map +1 -1
  166. package/lib/esm/Metadata/Schema.js +4 -0
  167. package/lib/esm/Metadata/Schema.js.map +1 -1
  168. package/lib/esm/Metadata/SchemaItem.js.map +1 -1
  169. package/lib/esm/Metadata/UnitSystem.js.map +1 -1
  170. package/lib/esm/PropertyTypes.js.map +1 -1
  171. package/lib/esm/SchemaJsonLocater.js.map +1 -1
  172. package/lib/esm/SchemaKey.js.map +1 -1
  173. package/lib/esm/SchemaLoader.js.map +1 -1
  174. package/lib/esm/SchemaPartVisitorDelegate.js.map +1 -1
  175. package/lib/esm/UnitConversion/Graph.js.map +1 -1
  176. package/lib/esm/UnitConversion/Parser.js.map +1 -1
  177. package/lib/esm/UnitConversion/UnitConversion.js.map +1 -1
  178. package/lib/esm/UnitConversion/UnitConverter.js.map +1 -1
  179. package/lib/esm/UnitConversion/UnitTree.js.map +1 -1
  180. package/lib/esm/UnitProvider/SchemaUnitProvider.js.map +1 -1
  181. package/lib/esm/Validation/SchemaWalker.js.map +1 -1
  182. package/lib/esm/ecschema-metadata.d.ts +2 -1
  183. package/lib/esm/ecschema-metadata.d.ts.map +1 -1
  184. package/lib/esm/ecschema-metadata.js +2 -1
  185. package/lib/esm/ecschema-metadata.js.map +1 -1
  186. package/lib/esm/utils/SchemaGraph.js.map +1 -1
  187. package/lib/esm/utils/SchemaLoadingController.js.map +1 -1
  188. package/package.json +6 -6
  189. package/lib/cjs/IncrementalLoading/PerformanceLogger.d.ts +0 -60
  190. package/lib/cjs/IncrementalLoading/PerformanceLogger.d.ts.map +0 -1
  191. package/lib/cjs/IncrementalLoading/PerformanceLogger.js +0 -82
  192. package/lib/cjs/IncrementalLoading/PerformanceLogger.js.map +0 -1
  193. package/lib/cjs/SchemaFormatsProvider.d.ts.map +0 -1
  194. package/lib/cjs/SchemaFormatsProvider.js.map +0 -1
  195. package/lib/esm/IncrementalLoading/PerformanceLogger.d.ts +0 -60
  196. package/lib/esm/IncrementalLoading/PerformanceLogger.d.ts.map +0 -1
  197. package/lib/esm/IncrementalLoading/PerformanceLogger.js +0 -78
  198. package/lib/esm/IncrementalLoading/PerformanceLogger.js.map +0 -1
  199. package/lib/esm/SchemaFormatsProvider.d.ts.map +0 -1
  200. package/lib/esm/SchemaFormatsProvider.js.map +0 -1
@@ -12,212 +12,213 @@ const SchemaStubQueries_1 = require("./SchemaStubQueries");
12
12
  * WITH clauses are broken down into individual variables.
13
13
  */
14
14
  const propertyType = (alias) => {
15
- return `
16
- CASE
17
- WHEN [${alias}].[Kind] = 0 THEN 'PrimitiveProperty'
18
- WHEN [${alias}].[Kind] = 1 THEN 'StructProperty'
19
- WHEN [${alias}].[Kind] = 2 THEN 'PrimitiveArrayProperty'
20
- WHEN [${alias}].[Kind] = 3 THEN 'StructArrayProperty'
21
- WHEN [${alias}].[Kind] = 4 THEN 'NavigationProperty'
22
- ELSE NULL
23
- END
15
+ return `
16
+ CASE
17
+ WHEN [${alias}].[Kind] = 0 THEN 'PrimitiveProperty'
18
+ WHEN [${alias}].[Kind] = 1 THEN 'StructProperty'
19
+ WHEN [${alias}].[Kind] = 2 THEN 'PrimitiveArrayProperty'
20
+ WHEN [${alias}].[Kind] = 3 THEN 'StructArrayProperty'
21
+ WHEN [${alias}].[Kind] = 4 THEN 'NavigationProperty'
22
+ ELSE NULL
23
+ END
24
24
  `;
25
25
  };
26
26
  const navigationDirection = (alias) => {
27
- return `
28
- CASE
29
- WHEN [${alias}].[NavigationDirection] = 1 THEN 'Forward'
30
- WHEN [${alias}].[NavigationDirection] = 2 THEN 'Backward'
31
- ELSE NULL
32
- END
27
+ return `
28
+ CASE
29
+ WHEN [${alias}].[NavigationDirection] = 1 THEN 'Forward'
30
+ WHEN [${alias}].[NavigationDirection] = 2 THEN 'Backward'
31
+ ELSE NULL
32
+ END
33
33
  `;
34
34
  };
35
35
  const schemaCustomAttribute = (alias) => {
36
- return `
37
- SELECT
38
- json_group_array(json(XmlCAToJson([ca].[Class].[Id], [ca].[Instance])))
39
- FROM [meta].[CustomAttribute] [ca]
40
- WHERE [ca].[ContainerId] = [${alias}].[ECInstanceId] AND [ca].[ContainerType] = 1
41
- ORDER BY [ca].[Ordinal]
36
+ return `
37
+ SELECT
38
+ json_group_array(json(XmlCAToJson([ca].[Class].[Id], [ca].[Instance])))
39
+ FROM [meta].[CustomAttribute] [ca]
40
+ WHERE [ca].[ContainerId] = [${alias}].[ECInstanceId] AND [ca].[ContainerType] = 1
41
+ ORDER BY [ca].[Ordinal]
42
42
  `;
43
43
  };
44
44
  /**
45
45
  * Selects customAttribute data for each class type.
46
46
  */
47
47
  const classCustomAttribute = (alias) => {
48
- return `
49
- SELECT
50
- json_group_array(json(XmlCAToJson([ca].[Class].[Id], [ca].[Instance])))
51
- FROM [meta].[CustomAttribute] [ca]
52
- WHERE [ca].[ContainerId] = [${alias}].[ECInstanceId] AND [ca].[ContainerType] = 30
53
- ORDER BY [ca].[Ordinal]
48
+ return `
49
+ SELECT
50
+ json_group_array(json(XmlCAToJson([ca].[Class].[Id], [ca].[Instance])))
51
+ FROM [meta].[CustomAttribute] [ca]
52
+ WHERE [ca].[ContainerId] = [${alias}].[ECInstanceId] AND [ca].[ContainerType] = 30
53
+ ORDER BY [ca].[Ordinal]
54
54
  `;
55
55
  };
56
56
  const propertyCustomAttribute = (alias) => {
57
- return `
58
- SELECT
59
- json_group_array(json(XmlCAToJson([ca].[Class].[Id], [ca].[Instance])))
60
- FROM [meta].[CustomAttribute] [ca]
61
- WHERE [ca].[ContainerId] = [${alias}].[ECInstanceId] AND [ca].[ContainerType] = 992
62
- ORDER BY [ca].[Ordinal]
57
+ return `
58
+ SELECT
59
+ json_group_array(json(XmlCAToJson([ca].[Class].[Id], [ca].[Instance])))
60
+ FROM [meta].[CustomAttribute] [ca]
61
+ WHERE [ca].[ContainerId] = [${alias}].[ECInstanceId] AND [ca].[ContainerType] = 992
62
+ ORDER BY [ca].[Ordinal]
63
63
  `;
64
64
  };
65
65
  /**
66
66
  * Selects base class data for each class type.
67
67
  */
68
- const selectBaseClasses = `
69
- SELECT
70
- ec_classname([baseClass].[ECInstanceId], 's.c')
71
- FROM
72
- [meta].[ECClassDef] [baseClass]
73
- INNER JOIN [meta].[ClassHasBaseClasses] [baseClassMap]
74
- ON [baseClassMap].[TargetECInstanceId] = [baseClass].[ECInstanceId]
75
- WHERE [baseClassMap].[SourceECInstanceId] = [class].[ECInstanceId]
76
- LIMIT 1
68
+ const selectBaseClasses = `
69
+ SELECT
70
+ ec_classname([baseClass].[ECInstanceId], 's.c')
71
+ FROM
72
+ [meta].[ECClassDef] [baseClass]
73
+ INNER JOIN [meta].[ClassHasBaseClasses] [baseClassMap]
74
+ ON [baseClassMap].[TargetECInstanceId] = [baseClass].[ECInstanceId]
75
+ WHERE [baseClassMap].[SourceECInstanceId] = [class].[ECInstanceId]
76
+ ORDER BY [baseClassMap].[Ordinal] ASC
77
+ LIMIT 1
77
78
  `;
78
79
  /**
79
80
  * Selects class property data for each class type. ClassProperties
80
81
  * is a common table expression (CTE or WITH clause) defined below.
81
82
  */
82
- const selectProperties = `
83
- SELECT
84
- json_group_array(json([classProperties].[property]))
85
- FROM
86
- [ClassProperties] [classProperties]
87
- WHERE
88
- [classProperties].[ClassId] = [class].[ECInstanceId]
83
+ const selectProperties = `
84
+ SELECT
85
+ json_group_array(json([classProperties].[property]))
86
+ FROM
87
+ [ClassProperties] [classProperties]
88
+ WHERE
89
+ [classProperties].[ClassId] = [class].[ECInstanceId]
89
90
  `;
90
91
  /**
91
92
  * A CTE used to select AppliesTo from IsMixin CustomAttributes for a given Mixin.
92
93
  */
93
- const withAppliesTo = `
94
- AppliesToCTE AS (
95
- SELECT
96
- [mixinAppliesTo].[ECInstanceId] AS [AppliesToId],
97
- [appliesToSchema].[name] as [AppliesToSchema],
98
- json_extract(XmlCAToJson([ca].[Class].[Id], [ca].[Instance]), '$.IsMixin.AppliesToEntityClass') AS [AppliesTo]
99
- FROM [meta].[CustomAttribute] [ca]
100
- JOIN [meta].[ECClassDef] [mixinAppliesTo]
101
- ON [mixinAppliesTo].[ECInstanceId] = [ca].[ContainerId]
102
- JOIN [meta].[ECSchemaDef] [appliesToSchema]
103
- ON [appliesToSchema].[ECInstanceId] = [mixinAppliesTo].[Schema].[Id]
104
- WHERE [ca].[ContainerType] = 30
105
- AND json_extract(XmlCAToJson([ca].[Class].[Id], [ca].[Instance]), '$.ecClass') = 'IsMixin'
106
- )
94
+ const withAppliesTo = `
95
+ AppliesToCTE AS (
96
+ SELECT
97
+ [mixinAppliesTo].[ECInstanceId] AS [AppliesToId],
98
+ [appliesToSchema].[name] as [AppliesToSchema],
99
+ json_extract(XmlCAToJson([ca].[Class].[Id], [ca].[Instance]), '$.IsMixin.AppliesToEntityClass') AS [AppliesTo]
100
+ FROM [meta].[CustomAttribute] [ca]
101
+ JOIN [meta].[ECClassDef] [mixinAppliesTo]
102
+ ON [mixinAppliesTo].[ECInstanceId] = [ca].[ContainerId]
103
+ JOIN [meta].[ECSchemaDef] [appliesToSchema]
104
+ ON [appliesToSchema].[ECInstanceId] = [mixinAppliesTo].[Schema].[Id]
105
+ WHERE [ca].[ContainerType] = 30
106
+ AND json_extract(XmlCAToJson([ca].[Class].[Id], [ca].[Instance]), '$.ecClass') = 'IsMixin'
107
+ )
107
108
  `;
108
109
  /**
109
110
  * A CTE used to select Schema reference data for a given Schema.
110
111
  */
111
- const withSchemaReferences = `
112
- SchemaReferences as (
113
- SELECT
114
- [ref].[SourceECInstanceId] as [SchemaId],
115
- json_object(
116
- 'name', [Name],
117
- 'version', CONCAT(printf('%02d', [VersionMajor]), '.', printf('%02d', [VersionWrite]), '.', printf('%02d', [VersionMinor]))
118
- ) as [reference]
119
- FROM
120
- [meta].[ECSchemaDef] as [refSchema]
121
- INNER JOIN [meta].[SchemaHasSchemaReferences] [ref]
122
- ON [ref].[TargetECInstanceId] = [refSchema].[ECInstanceId]
123
- )
112
+ const withSchemaReferences = `
113
+ SchemaReferences as (
114
+ SELECT
115
+ [ref].[SourceECInstanceId] as [SchemaId],
116
+ json_object(
117
+ 'name', [Name],
118
+ 'version', CONCAT(printf('%02d', [VersionMajor]), '.', printf('%02d', [VersionWrite]), '.', printf('%02d', [VersionMinor]))
119
+ ) as [reference]
120
+ FROM
121
+ [meta].[ECSchemaDef] as [refSchema]
122
+ INNER JOIN [meta].[SchemaHasSchemaReferences] [ref]
123
+ ON [ref].[TargetECInstanceId] = [refSchema].[ECInstanceId]
124
+ )
124
125
  `;
125
126
  /**
126
127
  * A CTE used to select Relationship constraints for a given RelationshipClass.
127
128
  */
128
- const withRelationshipConstraints = `
129
- ClassRelationshipConstraints as (
130
- SELECT
131
- [rhc].[SourceECInstanceId] as [ClassId],
132
- [constraintDef].[ECInstanceId] as [ConstraintId],
133
- [RelationshipEnd],
134
- CONCAT('(', [MultiplicityLowerLimit], '..', IIF([MultiplicityUpperLimit] IS NULL, '*', [MultiplicityUpperLimit]), ')') as [Multiplicity],
135
- [IsPolyMorphic],
136
- [RoleLabel],
137
- IIF([constraintDef].[AbstractConstraintClass] IS NOT NULL, ec_classname([constraintDef].[AbstractConstraintClass].[Id], 's.c'), null) as [AbstractConstraint],
138
- IIF ([rchc].[TargetECInstanceId] IS NOT NULL, JSON_GROUP_ARRAY(ec_classname([rchc].[TargetECInstanceId], 's.c')), null) as [ConstraintClasses]
139
- FROM
140
- [meta].[ECRelationshipConstraintDef] [constraintDef]
141
- JOIN [meta].[RelationshipHasConstraints] [rhc]
142
- ON [rhc].[TargetECInstanceId] = [constraintDef].[ECInstanceId]
143
- JOIN [meta].[RelationshipConstraintHasClasses] [rchc]
144
- ON [rchc].[SourceECInstanceId] = [constraintDef].[ECInstanceId]
145
- GROUP BY [constraintDef].[ECInstanceId]
146
- )
129
+ const withRelationshipConstraints = `
130
+ ClassRelationshipConstraints as (
131
+ SELECT
132
+ [rhc].[SourceECInstanceId] as [ClassId],
133
+ [constraintDef].[ECInstanceId] as [ConstraintId],
134
+ [RelationshipEnd],
135
+ CONCAT('(', [MultiplicityLowerLimit], '..', IIF([MultiplicityUpperLimit] IS NULL, '*', [MultiplicityUpperLimit]), ')') as [Multiplicity],
136
+ [IsPolyMorphic],
137
+ [RoleLabel],
138
+ IIF([constraintDef].[AbstractConstraintClass] IS NOT NULL, ec_classname([constraintDef].[AbstractConstraintClass].[Id], 's.c'), null) as [AbstractConstraint],
139
+ IIF ([rchc].[TargetECInstanceId] IS NOT NULL, JSON_GROUP_ARRAY(ec_classname([rchc].[TargetECInstanceId], 's.c')), null) as [ConstraintClasses]
140
+ FROM
141
+ [meta].[ECRelationshipConstraintDef] [constraintDef]
142
+ JOIN [meta].[RelationshipHasConstraints] [rhc]
143
+ ON [rhc].[TargetECInstanceId] = [constraintDef].[ECInstanceId]
144
+ JOIN [meta].[RelationshipConstraintHasClasses] [rchc]
145
+ ON [rchc].[SourceECInstanceId] = [constraintDef].[ECInstanceId]
146
+ GROUP BY [constraintDef].[ECInstanceId]
147
+ )
147
148
  `;
148
149
  /**
149
150
  * A CTE used to select Class property data for a given Class.
150
151
  */
151
- const withClassProperties = `
152
- ClassProperties as (
153
- SELECT
154
- [cop].[SourceECInstanceId] as [ClassId],
155
- json_object(
156
- 'name', [pd].[Name],
157
- 'label', [pd].[DisplayLabel],
158
- 'description', [pd].[Description],
159
- 'isReadOnly', IIF([pd].[IsReadOnly] = 1, json('true'), NULL),
160
- 'priority', [pd].[Priority],
161
- 'category', IIF([categoryDef].[Name] IS NULL, NULL, CONCAT([categorySchemaDef].[Name], '.', [categoryDef].[Name])),
162
- 'kindOfQuantity', IIF([koqDef].[Name] IS NULL, NULL, CONCAT([koqSchemaDef].[Name], '.', [koqDef].[Name])),
163
- 'typeName',
164
- CASE
165
- WHEN [pd].[Kind] = 0 OR [pd].[Kind] = 2 Then
166
- CASE
167
- WHEN [enumDef].[Name] IS NOT NULL Then CONCAT([enumSchemaDef].[Name], '.', [enumDef].[Name])
168
- WHEN [pd].[PrimitiveType] = 257 Then 'binary'
169
- WHEN [pd].[PrimitiveType] = 513 Then 'boolean'
170
- WHEN [pd].[PrimitiveType] = 769 Then 'dateTime'
171
- WHEN [pd].[PrimitiveType] = 1025 Then 'double'
172
- WHEN [pd].[PrimitiveType] = 1281 Then 'int'
173
- WHEN [pd].[PrimitiveType] = 1537 Then 'long'
174
- WHEN [pd].[PrimitiveType] = 1793 Then 'point2d'
175
- WHEN [pd].[PrimitiveType] = 2049 Then 'point3d'
176
- WHEN [pd].[PrimitiveType] = 2305 Then 'string'
177
- WHEN [pd].[PrimitiveType] = 2561 Then 'Bentley.Geometry.Common.IGeometry'
178
- ELSE null
179
- END
180
- WHEN [pd].[Kind] = 1 OR [pd].[Kind] = 3 Then
181
- CONCAT([structSchemaDef].[Name], '.', [structDef].[Name])
182
- ELSE null
183
- END,
184
- 'type', ${propertyType("pd")},
185
- 'minLength', [pd].[PrimitiveTypeMinLength],
186
- 'maxLength', [pd].[PrimitiveTypeMaxLength],
187
- 'minValue', [pd].[PrimitiveTypeMinValue],
188
- 'maxValue', [pd].[PrimitiveTypeMaxValue],
189
- 'extendedTypeName', [pd].[ExtendedTypeName],
190
- 'minOccurs', [pd].[ArrayMinOccurs],
191
- 'maxOccurs', [pd].[ArrayMaxOccurs],
192
- 'direction', ${navigationDirection("pd")},
193
- 'relationshipName', IIF([navRelDef].[Name] IS NULL, NULL, CONCAT([navSchemaDef].[Name], '.', [navRelDef].[Name])),
194
- 'customAttributes', (${propertyCustomAttribute("pd")})
195
- ) as [property]
196
- FROM
197
- [meta].[ECPropertyDef] as [pd]
198
- JOIN [meta].[ClassOwnsLocalProperties] [cop]
199
- ON cop.[TargetECInstanceId] = [pd].[ECInstanceId]
200
- LEFT JOIN [meta].[ECEnumerationDef] [enumDef]
201
- ON [enumDef].[ECInstanceId] = [pd].[Enumeration].[Id]
202
- LEFT JOIN [meta].[ECSchemaDef] enumSchemaDef
203
- ON [enumSchemaDef].[ECInstanceId] = [enumDef].[Schema].[Id]
204
- LEFT JOIN [meta].[PropertyCategoryDef] [categoryDef]
205
- ON [categoryDef].[ECInstanceId] = [pd].[Category].[Id]
206
- LEFT JOIN [meta].[ECSchemaDef] [categorySchemaDef]
207
- ON [categorySchemaDef].[ECInstanceId] = [categoryDef].[Schema].[Id]
208
- LEFT JOIN [meta].[KindOfQuantityDef] [koqDef]
209
- ON [koqDef].[ECInstanceId] = [pd].[KindOfQuantity].[Id]
210
- LEFT JOIN [meta].[ECSchemaDef] [koqSchemaDef]
211
- ON [koqSchemaDef].[ECInstanceId] = [koqDef].[Schema].[Id]
212
- LEFT JOIN [meta].[ECClassDef] [structDef]
213
- ON structDef.[ECInstanceId] = [pd].[StructClass].[Id]
214
- LEFT JOIN [meta].[ECSchemaDef] [structSchemaDef]
215
- ON [structSchemaDef].[ECInstanceId] = [structDef].[Schema].[Id]
216
- LEFT JOIN [meta].[ECClassDef] [navRelDef]
217
- ON [navRelDef].[ECInstanceId] = [pd].[NavigationRelationshipClass].[Id]
218
- LEFT JOIN [meta].[ECSchemaDef] [navSchemaDef]
219
- ON [navSchemaDef].[ECInstanceId] = [navRelDef].[Schema].[Id]
220
- )
152
+ const withClassProperties = `
153
+ ClassProperties as (
154
+ SELECT
155
+ [cop].[SourceECInstanceId] as [ClassId],
156
+ json_object(
157
+ 'name', [pd].[Name],
158
+ 'label', [pd].[DisplayLabel],
159
+ 'description', [pd].[Description],
160
+ 'isReadOnly', IIF([pd].[IsReadOnly] = 1, json('true'), NULL),
161
+ 'priority', [pd].[Priority],
162
+ 'category', IIF([categoryDef].[Name] IS NULL, NULL, CONCAT([categorySchemaDef].[Name], '.', [categoryDef].[Name])),
163
+ 'kindOfQuantity', IIF([koqDef].[Name] IS NULL, NULL, CONCAT([koqSchemaDef].[Name], '.', [koqDef].[Name])),
164
+ 'typeName',
165
+ CASE
166
+ WHEN [pd].[Kind] = 0 OR [pd].[Kind] = 2 Then
167
+ CASE
168
+ WHEN [enumDef].[Name] IS NOT NULL Then CONCAT([enumSchemaDef].[Name], '.', [enumDef].[Name])
169
+ WHEN [pd].[PrimitiveType] = 257 Then 'binary'
170
+ WHEN [pd].[PrimitiveType] = 513 Then 'boolean'
171
+ WHEN [pd].[PrimitiveType] = 769 Then 'dateTime'
172
+ WHEN [pd].[PrimitiveType] = 1025 Then 'double'
173
+ WHEN [pd].[PrimitiveType] = 1281 Then 'int'
174
+ WHEN [pd].[PrimitiveType] = 1537 Then 'long'
175
+ WHEN [pd].[PrimitiveType] = 1793 Then 'point2d'
176
+ WHEN [pd].[PrimitiveType] = 2049 Then 'point3d'
177
+ WHEN [pd].[PrimitiveType] = 2305 Then 'string'
178
+ WHEN [pd].[PrimitiveType] = 2561 Then 'Bentley.Geometry.Common.IGeometry'
179
+ ELSE null
180
+ END
181
+ WHEN [pd].[Kind] = 1 OR [pd].[Kind] = 3 Then
182
+ CONCAT([structSchemaDef].[Name], '.', [structDef].[Name])
183
+ ELSE null
184
+ END,
185
+ 'type', ${propertyType("pd")},
186
+ 'minLength', [pd].[PrimitiveTypeMinLength],
187
+ 'maxLength', [pd].[PrimitiveTypeMaxLength],
188
+ 'minValue', [pd].[PrimitiveTypeMinValue],
189
+ 'maxValue', [pd].[PrimitiveTypeMaxValue],
190
+ 'extendedTypeName', [pd].[ExtendedTypeName],
191
+ 'minOccurs', [pd].[ArrayMinOccurs],
192
+ 'maxOccurs', [pd].[ArrayMaxOccurs],
193
+ 'direction', ${navigationDirection("pd")},
194
+ 'relationshipName', IIF([navRelDef].[Name] IS NULL, NULL, CONCAT([navSchemaDef].[Name], '.', [navRelDef].[Name])),
195
+ 'customAttributes', (${propertyCustomAttribute("pd")})
196
+ ) as [property]
197
+ FROM
198
+ [meta].[ECPropertyDef] as [pd]
199
+ JOIN [meta].[ClassOwnsLocalProperties] [cop]
200
+ ON cop.[TargetECInstanceId] = [pd].[ECInstanceId]
201
+ LEFT JOIN [meta].[ECEnumerationDef] [enumDef]
202
+ ON [enumDef].[ECInstanceId] = [pd].[Enumeration].[Id]
203
+ LEFT JOIN [meta].[ECSchemaDef] enumSchemaDef
204
+ ON [enumSchemaDef].[ECInstanceId] = [enumDef].[Schema].[Id]
205
+ LEFT JOIN [meta].[PropertyCategoryDef] [categoryDef]
206
+ ON [categoryDef].[ECInstanceId] = [pd].[Category].[Id]
207
+ LEFT JOIN [meta].[ECSchemaDef] [categorySchemaDef]
208
+ ON [categorySchemaDef].[ECInstanceId] = [categoryDef].[Schema].[Id]
209
+ LEFT JOIN [meta].[KindOfQuantityDef] [koqDef]
210
+ ON [koqDef].[ECInstanceId] = [pd].[KindOfQuantity].[Id]
211
+ LEFT JOIN [meta].[ECSchemaDef] [koqSchemaDef]
212
+ ON [koqSchemaDef].[ECInstanceId] = [koqDef].[Schema].[Id]
213
+ LEFT JOIN [meta].[ECClassDef] [structDef]
214
+ ON structDef.[ECInstanceId] = [pd].[StructClass].[Id]
215
+ LEFT JOIN [meta].[ECSchemaDef] [structSchemaDef]
216
+ ON [structSchemaDef].[ECInstanceId] = [structDef].[Schema].[Id]
217
+ LEFT JOIN [meta].[ECClassDef] [navRelDef]
218
+ ON [navRelDef].[ECInstanceId] = [pd].[NavigationRelationshipClass].[Id]
219
+ LEFT JOIN [meta].[ECSchemaDef] [navSchemaDef]
220
+ ON [navSchemaDef].[ECInstanceId] = [navRelDef].[Schema].[Id]
221
+ )
221
222
  `;
222
223
  /**
223
224
  * Query that provides EntityClass data and is shared by two cases:
@@ -225,52 +226,52 @@ LEFT JOIN [meta].[ECSchemaDef] [navSchemaDef]
225
226
  * 2. When querying a full schema with multiple schema item queries or
226
227
  * when just querying for Entity classes.
227
228
  */
228
- const baseEntityQuery = `
229
- SELECT
230
- [sd].[Name] as [schema],
231
- json_object (
232
- 'schemaItemType', 'EntityClass',
233
- 'name', [class].[Name],
234
- 'label', [class].[DisplayLabel],
235
- 'description', [class].[Description],
236
- 'modifier', ${(0, SchemaStubQueries_1.modifier)("class")},
237
- 'baseClass', (
238
- ${selectBaseClasses}
239
- ),
240
- 'mixins', (
241
- SELECT
242
- json_group_array(
243
- ec_classname([baseClass].[ECInstanceId], 's.c')
244
- )
245
- FROM
246
- [meta].[ECClassDef] [baseClass]
247
- INNER JOIN [meta].[ClassHasBaseClasses] [baseClassMap]
248
- ON [baseClassMap].[TargetECInstanceId] = [baseClass].[ECInstanceId]
249
- WHERE [baseClassMap].[SourceECInstanceId] = [class].[ECInstanceId]
250
- AND EXISTS(SELECT 1 FROM [meta].[ClassCustomAttribute] [ca] WHERE [baseClass].[ECInstanceId] = [ca].[Class].[Id]
251
- AND [ca].[CustomAttributeClass].[Id] Is ([CoreCA].[IsMixin]))
252
- ),
253
- 'customAttributes', (${classCustomAttribute("class")}),
254
- 'properties', (
255
- ${selectProperties}
256
- )
257
- ) AS [item]
258
- FROM [meta].[ECClassDef] [class]
259
- JOIN
260
- [meta].[ECSchemaDef] [sd] ON [sd].[ECInstanceId] = [class].[Schema].[Id]
261
- WHERE [class].[Type] = 0 AND
262
- [sd].[Name] = :schemaName
263
- AND NOT EXISTS(SELECT 1 FROM [meta].[ClassCustomAttribute] [ca] WHERE [class].[ECInstanceId] = [ca].[Class].[Id]
264
- AND [ca].[CustomAttributeClass].Id Is ([CoreCA].[IsMixin]))
229
+ const baseEntityQuery = `
230
+ SELECT
231
+ [sd].[Name] as [schema],
232
+ json_object (
233
+ 'schemaItemType', 'EntityClass',
234
+ 'name', [class].[Name],
235
+ 'label', [class].[DisplayLabel],
236
+ 'description', [class].[Description],
237
+ 'modifier', ${(0, SchemaStubQueries_1.modifier)("class")},
238
+ 'baseClass', (
239
+ ${selectBaseClasses}
240
+ ),
241
+ 'mixins', (
242
+ SELECT
243
+ json_group_array(
244
+ ec_classname([baseClass].[ECInstanceId], 's.c')
245
+ )
246
+ FROM
247
+ [meta].[ECClassDef] [baseClass]
248
+ INNER JOIN [meta].[ClassHasBaseClasses] [baseClassMap]
249
+ ON [baseClassMap].[TargetECInstanceId] = [baseClass].[ECInstanceId]
250
+ WHERE [baseClassMap].[SourceECInstanceId] = [class].[ECInstanceId]
251
+ AND EXISTS(SELECT 1 FROM [meta].[ClassCustomAttribute] [ca] WHERE [baseClass].[ECInstanceId] = [ca].[Class].[Id]
252
+ AND [ca].[CustomAttributeClass].[Id] Is ([CoreCA].[IsMixin]))
253
+ ),
254
+ 'customAttributes', (${classCustomAttribute("class")}),
255
+ 'properties', (
256
+ ${selectProperties}
257
+ )
258
+ ) AS [item]
259
+ FROM [meta].[ECClassDef] [class]
260
+ JOIN
261
+ [meta].[ECSchemaDef] [sd] ON [sd].[ECInstanceId] = [class].[Schema].[Id]
262
+ WHERE [class].[Type] = 0 AND
263
+ [sd].[Name] = :schemaName
264
+ AND NOT EXISTS(SELECT 1 FROM [meta].[ClassCustomAttribute] [ca] WHERE [class].[ECInstanceId] = [ca].[Class].[Id]
265
+ AND [ca].[CustomAttributeClass].Id Is ([CoreCA].[IsMixin]))
265
266
  `;
266
267
  /**
267
268
  * EntityClass query used to when querying for EntityClass data only. Not used
268
269
  * for full Schema load via single query.
269
270
  */
270
- const entityQuery = `
271
- WITH
272
- ${withClassProperties}
273
- ${baseEntityQuery}
271
+ const entityQuery = `
272
+ WITH
273
+ ${withClassProperties}
274
+ ${baseEntityQuery}
274
275
  `;
275
276
  /**
276
277
  * Query that provides Mixin data and is shared by two cases:
@@ -278,56 +279,56 @@ const entityQuery = `
278
279
  * 2. When querying a full schema with multiple schema item queries or
279
280
  * when just querying for Mixin classes.
280
281
  */
281
- const baseMixinQuery = `
282
- SELECT
283
- [sd].[Name] as [schema],
284
- json_object (
285
- 'schemaItemType', 'Mixin',
286
- 'name', [class].[Name],
287
- 'label', [class].[DisplayLabel],
288
- 'description', [class].[Description],
289
- 'modifier', ${(0, SchemaStubQueries_1.modifier)("class")},
290
- 'baseClass', (
291
- ${selectBaseClasses}
292
- ),
293
- 'appliesTo', (
294
- SELECT IIF(instr([atCTE].[AppliesTo], ':') > 1, ec_classname(ec_classId([atCTE].[AppliesTo]), 's.c'), CONCAT([atCTE].[AppliesToSchema], '.', [atCTE].[AppliesTo]))
295
- FROM [AppliesToCTE] [atCTE]
296
- WHERE [atCTE].[AppliesToId] = [class].[ECInstanceId]
297
- ),
298
- 'customAttributes', (
299
- SELECT
300
- json_group_array(json(XmlCAToJson([ca].[Class].[Id], [ca].[Instance])))
301
- FROM [meta].[CustomAttribute] [ca]
302
- WHERE [ca].[ContainerId] = [class].[ECInstanceId] AND [ca].[ContainerType] = 30
303
- AND json_extract(XmlCAToJson([ca].[Class].[Id], [ca].[Instance]), '$.ecClass') <> 'IsMixin'
304
- ),
305
- 'properties', (
306
- SELECT
307
- json_group_array(json([classProperties].[property]))
308
- FROM
309
- [ClassProperties] [classProperties]
310
- WHERE
311
- [classProperties].[ClassId] = [class].[ECInstanceId]
312
- )
313
- ) AS [item]
314
- FROM [meta].[ECClassDef] [class]
315
- JOIN
316
- [meta].[ECSchemaDef] [sd] ON [sd].[ECInstanceId] = [class].[Schema].[Id]
317
- WHERE [class].[Type] = 0 AND
318
- [sd].[Name] = :schemaName
319
- AND EXISTS(SELECT 1 FROM [meta].[ClassCustomAttribute] [ca] WHERE [class].[ECInstanceId] = [ca].[Class].[Id]
320
- AND [ca].[CustomAttributeClass].[Id] Is ([CoreCA].[IsMixin]))
282
+ const baseMixinQuery = `
283
+ SELECT
284
+ [sd].[Name] as [schema],
285
+ json_object (
286
+ 'schemaItemType', 'Mixin',
287
+ 'name', [class].[Name],
288
+ 'label', [class].[DisplayLabel],
289
+ 'description', [class].[Description],
290
+ 'modifier', ${(0, SchemaStubQueries_1.modifier)("class")},
291
+ 'baseClass', (
292
+ ${selectBaseClasses}
293
+ ),
294
+ 'appliesTo', (
295
+ SELECT IIF(instr([atCTE].[AppliesTo], ':') > 1, ec_classname(ec_classId([atCTE].[AppliesTo]), 's.c'), CONCAT([atCTE].[AppliesToSchema], '.', [atCTE].[AppliesTo]))
296
+ FROM [AppliesToCTE] [atCTE]
297
+ WHERE [atCTE].[AppliesToId] = [class].[ECInstanceId]
298
+ ),
299
+ 'customAttributes', (
300
+ SELECT
301
+ json_group_array(json(XmlCAToJson([ca].[Class].[Id], [ca].[Instance])))
302
+ FROM [meta].[CustomAttribute] [ca]
303
+ WHERE [ca].[ContainerId] = [class].[ECInstanceId] AND [ca].[ContainerType] = 30
304
+ AND json_extract(XmlCAToJson([ca].[Class].[Id], [ca].[Instance]), '$.ecClass') <> 'IsMixin'
305
+ ),
306
+ 'properties', (
307
+ SELECT
308
+ json_group_array(json([classProperties].[property]))
309
+ FROM
310
+ [ClassProperties] [classProperties]
311
+ WHERE
312
+ [classProperties].[ClassId] = [class].[ECInstanceId]
313
+ )
314
+ ) AS [item]
315
+ FROM [meta].[ECClassDef] [class]
316
+ JOIN
317
+ [meta].[ECSchemaDef] [sd] ON [sd].[ECInstanceId] = [class].[Schema].[Id]
318
+ WHERE [class].[Type] = 0 AND
319
+ [sd].[Name] = :schemaName
320
+ AND EXISTS(SELECT 1 FROM [meta].[ClassCustomAttribute] [ca] WHERE [class].[ECInstanceId] = [ca].[Class].[Id]
321
+ AND [ca].[CustomAttributeClass].[Id] Is ([CoreCA].[IsMixin]))
321
322
  `;
322
323
  /**
323
324
  * Mixin query used to when querying for Mixin data only. Not used
324
325
  * for full Schema load via single query.
325
326
  */
326
- const mixinQuery = `
327
- WITH
328
- ${withAppliesTo},
329
- ${withClassProperties}
330
- ${baseMixinQuery}
327
+ const mixinQuery = `
328
+ WITH
329
+ ${withAppliesTo},
330
+ ${withClassProperties}
331
+ ${baseMixinQuery}
331
332
  `;
332
333
  /**
333
334
  * Query that provides RelationshipClass data and is shared by two cases:
@@ -335,82 +336,82 @@ ${baseMixinQuery}
335
336
  * 2. When querying a full schema with multiple schema item queries or
336
337
  * when just querying for Relationship classes.
337
338
  */
338
- const baseRelationshipClassQuery = `
339
- SELECT
340
- [sd].Name as schema,
341
- json_object (
342
- 'schemaItemType', 'RelationshipClass',
343
- 'name', [class].[Name],
344
- 'label', [class].[DisplayLabel],
345
- 'description', [class].[Description],
346
- 'strength', ${(0, SchemaStubQueries_1.strength)("class")},
347
- 'strengthDirection', ${(0, SchemaStubQueries_1.strengthDirection)("class")},
348
- 'modifier', ${(0, SchemaStubQueries_1.modifier)("class")},
349
- 'baseClass', (
350
- ${selectBaseClasses}
351
- ),
352
- 'customAttributes', (${classCustomAttribute("class")}),
353
- 'properties', (
354
- ${selectProperties}
355
- ),
356
- 'source', (
357
- SELECT
358
- json_object (
359
- 'multiplicity', [sourceConst].[Multiplicity],
360
- 'roleLabel', [sourceConst].[RoleLabel],
361
- 'polymorphic', IIF([sourceConst].[IsPolyMorphic] = 1, json('true'), json('false')),
362
- 'abstractConstraint', [sourceConst].[AbstractConstraint],
363
- 'constraintClasses', json([sourceConst].[ConstraintClasses]),
364
- 'customAttributes', (
365
- SELECT
366
- json_group_array(json(XmlCAToJson([ca].[Class].[Id], [ca].[Instance])))
367
- FROM [meta].[CustomAttribute] [ca]
368
- WHERE [ca].[ContainerId] = [sourceConst].[ConstraintId] AND [ca].[ContainerType] = 1024
369
- ORDER BY [ca].[Ordinal]
370
- )
371
- )
372
- FROM
373
- [ClassRelationshipConstraints] [sourceConst]
374
- WHERE [sourceConst].[relationshipEnd] = 0
375
- AND [sourceConst].[ClassId] = [class].[ECInstanceId]
376
- ),
377
- 'target', (
378
- SELECT
379
- json_object (
380
- 'multiplicity', [targetConst].[Multiplicity],
381
- 'roleLabel', [targetConst].[RoleLabel],
382
- 'polymorphic', IIF([targetConst].[IsPolyMorphic] = 1, json('true'), json('false')),
383
- 'abstractConstraint', [targetConst].[AbstractConstraint],
384
- 'constraintClasses', json([targetConst].[ConstraintClasses]),
385
- 'customAttributes', (
386
- SELECT
387
- json_group_array(json(XmlCAToJson([ca].[Class].[Id], [ca].[Instance])))
388
- FROM [meta].[CustomAttribute] [ca]
389
- WHERE [ca].[ContainerId] = [targetConst].[ConstraintId] AND [ca].[ContainerType] = 2048
390
- ORDER BY [ca].[Ordinal]
391
- )
392
- )
393
- FROM
394
- [ClassRelationshipConstraints] [targetConst]
395
- WHERE [targetConst].[relationshipEnd] = 1
396
- AND [targetConst].[ClassId] = [class].[ECInstanceId]
397
- )
398
- ) AS [item]
399
- FROM [meta].[ECClassDef] [class]
400
- JOIN
401
- [meta].[ECSchemaDef] [sd] ON [sd].[ECInstanceId] = [class].[Schema].[Id]
402
- WHERE [class].[Type] = 1 AND
403
- [sd].[Name] = :schemaName
339
+ const baseRelationshipClassQuery = `
340
+ SELECT
341
+ [sd].Name as schema,
342
+ json_object (
343
+ 'schemaItemType', 'RelationshipClass',
344
+ 'name', [class].[Name],
345
+ 'label', [class].[DisplayLabel],
346
+ 'description', [class].[Description],
347
+ 'strength', ${(0, SchemaStubQueries_1.strength)("class")},
348
+ 'strengthDirection', ${(0, SchemaStubQueries_1.strengthDirection)("class")},
349
+ 'modifier', ${(0, SchemaStubQueries_1.modifier)("class")},
350
+ 'baseClass', (
351
+ ${selectBaseClasses}
352
+ ),
353
+ 'customAttributes', (${classCustomAttribute("class")}),
354
+ 'properties', (
355
+ ${selectProperties}
356
+ ),
357
+ 'source', (
358
+ SELECT
359
+ json_object (
360
+ 'multiplicity', [sourceConst].[Multiplicity],
361
+ 'roleLabel', [sourceConst].[RoleLabel],
362
+ 'polymorphic', IIF([sourceConst].[IsPolyMorphic] = 1, json('true'), json('false')),
363
+ 'abstractConstraint', [sourceConst].[AbstractConstraint],
364
+ 'constraintClasses', json([sourceConst].[ConstraintClasses]),
365
+ 'customAttributes', (
366
+ SELECT
367
+ json_group_array(json(XmlCAToJson([ca].[Class].[Id], [ca].[Instance])))
368
+ FROM [meta].[CustomAttribute] [ca]
369
+ WHERE [ca].[ContainerId] = [sourceConst].[ConstraintId] AND [ca].[ContainerType] = 1024
370
+ ORDER BY [ca].[Ordinal]
371
+ )
372
+ )
373
+ FROM
374
+ [ClassRelationshipConstraints] [sourceConst]
375
+ WHERE [sourceConst].[relationshipEnd] = 0
376
+ AND [sourceConst].[ClassId] = [class].[ECInstanceId]
377
+ ),
378
+ 'target', (
379
+ SELECT
380
+ json_object (
381
+ 'multiplicity', [targetConst].[Multiplicity],
382
+ 'roleLabel', [targetConst].[RoleLabel],
383
+ 'polymorphic', IIF([targetConst].[IsPolyMorphic] = 1, json('true'), json('false')),
384
+ 'abstractConstraint', [targetConst].[AbstractConstraint],
385
+ 'constraintClasses', json([targetConst].[ConstraintClasses]),
386
+ 'customAttributes', (
387
+ SELECT
388
+ json_group_array(json(XmlCAToJson([ca].[Class].[Id], [ca].[Instance])))
389
+ FROM [meta].[CustomAttribute] [ca]
390
+ WHERE [ca].[ContainerId] = [targetConst].[ConstraintId] AND [ca].[ContainerType] = 2048
391
+ ORDER BY [ca].[Ordinal]
392
+ )
393
+ )
394
+ FROM
395
+ [ClassRelationshipConstraints] [targetConst]
396
+ WHERE [targetConst].[relationshipEnd] = 1
397
+ AND [targetConst].[ClassId] = [class].[ECInstanceId]
398
+ )
399
+ ) AS [item]
400
+ FROM [meta].[ECClassDef] [class]
401
+ JOIN
402
+ [meta].[ECSchemaDef] [sd] ON [sd].[ECInstanceId] = [class].[Schema].[Id]
403
+ WHERE [class].[Type] = 1 AND
404
+ [sd].[Name] = :schemaName
404
405
  `;
405
406
  /**
406
407
  * RelationshipClass query used to when querying for RelationshipClass data only. Not used
407
408
  * for full Schema load via single query.
408
409
  */
409
- const relationshipClassQuery = `
410
- WITH
411
- ${withClassProperties},
412
- ${withRelationshipConstraints}
413
- ${baseRelationshipClassQuery}
410
+ const relationshipClassQuery = `
411
+ WITH
412
+ ${withClassProperties},
413
+ ${withRelationshipConstraints}
414
+ ${baseRelationshipClassQuery}
414
415
  `;
415
416
  /**
416
417
  * Query that provides StructClass data and is shared by two cases:
@@ -418,37 +419,37 @@ ${baseRelationshipClassQuery}
418
419
  * 2. When querying a full schema with multiple schema item queries or
419
420
  * when just querying for Struct classes.
420
421
  */
421
- const baseStructQuery = `
422
- SELECT
423
- [sd].Name as schema,
424
- json_object (
425
- 'schemaItemType', 'StructClass',
426
- 'name', [class].[Name],
427
- 'label', [class].[DisplayLabel],
428
- 'description', [class].[Description],
429
- 'modifier', ${(0, SchemaStubQueries_1.modifier)("class")},
430
- 'baseClass', (
431
- ${selectBaseClasses}
432
- ),
433
- 'customAttributes', (${classCustomAttribute("class")}),
434
- 'properties', (
435
- ${selectProperties}
436
- )
437
- ) AS item
438
- FROM [meta].[ECClassDef] [class]
439
- JOIN
440
- [meta].[ECSchemaDef] [sd] ON [sd].[ECInstanceId] = [class].[Schema].[Id]
441
- WHERE [class].[Type] = 2 AND
442
- [sd].[Name] = :schemaName
422
+ const baseStructQuery = `
423
+ SELECT
424
+ [sd].Name as schema,
425
+ json_object (
426
+ 'schemaItemType', 'StructClass',
427
+ 'name', [class].[Name],
428
+ 'label', [class].[DisplayLabel],
429
+ 'description', [class].[Description],
430
+ 'modifier', ${(0, SchemaStubQueries_1.modifier)("class")},
431
+ 'baseClass', (
432
+ ${selectBaseClasses}
433
+ ),
434
+ 'customAttributes', (${classCustomAttribute("class")}),
435
+ 'properties', (
436
+ ${selectProperties}
437
+ )
438
+ ) AS item
439
+ FROM [meta].[ECClassDef] [class]
440
+ JOIN
441
+ [meta].[ECSchemaDef] [sd] ON [sd].[ECInstanceId] = [class].[Schema].[Id]
442
+ WHERE [class].[Type] = 2 AND
443
+ [sd].[Name] = :schemaName
443
444
  `;
444
445
  /**
445
446
  * StructClass query used to when querying for StructClass data only. Not used
446
447
  * for full Schema load via single query.
447
448
  */
448
- const structQuery = `
449
- WITH
450
- ${withClassProperties}
451
- ${baseStructQuery}
449
+ const structQuery = `
450
+ WITH
451
+ ${withClassProperties}
452
+ ${baseStructQuery}
452
453
  `;
453
454
  /**
454
455
  * Query that provides CustomAttributeClass data and is shared by two cases:
@@ -456,141 +457,141 @@ ${baseStructQuery}
456
457
  * 2. When querying a full schema with multiple schema item queries or
457
458
  * when just querying for CustomAttribute classes.
458
459
  */
459
- const baseCustomAttributeQuery = `
460
- SELECT
461
- [sd].Name as schema,
462
- json_object (
463
- 'schemaItemType', 'CustomAttributeClass',
464
- 'name', [class].[Name],
465
- 'label', [class].[DisplayLabel],
466
- 'description', [class].[Description],
467
- 'appliesTo', [class].[CustomAttributeContainerType],
468
- 'modifier', ${(0, SchemaStubQueries_1.modifier)("class")},
469
- 'baseClass', (
470
- ${selectBaseClasses}
471
- ),
472
- 'customAttributes', (${classCustomAttribute("class")}),
473
- 'properties', (
474
- ${selectProperties}
475
- )
476
- ) AS [item]
477
- FROM [meta].[ECClassDef] [class]
478
- JOIN
479
- [meta].[ECSchemaDef] sd ON [sd].[ECInstanceId] = [class].[Schema].[Id]
480
- WHERE [class].[Type] = 3 AND
481
- [sd].[Name] = :schemaName
460
+ const baseCustomAttributeQuery = `
461
+ SELECT
462
+ [sd].Name as schema,
463
+ json_object (
464
+ 'schemaItemType', 'CustomAttributeClass',
465
+ 'name', [class].[Name],
466
+ 'label', [class].[DisplayLabel],
467
+ 'description', [class].[Description],
468
+ 'appliesTo', [class].[CustomAttributeContainerType],
469
+ 'modifier', ${(0, SchemaStubQueries_1.modifier)("class")},
470
+ 'baseClass', (
471
+ ${selectBaseClasses}
472
+ ),
473
+ 'customAttributes', (${classCustomAttribute("class")}),
474
+ 'properties', (
475
+ ${selectProperties}
476
+ )
477
+ ) AS [item]
478
+ FROM [meta].[ECClassDef] [class]
479
+ JOIN
480
+ [meta].[ECSchemaDef] sd ON [sd].[ECInstanceId] = [class].[Schema].[Id]
481
+ WHERE [class].[Type] = 3 AND
482
+ [sd].[Name] = :schemaName
482
483
  `;
483
484
  /**
484
485
  * CustomAttributeClass query used to when querying for CustomAttributeClass data only. Not used
485
486
  * for full Schema load via single query.
486
487
  */
487
- const customAttributeQuery = `
488
- WITH
489
- ${withClassProperties}
490
- ${baseCustomAttributeQuery}
488
+ const customAttributeQuery = `
489
+ WITH
490
+ ${withClassProperties}
491
+ ${baseCustomAttributeQuery}
491
492
  `;
492
493
  /**
493
494
  * Used by full schema load query via single query. Allows
494
495
  * all SchemaItemTypes to be queried at once.
495
496
  */
496
- const withSchemaItems = `
497
- SchemaItems AS (
498
- ${baseEntityQuery}
499
- UNION ALL
500
- ${baseRelationshipClassQuery}
501
- UNION ALL
502
- ${baseStructQuery}
503
- UNION ALL
504
- ${baseMixinQuery}
505
- UNION ALL
506
- ${baseCustomAttributeQuery}
507
- UNION ALL
508
- ${SchemaItemQueries_1.SchemaItemQueries.kindOfQuantity(true)}
509
- UNION ALL
510
- ${SchemaItemQueries_1.SchemaItemQueries.enumeration(true)}
511
- UNION ALL
512
- ${SchemaItemQueries_1.SchemaItemQueries.propertyCategory(true)}
513
- UNION ALL
514
- ${SchemaItemQueries_1.SchemaItemQueries.unit(true)}
515
- UNION ALL
516
- ${SchemaItemQueries_1.SchemaItemQueries.invertedUnit(true)}
517
- UNION ALL
518
- ${SchemaItemQueries_1.SchemaItemQueries.unitSystem(true)}
519
- UNION ALL
520
- ${SchemaItemQueries_1.SchemaItemQueries.constant(true)}
521
- UNION ALL
522
- ${SchemaItemQueries_1.SchemaItemQueries.phenomenon(true)}
523
- UNION ALL
524
- ${SchemaItemQueries_1.SchemaItemQueries.format(true)}
525
- )
497
+ const withSchemaItems = `
498
+ SchemaItems AS (
499
+ ${baseEntityQuery}
500
+ UNION ALL
501
+ ${baseRelationshipClassQuery}
502
+ UNION ALL
503
+ ${baseStructQuery}
504
+ UNION ALL
505
+ ${baseMixinQuery}
506
+ UNION ALL
507
+ ${baseCustomAttributeQuery}
508
+ UNION ALL
509
+ ${SchemaItemQueries_1.SchemaItemQueries.kindOfQuantity(true)}
510
+ UNION ALL
511
+ ${SchemaItemQueries_1.SchemaItemQueries.enumeration(true)}
512
+ UNION ALL
513
+ ${SchemaItemQueries_1.SchemaItemQueries.propertyCategory(true)}
514
+ UNION ALL
515
+ ${SchemaItemQueries_1.SchemaItemQueries.unit(true)}
516
+ UNION ALL
517
+ ${SchemaItemQueries_1.SchemaItemQueries.invertedUnit(true)}
518
+ UNION ALL
519
+ ${SchemaItemQueries_1.SchemaItemQueries.unitSystem(true)}
520
+ UNION ALL
521
+ ${SchemaItemQueries_1.SchemaItemQueries.constant(true)}
522
+ UNION ALL
523
+ ${SchemaItemQueries_1.SchemaItemQueries.phenomenon(true)}
524
+ UNION ALL
525
+ ${SchemaItemQueries_1.SchemaItemQueries.format(true)}
526
+ )
526
527
  `;
527
528
  /**
528
529
  * Query for Schema data without SchemaItems
529
530
  */
530
- const schemaNoItemsQuery = `
531
- WITH
532
- ${withSchemaReferences}
533
- SELECT
534
- json_object (
535
- 'name', [schemaDef].[Name],
536
- 'version', CONCAT(printf('%02d', [VersionMajor]), '.', printf('%02d', [VersionWrite]), '.', printf('%02d', [VersionMinor])),
537
- 'alias', [schemaDef].[Alias],
538
- 'label', [schemaDef].[DisplayLabel],
539
- 'description', [schemaDef].[Description],
540
- 'ecSpecMajorVersion', [schemaDef].[OriginalECXmlVersionMajor],
541
- 'ecSpecMinorVersion', [schemaDef].[OriginalECXmlVersionMinor],
542
- 'customAttributes', (${schemaCustomAttribute("schemaDef")}),
543
- 'references', (
544
- SELECT
545
- json_group_array(json([schemaReferences].[reference]))
546
- FROM
547
- [SchemaReferences] [schemaReferences]
548
- WHERE
549
- [schemaReferences].[SchemaId] = [schemaDef].[ECInstanceId]
550
- )
551
- ) as [schema]
552
- FROM
553
- [meta].[ECSchemaDef] [schemaDef] WHERE [Name] = :schemaName
531
+ const schemaNoItemsQuery = `
532
+ WITH
533
+ ${withSchemaReferences}
534
+ SELECT
535
+ json_object (
536
+ 'name', [schemaDef].[Name],
537
+ 'version', CONCAT(printf('%02d', [VersionMajor]), '.', printf('%02d', [VersionWrite]), '.', printf('%02d', [VersionMinor])),
538
+ 'alias', [schemaDef].[Alias],
539
+ 'label', [schemaDef].[DisplayLabel],
540
+ 'description', [schemaDef].[Description],
541
+ 'ecSpecMajorVersion', [schemaDef].[OriginalECXmlVersionMajor],
542
+ 'ecSpecMinorVersion', [schemaDef].[OriginalECXmlVersionMinor],
543
+ 'customAttributes', (${schemaCustomAttribute("schemaDef")}),
544
+ 'references', (
545
+ SELECT
546
+ json_group_array(json([schemaReferences].[reference]))
547
+ FROM
548
+ [SchemaReferences] [schemaReferences]
549
+ WHERE
550
+ [schemaReferences].[SchemaId] = [schemaDef].[ECInstanceId]
551
+ )
552
+ ) as [schema]
553
+ FROM
554
+ [meta].[ECSchemaDef] [schemaDef] WHERE [Name] = :schemaName
554
555
  `;
555
556
  /**
556
557
  * Query to load a full Schema via a single query.
557
558
  */
558
- const schemaQuery = `
559
- WITH
560
- ${withAppliesTo},
561
- ${withSchemaReferences},
562
- ${withClassProperties},
563
- ${withRelationshipConstraints},
564
- ${withSchemaItems}
565
- SELECT
566
- json_object (
567
- 'name', [schemaDef].[Name],
568
- 'version', CONCAT(printf('%02d', [VersionMajor]), '.', printf('%02d', [VersionWrite]), '.', printf('%02d', [VersionMinor])),
569
- 'alias', [schemaDef].[Alias],
570
- 'label', [schemaDef].[DisplayLabel],
571
- 'description', [schemaDef].[Description],
572
- 'ecSpecMajorVersion', [schemaDef].[OriginalECXmlVersionMajor],
573
- 'ecSpecMinorVersion', [schemaDef].[OriginalECXmlVersionMinor],
574
- 'customAttributes', (${schemaCustomAttribute("schemaDef")}),
575
- 'references', (
576
- SELECT
577
- json_group_array(json([schemaReferences].[reference]))
578
- FROM
579
- [SchemaReferences] [schemaReferences]
580
- WHERE
581
- [schemaReferences].[SchemaId] = [schemaDef].[ECInstanceId]
582
- ),
583
- 'items', (
584
- SELECT
585
- json_group_array(json(json_object(
586
- 'item', json([items].[item])
587
- )))
588
- FROM
589
- [SchemaItems] [items]
590
- )
591
- ) as [schema]
592
- FROM
593
- [meta].[ECSchemaDef] [schemaDef] WHERE [Name] = :schemaName
559
+ const schemaQuery = `
560
+ WITH
561
+ ${withAppliesTo},
562
+ ${withSchemaReferences},
563
+ ${withClassProperties},
564
+ ${withRelationshipConstraints},
565
+ ${withSchemaItems}
566
+ SELECT
567
+ json_object (
568
+ 'name', [schemaDef].[Name],
569
+ 'version', CONCAT(printf('%02d', [VersionMajor]), '.', printf('%02d', [VersionWrite]), '.', printf('%02d', [VersionMinor])),
570
+ 'alias', [schemaDef].[Alias],
571
+ 'label', [schemaDef].[DisplayLabel],
572
+ 'description', [schemaDef].[Description],
573
+ 'ecSpecMajorVersion', [schemaDef].[OriginalECXmlVersionMajor],
574
+ 'ecSpecMinorVersion', [schemaDef].[OriginalECXmlVersionMinor],
575
+ 'customAttributes', (${schemaCustomAttribute("schemaDef")}),
576
+ 'references', (
577
+ SELECT
578
+ json_group_array(json([schemaReferences].[reference]))
579
+ FROM
580
+ [SchemaReferences] [schemaReferences]
581
+ WHERE
582
+ [schemaReferences].[SchemaId] = [schemaDef].[ECInstanceId]
583
+ ),
584
+ 'items', (
585
+ SELECT
586
+ json_group_array(json(json_object(
587
+ 'item', json([items].[item])
588
+ )))
589
+ FROM
590
+ [SchemaItems] [items]
591
+ )
592
+ ) as [schema]
593
+ FROM
594
+ [meta].[ECSchemaDef] [schemaDef] WHERE [Name] = :schemaName
594
595
  `;
595
596
  /**
596
597
  * Queries for loading full Schema JSON.