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