@itwin/ecschema-metadata 5.2.0-dev.30 → 5.2.0-dev.32
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.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.d.ts.map +1 -1
- package/lib/cjs/IncrementalLoading/FullSchemaQueries.js +466 -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 +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.d.ts.map +1 -1
- package/lib/esm/IncrementalLoading/FullSchemaQueries.js +466 -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 +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,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
|
-
|
|
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
|
|
77
78
|
`;
|
|
78
79
|
/**
|
|
79
80
|
* Selects class property data for each class type. ClassProperties
|
|
80
81
|
* is a common table expression (CTE or WITH clause) defined below.
|
|
81
82
|
*/
|
|
82
|
-
const selectProperties = `
|
|
83
|
-
SELECT
|
|
84
|
-
json_group_array(json([classProperties].[property]))
|
|
85
|
-
FROM
|
|
86
|
-
[ClassProperties] [classProperties]
|
|
87
|
-
WHERE
|
|
88
|
-
[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]
|
|
89
90
|
`;
|
|
90
91
|
/**
|
|
91
92
|
* A CTE used to select AppliesTo from IsMixin CustomAttributes for a given Mixin.
|
|
92
93
|
*/
|
|
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
|
-
)
|
|
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
|
+
)
|
|
107
108
|
`;
|
|
108
109
|
/**
|
|
109
110
|
* A CTE used to select Schema reference data for a given Schema.
|
|
110
111
|
*/
|
|
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
|
-
)
|
|
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
|
+
)
|
|
124
125
|
`;
|
|
125
126
|
/**
|
|
126
127
|
* A CTE used to select Relationship constraints for a given RelationshipClass.
|
|
127
128
|
*/
|
|
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
|
-
)
|
|
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
|
+
)
|
|
147
148
|
`;
|
|
148
149
|
/**
|
|
149
150
|
* A CTE used to select Class property data for a given Class.
|
|
150
151
|
*/
|
|
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
|
-
)
|
|
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
|
+
)
|
|
221
222
|
`;
|
|
222
223
|
/**
|
|
223
224
|
* Query that provides EntityClass data and is shared by two cases:
|
|
@@ -225,52 +226,52 @@ LEFT JOIN [meta].[ECSchemaDef] [navSchemaDef]
|
|
|
225
226
|
* 2. When querying a full schema with multiple schema item queries or
|
|
226
227
|
* when just querying for Entity classes.
|
|
227
228
|
*/
|
|
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]))
|
|
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]))
|
|
265
266
|
`;
|
|
266
267
|
/**
|
|
267
268
|
* EntityClass query used to when querying for EntityClass data only. Not used
|
|
268
269
|
* for full Schema load via single query.
|
|
269
270
|
*/
|
|
270
|
-
const entityQuery = `
|
|
271
|
-
WITH
|
|
272
|
-
${withClassProperties}
|
|
273
|
-
${baseEntityQuery}
|
|
271
|
+
const entityQuery = `
|
|
272
|
+
WITH
|
|
273
|
+
${withClassProperties}
|
|
274
|
+
${baseEntityQuery}
|
|
274
275
|
`;
|
|
275
276
|
/**
|
|
276
277
|
* Query that provides Mixin data and is shared by two cases:
|
|
@@ -278,56 +279,56 @@ const entityQuery = `
|
|
|
278
279
|
* 2. When querying a full schema with multiple schema item queries or
|
|
279
280
|
* when just querying for Mixin classes.
|
|
280
281
|
*/
|
|
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]))
|
|
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]))
|
|
321
322
|
`;
|
|
322
323
|
/**
|
|
323
324
|
* Mixin query used to when querying for Mixin data only. Not used
|
|
324
325
|
* for full Schema load via single query.
|
|
325
326
|
*/
|
|
326
|
-
const mixinQuery = `
|
|
327
|
-
WITH
|
|
328
|
-
${withAppliesTo},
|
|
329
|
-
${withClassProperties}
|
|
330
|
-
${baseMixinQuery}
|
|
327
|
+
const mixinQuery = `
|
|
328
|
+
WITH
|
|
329
|
+
${withAppliesTo},
|
|
330
|
+
${withClassProperties}
|
|
331
|
+
${baseMixinQuery}
|
|
331
332
|
`;
|
|
332
333
|
/**
|
|
333
334
|
* Query that provides RelationshipClass data and is shared by two cases:
|
|
@@ -335,82 +336,82 @@ ${baseMixinQuery}
|
|
|
335
336
|
* 2. When querying a full schema with multiple schema item queries or
|
|
336
337
|
* when just querying for Relationship classes.
|
|
337
338
|
*/
|
|
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
|
|
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
|
|
404
405
|
`;
|
|
405
406
|
/**
|
|
406
407
|
* RelationshipClass query used to when querying for RelationshipClass data only. Not used
|
|
407
408
|
* for full Schema load via single query.
|
|
408
409
|
*/
|
|
409
|
-
const relationshipClassQuery = `
|
|
410
|
-
WITH
|
|
411
|
-
${withClassProperties},
|
|
412
|
-
${withRelationshipConstraints}
|
|
413
|
-
${baseRelationshipClassQuery}
|
|
410
|
+
const relationshipClassQuery = `
|
|
411
|
+
WITH
|
|
412
|
+
${withClassProperties},
|
|
413
|
+
${withRelationshipConstraints}
|
|
414
|
+
${baseRelationshipClassQuery}
|
|
414
415
|
`;
|
|
415
416
|
/**
|
|
416
417
|
* Query that provides StructClass data and is shared by two cases:
|
|
@@ -418,37 +419,37 @@ ${baseRelationshipClassQuery}
|
|
|
418
419
|
* 2. When querying a full schema with multiple schema item queries or
|
|
419
420
|
* when just querying for Struct classes.
|
|
420
421
|
*/
|
|
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
|
|
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
|
|
443
444
|
`;
|
|
444
445
|
/**
|
|
445
446
|
* StructClass query used to when querying for StructClass data only. Not used
|
|
446
447
|
* for full Schema load via single query.
|
|
447
448
|
*/
|
|
448
|
-
const structQuery = `
|
|
449
|
-
WITH
|
|
450
|
-
${withClassProperties}
|
|
451
|
-
${baseStructQuery}
|
|
449
|
+
const structQuery = `
|
|
450
|
+
WITH
|
|
451
|
+
${withClassProperties}
|
|
452
|
+
${baseStructQuery}
|
|
452
453
|
`;
|
|
453
454
|
/**
|
|
454
455
|
* Query that provides CustomAttributeClass data and is shared by two cases:
|
|
@@ -456,141 +457,141 @@ ${baseStructQuery}
|
|
|
456
457
|
* 2. When querying a full schema with multiple schema item queries or
|
|
457
458
|
* when just querying for CustomAttribute classes.
|
|
458
459
|
*/
|
|
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
|
|
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
|
|
482
483
|
`;
|
|
483
484
|
/**
|
|
484
485
|
* CustomAttributeClass query used to when querying for CustomAttributeClass data only. Not used
|
|
485
486
|
* for full Schema load via single query.
|
|
486
487
|
*/
|
|
487
|
-
const customAttributeQuery = `
|
|
488
|
-
WITH
|
|
489
|
-
${withClassProperties}
|
|
490
|
-
${baseCustomAttributeQuery}
|
|
488
|
+
const customAttributeQuery = `
|
|
489
|
+
WITH
|
|
490
|
+
${withClassProperties}
|
|
491
|
+
${baseCustomAttributeQuery}
|
|
491
492
|
`;
|
|
492
493
|
/**
|
|
493
494
|
* Used by full schema load query via single query. Allows
|
|
494
495
|
* all SchemaItemTypes to be queried at once.
|
|
495
496
|
*/
|
|
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
|
-
)
|
|
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
|
+
)
|
|
526
527
|
`;
|
|
527
528
|
/**
|
|
528
529
|
* Query for Schema data without SchemaItems
|
|
529
530
|
*/
|
|
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
|
|
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
|
|
554
555
|
`;
|
|
555
556
|
/**
|
|
556
557
|
* Query to load a full Schema via a single query.
|
|
557
558
|
*/
|
|
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
|
|
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
|
|
594
595
|
`;
|
|
595
596
|
/**
|
|
596
597
|
* Queries for loading full Schema JSON.
|