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