@itwin/ecschema-metadata 5.5.0-dev.2 → 5.5.0-dev.4

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 (122) hide show
  1. package/CHANGELOG.md +6 -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.js.map +1 -1
  8. package/lib/cjs/Deserialization/SchemaGraphUtil.js.map +1 -1
  9. package/lib/cjs/Deserialization/XmlParser.js.map +1 -1
  10. package/lib/cjs/Deserialization/XmlSerializationUtils.js.map +1 -1
  11. package/lib/cjs/ECName.js.map +1 -1
  12. package/lib/cjs/ECObjects.js.map +1 -1
  13. package/lib/cjs/Exception.js.map +1 -1
  14. package/lib/cjs/Formatting/FormatSetFormatsProvider.js.map +1 -1
  15. package/lib/cjs/Formatting/SchemaFormatsProvider.js.map +1 -1
  16. package/lib/cjs/IncrementalLoading/ClassParsers.js.map +1 -1
  17. package/lib/cjs/IncrementalLoading/ECSqlSchemaLocater.js.map +1 -1
  18. package/lib/cjs/IncrementalLoading/FullSchemaQueries.js +466 -466
  19. package/lib/cjs/IncrementalLoading/FullSchemaQueries.js.map +1 -1
  20. package/lib/cjs/IncrementalLoading/IncrementalSchemaLocater.js.map +1 -1
  21. package/lib/cjs/IncrementalLoading/IncrementalSchemaReader.js.map +1 -1
  22. package/lib/cjs/IncrementalLoading/SchemaItemParsers.js.map +1 -1
  23. package/lib/cjs/IncrementalLoading/SchemaItemQueries.js +235 -235
  24. package/lib/cjs/IncrementalLoading/SchemaItemQueries.js.map +1 -1
  25. package/lib/cjs/IncrementalLoading/SchemaParser.js.map +1 -1
  26. package/lib/cjs/IncrementalLoading/SchemaStubQueries.js +309 -309
  27. package/lib/cjs/IncrementalLoading/SchemaStubQueries.js.map +1 -1
  28. package/lib/cjs/Interfaces.js.map +1 -1
  29. package/lib/cjs/Metadata/Class.js.map +1 -1
  30. package/lib/cjs/Metadata/Constant.js.map +1 -1
  31. package/lib/cjs/Metadata/CustomAttribute.js.map +1 -1
  32. package/lib/cjs/Metadata/CustomAttributeClass.js.map +1 -1
  33. package/lib/cjs/Metadata/EntityClass.js.map +1 -1
  34. package/lib/cjs/Metadata/Enumeration.js.map +1 -1
  35. package/lib/cjs/Metadata/Format.js.map +1 -1
  36. package/lib/cjs/Metadata/InvertedUnit.js.map +1 -1
  37. package/lib/cjs/Metadata/KindOfQuantity.js.map +1 -1
  38. package/lib/cjs/Metadata/Mixin.js.map +1 -1
  39. package/lib/cjs/Metadata/OverrideFormat.js.map +1 -1
  40. package/lib/cjs/Metadata/Phenomenon.js.map +1 -1
  41. package/lib/cjs/Metadata/Property.js.map +1 -1
  42. package/lib/cjs/Metadata/PropertyCategory.js.map +1 -1
  43. package/lib/cjs/Metadata/RelationshipClass.js.map +1 -1
  44. package/lib/cjs/Metadata/Schema.js.map +1 -1
  45. package/lib/cjs/Metadata/SchemaItem.js.map +1 -1
  46. package/lib/cjs/Metadata/UnitSystem.js.map +1 -1
  47. package/lib/cjs/PropertyTypes.js.map +1 -1
  48. package/lib/cjs/SchemaJsonLocater.js.map +1 -1
  49. package/lib/cjs/SchemaKey.js.map +1 -1
  50. package/lib/cjs/SchemaLoader.js.map +1 -1
  51. package/lib/cjs/SchemaPartVisitorDelegate.js.map +1 -1
  52. package/lib/cjs/UnitConversion/Graph.js.map +1 -1
  53. package/lib/cjs/UnitConversion/Parser.js.map +1 -1
  54. package/lib/cjs/UnitConversion/UnitConversion.js.map +1 -1
  55. package/lib/cjs/UnitConversion/UnitConverter.js.map +1 -1
  56. package/lib/cjs/UnitConversion/UnitTree.js.map +1 -1
  57. package/lib/cjs/UnitProvider/SchemaUnitProvider.js.map +1 -1
  58. package/lib/cjs/Validation/SchemaWalker.js.map +1 -1
  59. package/lib/cjs/ecschema-metadata.js.map +1 -1
  60. package/lib/cjs/utils/SchemaGraph.js.map +1 -1
  61. package/lib/cjs/utils/SchemaLoadingController.js.map +1 -1
  62. package/lib/esm/Constants.js.map +1 -1
  63. package/lib/esm/DelayedPromise.js.map +1 -1
  64. package/lib/esm/Deserialization/AbstractParser.js.map +1 -1
  65. package/lib/esm/Deserialization/Helper.js.map +1 -1
  66. package/lib/esm/Deserialization/JsonParser.js.map +1 -1
  67. package/lib/esm/Deserialization/JsonProps.js.map +1 -1
  68. package/lib/esm/Deserialization/SchemaGraphUtil.js.map +1 -1
  69. package/lib/esm/Deserialization/XmlParser.js.map +1 -1
  70. package/lib/esm/Deserialization/XmlSerializationUtils.js.map +1 -1
  71. package/lib/esm/ECName.js.map +1 -1
  72. package/lib/esm/ECObjects.js.map +1 -1
  73. package/lib/esm/Exception.js.map +1 -1
  74. package/lib/esm/Formatting/FormatSetFormatsProvider.js.map +1 -1
  75. package/lib/esm/Formatting/SchemaFormatsProvider.js.map +1 -1
  76. package/lib/esm/IncrementalLoading/ClassParsers.js.map +1 -1
  77. package/lib/esm/IncrementalLoading/ECSqlSchemaLocater.js.map +1 -1
  78. package/lib/esm/IncrementalLoading/FullSchemaQueries.js +466 -466
  79. package/lib/esm/IncrementalLoading/FullSchemaQueries.js.map +1 -1
  80. package/lib/esm/IncrementalLoading/IncrementalSchemaLocater.js.map +1 -1
  81. package/lib/esm/IncrementalLoading/IncrementalSchemaReader.js.map +1 -1
  82. package/lib/esm/IncrementalLoading/SchemaItemParsers.js.map +1 -1
  83. package/lib/esm/IncrementalLoading/SchemaItemQueries.js +235 -235
  84. package/lib/esm/IncrementalLoading/SchemaItemQueries.js.map +1 -1
  85. package/lib/esm/IncrementalLoading/SchemaParser.js.map +1 -1
  86. package/lib/esm/IncrementalLoading/SchemaStubQueries.js +309 -309
  87. package/lib/esm/IncrementalLoading/SchemaStubQueries.js.map +1 -1
  88. package/lib/esm/Interfaces.js.map +1 -1
  89. package/lib/esm/Metadata/Class.js.map +1 -1
  90. package/lib/esm/Metadata/Constant.js.map +1 -1
  91. package/lib/esm/Metadata/CustomAttribute.js.map +1 -1
  92. package/lib/esm/Metadata/CustomAttributeClass.js.map +1 -1
  93. package/lib/esm/Metadata/EntityClass.js.map +1 -1
  94. package/lib/esm/Metadata/Enumeration.js.map +1 -1
  95. package/lib/esm/Metadata/Format.js.map +1 -1
  96. package/lib/esm/Metadata/InvertedUnit.js.map +1 -1
  97. package/lib/esm/Metadata/KindOfQuantity.js.map +1 -1
  98. package/lib/esm/Metadata/Mixin.js.map +1 -1
  99. package/lib/esm/Metadata/OverrideFormat.js.map +1 -1
  100. package/lib/esm/Metadata/Phenomenon.js.map +1 -1
  101. package/lib/esm/Metadata/Property.js.map +1 -1
  102. package/lib/esm/Metadata/PropertyCategory.js.map +1 -1
  103. package/lib/esm/Metadata/RelationshipClass.js.map +1 -1
  104. package/lib/esm/Metadata/Schema.js.map +1 -1
  105. package/lib/esm/Metadata/SchemaItem.js.map +1 -1
  106. package/lib/esm/Metadata/UnitSystem.js.map +1 -1
  107. package/lib/esm/PropertyTypes.js.map +1 -1
  108. package/lib/esm/SchemaJsonLocater.js.map +1 -1
  109. package/lib/esm/SchemaKey.js.map +1 -1
  110. package/lib/esm/SchemaLoader.js.map +1 -1
  111. package/lib/esm/SchemaPartVisitorDelegate.js.map +1 -1
  112. package/lib/esm/UnitConversion/Graph.js.map +1 -1
  113. package/lib/esm/UnitConversion/Parser.js.map +1 -1
  114. package/lib/esm/UnitConversion/UnitConversion.js.map +1 -1
  115. package/lib/esm/UnitConversion/UnitConverter.js.map +1 -1
  116. package/lib/esm/UnitConversion/UnitTree.js.map +1 -1
  117. package/lib/esm/UnitProvider/SchemaUnitProvider.js.map +1 -1
  118. package/lib/esm/Validation/SchemaWalker.js.map +1 -1
  119. package/lib/esm/ecschema-metadata.js.map +1 -1
  120. package/lib/esm/utils/SchemaGraph.js.map +1 -1
  121. package/lib/esm/utils/SchemaLoadingController.js.map +1 -1
  122. package/package.json +6 -6
@@ -12,213 +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
- ORDER BY [baseClassMap].[Ordinal] ASC
77
- 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
78
78
  `;
79
79
  /**
80
80
  * Selects class property data for each class type. ClassProperties
81
81
  * is a common table expression (CTE or WITH clause) defined below.
82
82
  */
83
- const selectProperties = `
84
- SELECT
85
- json_group_array(json([classProperties].[property]))
86
- FROM
87
- [ClassProperties] [classProperties]
88
- WHERE
89
- [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]
90
90
  `;
91
91
  /**
92
92
  * A CTE used to select AppliesTo from IsMixin CustomAttributes for a given Mixin.
93
93
  */
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
- )
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
+ )
108
108
  `;
109
109
  /**
110
110
  * A CTE used to select Schema reference data for a given Schema.
111
111
  */
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
- )
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
+ )
125
125
  `;
126
126
  /**
127
127
  * A CTE used to select Relationship constraints for a given RelationshipClass.
128
128
  */
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
- )
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
+ )
148
148
  `;
149
149
  /**
150
150
  * A CTE used to select Class property data for a given Class.
151
151
  */
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
- )
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
+ )
222
222
  `;
223
223
  /**
224
224
  * Query that provides EntityClass data and is shared by two cases:
@@ -226,52 +226,52 @@ LEFT JOIN [meta].[ECSchemaDef] [navSchemaDef]
226
226
  * 2. When querying a full schema with multiple schema item queries or
227
227
  * when just querying for Entity classes.
228
228
  */
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]))
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]))
266
266
  `;
267
267
  /**
268
268
  * EntityClass query used to when querying for EntityClass data only. Not used
269
269
  * for full Schema load via single query.
270
270
  */
271
- const entityQuery = `
272
- WITH
273
- ${withClassProperties}
274
- ${baseEntityQuery}
271
+ const entityQuery = `
272
+ WITH
273
+ ${withClassProperties}
274
+ ${baseEntityQuery}
275
275
  `;
276
276
  /**
277
277
  * Query that provides Mixin data and is shared by two cases:
@@ -279,56 +279,56 @@ const entityQuery = `
279
279
  * 2. When querying a full schema with multiple schema item queries or
280
280
  * when just querying for Mixin classes.
281
281
  */
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]))
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]))
322
322
  `;
323
323
  /**
324
324
  * Mixin query used to when querying for Mixin data only. Not used
325
325
  * for full Schema load via single query.
326
326
  */
327
- const mixinQuery = `
328
- WITH
329
- ${withAppliesTo},
330
- ${withClassProperties}
331
- ${baseMixinQuery}
327
+ const mixinQuery = `
328
+ WITH
329
+ ${withAppliesTo},
330
+ ${withClassProperties}
331
+ ${baseMixinQuery}
332
332
  `;
333
333
  /**
334
334
  * Query that provides RelationshipClass data and is shared by two cases:
@@ -336,82 +336,82 @@ ${baseMixinQuery}
336
336
  * 2. When querying a full schema with multiple schema item queries or
337
337
  * when just querying for Relationship classes.
338
338
  */
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
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
405
405
  `;
406
406
  /**
407
407
  * RelationshipClass query used to when querying for RelationshipClass data only. Not used
408
408
  * for full Schema load via single query.
409
409
  */
410
- const relationshipClassQuery = `
411
- WITH
412
- ${withClassProperties},
413
- ${withRelationshipConstraints}
414
- ${baseRelationshipClassQuery}
410
+ const relationshipClassQuery = `
411
+ WITH
412
+ ${withClassProperties},
413
+ ${withRelationshipConstraints}
414
+ ${baseRelationshipClassQuery}
415
415
  `;
416
416
  /**
417
417
  * Query that provides StructClass data and is shared by two cases:
@@ -419,37 +419,37 @@ ${baseRelationshipClassQuery}
419
419
  * 2. When querying a full schema with multiple schema item queries or
420
420
  * when just querying for Struct classes.
421
421
  */
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
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
444
444
  `;
445
445
  /**
446
446
  * StructClass query used to when querying for StructClass data only. Not used
447
447
  * for full Schema load via single query.
448
448
  */
449
- const structQuery = `
450
- WITH
451
- ${withClassProperties}
452
- ${baseStructQuery}
449
+ const structQuery = `
450
+ WITH
451
+ ${withClassProperties}
452
+ ${baseStructQuery}
453
453
  `;
454
454
  /**
455
455
  * Query that provides CustomAttributeClass data and is shared by two cases:
@@ -457,141 +457,141 @@ ${baseStructQuery}
457
457
  * 2. When querying a full schema with multiple schema item queries or
458
458
  * when just querying for CustomAttribute classes.
459
459
  */
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
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
483
483
  `;
484
484
  /**
485
485
  * CustomAttributeClass query used to when querying for CustomAttributeClass data only. Not used
486
486
  * for full Schema load via single query.
487
487
  */
488
- const customAttributeQuery = `
489
- WITH
490
- ${withClassProperties}
491
- ${baseCustomAttributeQuery}
488
+ const customAttributeQuery = `
489
+ WITH
490
+ ${withClassProperties}
491
+ ${baseCustomAttributeQuery}
492
492
  `;
493
493
  /**
494
494
  * Used by full schema load query via single query. Allows
495
495
  * all SchemaItemTypes to be queried at once.
496
496
  */
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
- )
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
+ )
527
527
  `;
528
528
  /**
529
529
  * Query for Schema data without SchemaItems
530
530
  */
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
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
555
555
  `;
556
556
  /**
557
557
  * Query to load a full Schema via a single query.
558
558
  */
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
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
595
595
  `;
596
596
  /**
597
597
  * Queries for loading full Schema JSON.