@itwin/ecschema-metadata 5.2.0-dev.25 → 5.2.0-dev.28

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