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

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