@itwin/core-backend 4.8.0-dev.9 → 4.9.0-dev.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. package/CHANGELOG.md +45 -1
  2. package/lib/cjs/BackendHubAccess.d.ts +18 -16
  3. package/lib/cjs/BackendHubAccess.d.ts.map +1 -1
  4. package/lib/cjs/BackendHubAccess.js +16 -15
  5. package/lib/cjs/BackendHubAccess.js.map +1 -1
  6. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  7. package/lib/cjs/BisCoreSchema.js.map +1 -1
  8. package/lib/cjs/BlobContainerService.js.map +1 -1
  9. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  10. package/lib/cjs/BriefcaseManager.js +19 -11
  11. package/lib/cjs/BriefcaseManager.js.map +1 -1
  12. package/lib/cjs/Category.d.ts +0 -6
  13. package/lib/cjs/Category.d.ts.map +1 -1
  14. package/lib/cjs/Category.js +0 -6
  15. package/lib/cjs/Category.js.map +1 -1
  16. package/lib/cjs/ChangeSummaryManager.d.ts.map +1 -1
  17. package/lib/cjs/ChangeSummaryManager.js +13 -11
  18. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  19. package/lib/cjs/ChangedElementsDb.d.ts.map +1 -1
  20. package/lib/cjs/ChangedElementsDb.js +5 -3
  21. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  22. package/lib/cjs/ChangedElementsManager.js.map +1 -1
  23. package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
  24. package/lib/cjs/ChangesetECAdaptor.js +242 -237
  25. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  26. package/lib/cjs/ChannelControl.d.ts +4 -26
  27. package/lib/cjs/ChannelControl.d.ts.map +1 -1
  28. package/lib/cjs/ChannelControl.js +2 -101
  29. package/lib/cjs/ChannelControl.js.map +1 -1
  30. package/lib/cjs/CheckpointManager.d.ts.map +1 -1
  31. package/lib/cjs/CheckpointManager.js +5 -3
  32. package/lib/cjs/CheckpointManager.js.map +1 -1
  33. package/lib/cjs/ClassRegistry.d.ts.map +1 -1
  34. package/lib/cjs/ClassRegistry.js +8 -7
  35. package/lib/cjs/ClassRegistry.js.map +1 -1
  36. package/lib/cjs/CloudSqlite.d.ts +1 -1
  37. package/lib/cjs/CloudSqlite.d.ts.map +1 -1
  38. package/lib/cjs/CloudSqlite.js +2 -2
  39. package/lib/cjs/CloudSqlite.js.map +1 -1
  40. package/lib/cjs/CodeService.js.map +1 -1
  41. package/lib/cjs/CodeSpecs.js.map +1 -1
  42. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  43. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  44. package/lib/cjs/DevTools.d.ts.map +1 -1
  45. package/lib/cjs/DevTools.js +2 -1
  46. package/lib/cjs/DevTools.js.map +1 -1
  47. package/lib/cjs/DisplayStyle.d.ts +0 -3
  48. package/lib/cjs/DisplayStyle.d.ts.map +1 -1
  49. package/lib/cjs/DisplayStyle.js +0 -3
  50. package/lib/cjs/DisplayStyle.js.map +1 -1
  51. package/lib/cjs/ECDb.d.ts +6 -1
  52. package/lib/cjs/ECDb.d.ts.map +1 -1
  53. package/lib/cjs/ECDb.js +19 -14
  54. package/lib/cjs/ECDb.js.map +1 -1
  55. package/lib/cjs/ECSchemaXmlContext.js +2 -2
  56. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  57. package/lib/cjs/ECSqlStatement.d.ts +6 -3
  58. package/lib/cjs/ECSqlStatement.d.ts.map +1 -1
  59. package/lib/cjs/ECSqlStatement.js +3 -3
  60. package/lib/cjs/ECSqlStatement.js.map +1 -1
  61. package/lib/cjs/Element.d.ts +2 -59
  62. package/lib/cjs/Element.d.ts.map +1 -1
  63. package/lib/cjs/Element.js +7 -63
  64. package/lib/cjs/Element.js.map +1 -1
  65. package/lib/cjs/ElementAspect.d.ts +0 -5
  66. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  67. package/lib/cjs/ElementAspect.js +4 -8
  68. package/lib/cjs/ElementAspect.js.map +1 -1
  69. package/lib/cjs/ElementGraphics.d.ts.map +1 -1
  70. package/lib/cjs/ElementGraphics.js +2 -1
  71. package/lib/cjs/ElementGraphics.js.map +1 -1
  72. package/lib/cjs/ElementTreeWalker.d.ts +19 -0
  73. package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
  74. package/lib/cjs/ElementTreeWalker.js +23 -9
  75. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  76. package/lib/cjs/Entity.js.map +1 -1
  77. package/lib/cjs/EntityReferences.js.map +1 -1
  78. package/lib/cjs/ExportGraphics.js.map +1 -1
  79. package/lib/cjs/ExternalSource.js.map +1 -1
  80. package/lib/cjs/GeoCoordConfig.d.ts.map +1 -1
  81. package/lib/cjs/GeoCoordConfig.js +2 -1
  82. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  83. package/lib/cjs/GeographicCRSServices.js +2 -2
  84. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  85. package/lib/cjs/GeometrySummary.d.ts.map +1 -1
  86. package/lib/cjs/GeometrySummary.js +49 -48
  87. package/lib/cjs/GeometrySummary.js.map +1 -1
  88. package/lib/cjs/HubMock.js.map +1 -1
  89. package/lib/cjs/IModelCloneContext.js.map +1 -1
  90. package/lib/cjs/IModelDb.d.ts +24 -94
  91. package/lib/cjs/IModelDb.d.ts.map +1 -1
  92. package/lib/cjs/IModelDb.js +196 -151
  93. package/lib/cjs/IModelDb.js.map +1 -1
  94. package/lib/cjs/IModelElementCloneContext.d.ts.map +1 -1
  95. package/lib/cjs/IModelElementCloneContext.js +5 -4
  96. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  97. package/lib/cjs/IModelHost.d.ts +5 -3
  98. package/lib/cjs/IModelHost.d.ts.map +1 -1
  99. package/lib/cjs/IModelHost.js +16 -18
  100. package/lib/cjs/IModelHost.js.map +1 -1
  101. package/lib/cjs/IModelJsFs.js.map +1 -1
  102. package/lib/cjs/IpcHost.d.ts.map +1 -1
  103. package/lib/cjs/IpcHost.js +15 -13
  104. package/lib/cjs/IpcHost.js.map +1 -1
  105. package/lib/cjs/LineStyle.js.map +1 -1
  106. package/lib/cjs/LocalHub.d.ts +2 -2
  107. package/lib/cjs/LocalHub.d.ts.map +1 -1
  108. package/lib/cjs/LocalHub.js +18 -18
  109. package/lib/cjs/LocalHub.js.map +1 -1
  110. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  111. package/lib/cjs/LockControl.d.ts +73 -0
  112. package/lib/cjs/LockControl.d.ts.map +1 -0
  113. package/lib/cjs/LockControl.js +11 -0
  114. package/lib/cjs/LockControl.js.map +1 -0
  115. package/lib/cjs/Material.d.ts +2 -5
  116. package/lib/cjs/Material.d.ts.map +1 -1
  117. package/lib/cjs/Material.js +1 -4
  118. package/lib/cjs/Material.js.map +1 -1
  119. package/lib/cjs/Model.d.ts +0 -22
  120. package/lib/cjs/Model.d.ts.map +1 -1
  121. package/lib/cjs/Model.js +5 -26
  122. package/lib/cjs/Model.js.map +1 -1
  123. package/lib/cjs/NativeAppStorage.js.map +1 -1
  124. package/lib/cjs/NativeHost.js.map +1 -1
  125. package/lib/cjs/NavigationRelationship.js.map +1 -1
  126. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  127. package/lib/cjs/PropertyStore.js.map +1 -1
  128. package/lib/cjs/Relationship.d.ts +0 -12
  129. package/lib/cjs/Relationship.d.ts.map +1 -1
  130. package/lib/cjs/Relationship.js +5 -16
  131. package/lib/cjs/Relationship.js.map +1 -1
  132. package/lib/cjs/RpcBackend.js.map +1 -1
  133. package/lib/cjs/SQLiteDb.d.ts +6 -1
  134. package/lib/cjs/SQLiteDb.d.ts.map +1 -1
  135. package/lib/cjs/SQLiteDb.js +23 -16
  136. package/lib/cjs/SQLiteDb.js.map +1 -1
  137. package/lib/cjs/Schema.js.map +1 -1
  138. package/lib/cjs/SchemaSync.d.ts +3 -0
  139. package/lib/cjs/SchemaSync.d.ts.map +1 -1
  140. package/lib/cjs/SchemaSync.js +24 -11
  141. package/lib/cjs/SchemaSync.js.map +1 -1
  142. package/lib/cjs/SchemaUtils.js +3 -3
  143. package/lib/cjs/SchemaUtils.js.map +1 -1
  144. package/lib/cjs/SqliteChangesetReader.d.ts.map +1 -1
  145. package/lib/cjs/SqliteChangesetReader.js +2 -2
  146. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  147. package/lib/cjs/SqliteStatement.js +2 -2
  148. package/lib/cjs/SqliteStatement.js.map +1 -1
  149. package/lib/cjs/TextAnnotationElement.js.map +1 -1
  150. package/lib/cjs/TextAnnotationGeometry.js.map +1 -1
  151. package/lib/cjs/TextAnnotationLayout.js.map +1 -1
  152. package/lib/cjs/Texture.js.map +1 -1
  153. package/lib/cjs/TileStorage.js.map +1 -1
  154. package/lib/cjs/TxnManager.d.ts +2 -1
  155. package/lib/cjs/TxnManager.d.ts.map +1 -1
  156. package/lib/cjs/TxnManager.js +4 -2
  157. package/lib/cjs/TxnManager.js.map +1 -1
  158. package/lib/cjs/ViewDefinition.d.ts +1 -18
  159. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  160. package/lib/cjs/ViewDefinition.js +1 -18
  161. package/lib/cjs/ViewDefinition.js.map +1 -1
  162. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  163. package/lib/cjs/ViewStore.d.ts.map +1 -1
  164. package/lib/cjs/ViewStore.js +6 -5
  165. package/lib/cjs/ViewStore.js.map +1 -1
  166. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  167. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +32 -32
  168. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -27
  169. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -94
  170. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -21
  171. package/lib/cjs/core-backend.d.ts +2 -1
  172. package/lib/cjs/core-backend.d.ts.map +1 -1
  173. package/lib/cjs/core-backend.js +3 -5
  174. package/lib/cjs/core-backend.js.map +1 -1
  175. package/lib/cjs/domains/FunctionalElements.d.ts +0 -10
  176. package/lib/cjs/domains/FunctionalElements.d.ts.map +1 -1
  177. package/lib/cjs/domains/FunctionalElements.js +0 -10
  178. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  179. package/lib/cjs/domains/FunctionalSchema.d.ts.map +1 -1
  180. package/lib/cjs/domains/FunctionalSchema.js +2 -1
  181. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  182. package/lib/cjs/domains/GenericElements.d.ts +0 -18
  183. package/lib/cjs/domains/GenericElements.d.ts.map +1 -1
  184. package/lib/cjs/domains/GenericElements.js +0 -18
  185. package/lib/cjs/domains/GenericElements.js.map +1 -1
  186. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  187. package/lib/cjs/internal/ChangesetConflictArgs.d.ts +24 -0
  188. package/lib/cjs/internal/ChangesetConflictArgs.d.ts.map +1 -0
  189. package/lib/cjs/internal/ChangesetConflictArgs.js +7 -0
  190. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -0
  191. package/lib/cjs/internal/ChannelAdmin.d.ts +34 -0
  192. package/lib/cjs/internal/ChannelAdmin.d.ts.map +1 -0
  193. package/lib/cjs/internal/ChannelAdmin.js +117 -0
  194. package/lib/cjs/internal/ChannelAdmin.js.map +1 -0
  195. package/lib/cjs/internal/NativePlatform.d.ts +15 -0
  196. package/lib/cjs/internal/NativePlatform.d.ts.map +1 -0
  197. package/lib/cjs/internal/NativePlatform.js +49 -0
  198. package/lib/cjs/internal/NativePlatform.js.map +1 -0
  199. package/lib/cjs/internal/NoLocks.d.ts +6 -0
  200. package/lib/cjs/internal/NoLocks.d.ts.map +1 -0
  201. package/lib/cjs/internal/NoLocks.js +31 -0
  202. package/lib/cjs/internal/NoLocks.js.map +1 -0
  203. package/lib/cjs/{ServerBasedLocks.d.ts → internal/ServerBasedLocks.d.ts} +10 -16
  204. package/lib/cjs/internal/ServerBasedLocks.d.ts.map +1 -0
  205. package/lib/cjs/{ServerBasedLocks.js → internal/ServerBasedLocks.js} +29 -18
  206. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -0
  207. package/lib/cjs/internal/Symbols.d.ts +11 -0
  208. package/lib/cjs/internal/Symbols.d.ts.map +1 -0
  209. package/lib/cjs/internal/Symbols.js +21 -0
  210. package/lib/cjs/internal/Symbols.js.map +1 -0
  211. package/lib/cjs/internal/cross-package.d.ts +4 -0
  212. package/lib/cjs/internal/cross-package.d.ts.map +1 -0
  213. package/lib/cjs/internal/cross-package.js +16 -0
  214. package/lib/cjs/internal/cross-package.js.map +1 -0
  215. package/lib/cjs/internal/workspace/SettingsImpl.d.ts +2 -2
  216. package/lib/cjs/internal/workspace/SettingsImpl.d.ts.map +1 -1
  217. package/lib/cjs/internal/workspace/SettingsImpl.js +3 -3
  218. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -1
  219. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js +2 -2
  220. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
  221. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
  222. package/lib/cjs/internal/workspace/WorkspaceImpl.js +31 -27
  223. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  224. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.d.ts.map +1 -1
  225. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js +2 -1
  226. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -1
  227. package/lib/cjs/rpc/multipart.js.map +1 -1
  228. package/lib/cjs/rpc/tracing.d.ts.map +1 -1
  229. package/lib/cjs/rpc/tracing.js +5 -2
  230. package/lib/cjs/rpc/tracing.js.map +1 -1
  231. package/lib/cjs/rpc/web/logging.js.map +1 -1
  232. package/lib/cjs/rpc/web/request.js.map +1 -1
  233. package/lib/cjs/rpc/web/response.js.map +1 -1
  234. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  235. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +1 -0
  236. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts.map +1 -1
  237. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +9 -4
  238. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  239. package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts.map +1 -1
  240. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js +5 -3
  241. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  242. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  243. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  244. package/lib/cjs/rpc-impl/WipRpcImpl.js.map +1 -1
  245. package/lib/cjs/workspace/Settings.d.ts +3 -3
  246. package/lib/cjs/workspace/Settings.d.ts.map +1 -1
  247. package/lib/cjs/workspace/Settings.js +1 -1
  248. package/lib/cjs/workspace/Settings.js.map +1 -1
  249. package/lib/cjs/workspace/SettingsSchemas.d.ts +2 -2
  250. package/lib/cjs/workspace/SettingsSchemas.d.ts.map +1 -1
  251. package/lib/cjs/workspace/SettingsSchemas.js +1 -1
  252. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  253. package/lib/cjs/workspace/Workspace.d.ts +4 -4
  254. package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
  255. package/lib/cjs/workspace/Workspace.js +1 -1
  256. package/lib/cjs/workspace/Workspace.js.map +1 -1
  257. package/lib/cjs/workspace/WorkspaceEditor.d.ts +2 -2
  258. package/lib/cjs/workspace/WorkspaceEditor.d.ts.map +1 -1
  259. package/lib/cjs/workspace/WorkspaceEditor.js +1 -1
  260. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -1
  261. package/package.json +13 -13
  262. package/lib/cjs/ServerBasedLocks.d.ts.map +0 -1
  263. package/lib/cjs/ServerBasedLocks.js.map +0 -1
  264. package/lib/cjs/internal/ImplementationProhibited.d.ts +0 -44
  265. package/lib/cjs/internal/ImplementationProhibited.d.ts.map +0 -1
  266. package/lib/cjs/internal/ImplementationProhibited.js +0 -51
  267. package/lib/cjs/internal/ImplementationProhibited.js.map +0 -1
@@ -16,14 +16,14 @@ class ECDbMap {
16
16
  this._cacheTables = new Map();
17
17
  }
18
18
  getAllDerivedClasses(classFullName) {
19
- const sql = `
20
- SELECT format('0x%x', ch.ClassId)
21
- FROM [ec_cache_ClassHierarchy] [ch]
22
- JOIN [ec_Class] [cs] ON [cs].[Id] = [ch].[BaseClassId]
23
- JOIN [ec_Schema] [sc] ON [sc].[Id] = [cs].[SchemaId]
24
- WHERE (([sc].[Alias] = :schemaNameOrAlias
25
- OR [sc].[Name] = :schemaNameOrAlias)
26
- AND ([cs].[Name] = :className))
19
+ const sql = `
20
+ SELECT format('0x%x', ch.ClassId)
21
+ FROM [ec_cache_ClassHierarchy] [ch]
22
+ JOIN [ec_Class] [cs] ON [cs].[Id] = [ch].[BaseClassId]
23
+ JOIN [ec_Schema] [sc] ON [sc].[Id] = [cs].[SchemaId]
24
+ WHERE (([sc].[Alias] = :schemaNameOrAlias
25
+ OR [sc].[Name] = :schemaNameOrAlias)
26
+ AND ([cs].[Name] = :className))
27
27
  `;
28
28
  return this.db.withPreparedSqliteStatement(sql, (stmt) => {
29
29
  const parts = classFullName.indexOf(".") !== -1 ? classFullName.split(".") : classFullName.split(":");
@@ -38,34 +38,39 @@ class ECDbMap {
38
38
  getTable(tableName) {
39
39
  if (this._cacheTables.has(tableName))
40
40
  return this._cacheTables.get(tableName);
41
- const sql = `
42
- SELECT
43
- JSON_OBJECT (
44
- 'id', FORMAT ('0x%x', [t].[id]),
45
- 'name', [t].[Name],
46
- 'type', (
47
- CASE
48
- [t].[type]
49
- WHEN 0 THEN 'Primary'
50
- WHEN 1 THEN 'Joined'
51
- WHEN 2 THEN 'Existing'
52
- WHEN 3 THEN 'Overflow'
53
- WHEN 4 THEN 'Virtual'
54
- END
55
- ),
56
- 'exclusiveRootClassId', FORMAT ('0x%x', [t].[ExclusiveRootClassId]),
57
- 'isClassIdVirtual', (
58
- SELECT
59
- [c].[IsVirtual]
60
- FROM
61
- [ec_Column] [c]
62
- WHERE
63
- [c].[Name] = 'ECClassId' AND [c].[TableId] = [t].[Id]
64
- )
65
- )
66
- FROM [ec_Table] [t]
67
- WHERE
68
- [t].[Name] = ?;
41
+ const sql = `
42
+ SELECT
43
+ JSON_OBJECT (
44
+ 'id', FORMAT ('0x%x', [t].[id]),
45
+ 'name', [t].[Name],
46
+ 'type', (
47
+ CASE
48
+ [t].[type]
49
+ WHEN 0 THEN 'Primary'
50
+ WHEN 1 THEN 'Joined'
51
+ WHEN 2 THEN 'Existing'
52
+ WHEN 3 THEN 'Overflow'
53
+ WHEN 4 THEN 'Virtual'
54
+ END
55
+ ),
56
+ 'exclusiveRootClassId', FORMAT ('0x%x',
57
+ COALESCE (
58
+ [t].[ExclusiveRootClassId], (
59
+ SELECT [parent].[ExclusiveRootClassId]
60
+ FROM [ec_Table] [parent]
61
+ WHERE [parent].[Id] = [t].[ParentTableId] AND [parent].[Type] = 1))),
62
+ 'isClassIdVirtual', (
63
+ SELECT
64
+ [c].[IsVirtual]
65
+ FROM
66
+ [ec_Column] [c]
67
+ WHERE
68
+ [c].[Name] = 'ECClassId' AND [c].[TableId] = [t].[Id]
69
+ )
70
+ )
71
+ FROM [ec_Table] [t]
72
+ WHERE
73
+ [t].[Name] = ?;
69
74
  `;
70
75
  return this.db.withPreparedSqliteStatement(sql, (stmt) => {
71
76
  stmt.bindString(1, tableName);
@@ -86,186 +91,186 @@ class ECDbMap {
86
91
  getClassMap(classId) {
87
92
  if (this._cachedClassMaps.has(classId))
88
93
  return this._cachedClassMaps.get(classId);
89
- const sql = `
90
- SELECT
91
- JSON_OBJECT(
92
- 'id', format('0x%x', cs.id),
93
- 'name', format('%s:%s', ss.Name, cs.Name),
94
- 'mapStrategy',
95
- (
96
- CASE cm.MapStrategy
97
- WHEN 0 THEN 'NotMapped'
98
- WHEN 1 THEN 'OwnTable'
99
- WHEN 2 THEN 'TablePerHierarchy'
100
- WHEN 3 THEN 'ExistingTable'
101
- WHEN 10 THEN 'ForeignKeyInTargetTable'
102
- WHEN 11 THEN 'ForeignKeyInSourceTable'
103
- END
104
- ),
105
- 'type',
106
- (
107
- CASE cs.Type
108
- WHEN 0 THEN 'Entity'
109
- WHEN 1 THEN 'Relationship'
110
- WHEN 2 THEN 'Struct'
111
- WHEN 3 THEN 'CustomAttribute'
112
- END
113
- ),
114
- 'modifier',
115
- (
116
- CASE cs.Modifier
117
- WHEN 0 THEN 'None'
118
- WHEN 1 THEN 'Abstract'
119
- WHEN 2 THEN 'Sealed'
120
- END
121
- ),
122
- 'properties',
123
- (
124
- SELECT
125
- JSON_GROUP_ARRAY(JSON(propJson))
126
- FROM
127
- (
128
- SELECT
129
- JSON_OBJECT(
130
- 'id', format('0x%x', pt.id),
131
- 'name', pt.Name,
132
- 'kind',
133
- (
134
- CASE pt.Kind
135
- WHEN 0 THEN 'Primitive'
136
- WHEN 1 THEN 'Struct'
137
- WHEN 2 THEN 'PrimitiveArray'
138
- WHEN 3 THEN 'StructArray'
139
- WHEN 4 THEN 'Navigation'
140
- END
141
- ),
142
- 'primitiveType',
143
- (
144
- CASE pt.PrimitiveType
145
- WHEN 0x101 THEN 'Binary'
146
- WHEN 0x201 THEN 'Boolean'
147
- WHEN 0x301 THEN 'DateTime'
148
- WHEN 0x401 THEN 'Double'
149
- WHEN 0x501 THEN 'Integer'
150
- WHEN 0x601 THEN 'Long'
151
- WHEN 0x701 THEN 'Point2d'
152
- WHEN 0x801 THEN 'Point3d'
153
- WHEN 0x901 THEN 'String'
154
- WHEN 0xa01 THEN 'IGeometry'
155
- END
156
- ),
157
- 'extendedTypeName', ExtendedTypeName,
158
- 'navigationRelationship',
159
- (
160
- SELECT
161
- JSON_OBJECT(
162
- 'classId', format('0x%x', nc.Id),
163
- 'classFullName', format('%s:%s', ns.Name, nc.Name)
164
- )
165
- FROM ec_Class nc
166
- JOIN ec_Schema ns ON ns.Id = nc.SchemaId
167
- WHERE
168
- nc.Id = pt.NavigationRelationshipClassId
169
- ),
170
- 'structClass',
171
- (
172
- SELECT
173
- JSON_OBJECT(
174
- 'classId', format('0x%x', nc.Id),
175
- 'classFullName', format('%s:%s', ns.Name, nc.Name)
176
- )
177
- FROM ec_Class nc
178
- JOIN ec_Schema ns ON ns.Id = nc.SchemaId
179
- WHERE
180
- nc.Id = pt.StructClassId
181
- ),
182
- 'dateTimeInfo', (
183
- SELECT
184
- JSON_OBJECT (
185
- 'dateTimeKind', (
186
- CASE
187
- WHEN [ca].[Instance] LIKE '%<DateTimeKind>Utc</DateTimeKind>%' COLLATE [NoCase] THEN 'Utc'
188
- WHEN [ca].[Instance] LIKE '%<DateTimeKind>Local</DateTimeKind>%' COLLATE [NoCase] THEN 'Local'
189
- ELSE 'Unspecified'
190
- END
191
- ),
192
- 'dateTimeComponent', (
193
- CASE
194
- WHEN [ca].[Instance] LIKE '%<DateTimeComponent>DateTime</DateTimeComponent>%' COLLATE [NoCase] THEN 'DateTime'
195
- WHEN [ca].[Instance] LIKE '%<DateTimeComponent>Date</DateTimeComponent>%' COLLATE [NoCase] THEN 'Date'
196
- WHEN [ca].[Instance] LIKE '%<DateTimeComponent>TimeOfDay</DateTimeComponent>%' COLLATE [NoCase] THEN 'TimeOfDay'
197
- ELSE 'DateTime'
198
- END
199
- )
200
- )
201
- FROM
202
- [ec_CustomAttribute] [ca]
203
- JOIN [ec_Class] [cl] ON [cl].[Id] = [ca].[ClassId]
204
- JOIN [ec_Schema] [sc] ON [sc].[Id] = [cl].[SchemaId]
205
- WHERE
206
- [ca].[ContainerType] = 992
207
- AND [cl].[Name] = 'DateTimeInfo'
208
- AND [sc].[Name] = 'CoreCustomAttributes'
209
- AND [ca].[ContainerId] = [pt].[Id]
210
- ),
211
- 'columns',
212
- (
213
- SELECT
214
- JSON_GROUP_ARRAY(JSON(columnJson))
215
- FROM
216
- (
217
- SELECT
218
- JSON_OBJECT(
219
- 'table', tb.Name,
220
- 'column', cc.Name,
221
- 'type',
222
- (
223
- CASE cc.Type
224
- WHEN 0 THEN 'Any'
225
- WHEN 1 THEN 'Boolean'
226
- WHEN 2 THEN 'Blob'
227
- WHEN 3 THEN 'Timestamp'
228
- WHEN 4 THEN 'Real'
229
- WHEN 5 THEN 'Integer'
230
- WHEN 6 THEN 'Text'
231
- END
232
- ),
233
- 'columnKind',
234
- (
235
- CASE cc.ColumnKind
236
- WHEN 0 THEN 'Default'
237
- WHEN 1 THEN 'Id'
238
- WHEN 2 THEN 'ClassId'
239
- WHEN 4 THEN 'SharedData'
240
- END
241
- ),
242
- 'accessString', pp0.AccessString,
243
- 'isVirtual', cc.IsVirtual OR tb.Type = 4
244
- ) columnJson
245
- FROM [ec_PropertyMap] [pm0]
246
- JOIN [ec_Column] [cc] ON [cc].[Id] = [pm0].[ColumnId]
247
- JOIN [ec_Table] [tb] ON [tb].[Id] = [cc].[TableId]
248
- JOIN [ec_PropertyPath] [pp0] ON [pp0].[Id] = [pm0].[PropertyPathId]
249
- WHERE
250
- [pp0].[RootPropertyId] = pt.Id AND pm0.ClassId = cs.Id
251
- )
252
- )
253
- ) propJson
254
- FROM [ec_PropertyMap] [pm]
255
- JOIN [ec_PropertyPath] [pp] ON [pp].[Id] = [pm].[PropertyPathId]
256
- JOIN [ec_Property] [pt] ON [pt].[Id] = [pp].[RootPropertyId]
257
- WHERE
258
- pm.ClassId = cs.Id
259
- GROUP BY
260
- pt.Id
261
- )
262
- )
263
- ) classDef
264
- FROM [ec_Class] [cs]
265
- JOIN [ec_ClassMap] [cm] ON [cm].[ClassId] = [cs].[Id]
266
- JOIN [ec_Schema] [ss] ON [ss].[Id] = [cs].[SchemaId]
267
- WHERE
268
- [cs].[Id] = ?
94
+ const sql = `
95
+ SELECT
96
+ JSON_OBJECT(
97
+ 'id', format('0x%x', cs.id),
98
+ 'name', format('%s:%s', ss.Name, cs.Name),
99
+ 'mapStrategy',
100
+ (
101
+ CASE cm.MapStrategy
102
+ WHEN 0 THEN 'NotMapped'
103
+ WHEN 1 THEN 'OwnTable'
104
+ WHEN 2 THEN 'TablePerHierarchy'
105
+ WHEN 3 THEN 'ExistingTable'
106
+ WHEN 10 THEN 'ForeignKeyInTargetTable'
107
+ WHEN 11 THEN 'ForeignKeyInSourceTable'
108
+ END
109
+ ),
110
+ 'type',
111
+ (
112
+ CASE cs.Type
113
+ WHEN 0 THEN 'Entity'
114
+ WHEN 1 THEN 'Relationship'
115
+ WHEN 2 THEN 'Struct'
116
+ WHEN 3 THEN 'CustomAttribute'
117
+ END
118
+ ),
119
+ 'modifier',
120
+ (
121
+ CASE cs.Modifier
122
+ WHEN 0 THEN 'None'
123
+ WHEN 1 THEN 'Abstract'
124
+ WHEN 2 THEN 'Sealed'
125
+ END
126
+ ),
127
+ 'properties',
128
+ (
129
+ SELECT
130
+ JSON_GROUP_ARRAY(JSON(propJson))
131
+ FROM
132
+ (
133
+ SELECT
134
+ JSON_OBJECT(
135
+ 'id', format('0x%x', pt.id),
136
+ 'name', pt.Name,
137
+ 'kind',
138
+ (
139
+ CASE pt.Kind
140
+ WHEN 0 THEN 'Primitive'
141
+ WHEN 1 THEN 'Struct'
142
+ WHEN 2 THEN 'PrimitiveArray'
143
+ WHEN 3 THEN 'StructArray'
144
+ WHEN 4 THEN 'Navigation'
145
+ END
146
+ ),
147
+ 'primitiveType',
148
+ (
149
+ CASE pt.PrimitiveType
150
+ WHEN 0x101 THEN 'Binary'
151
+ WHEN 0x201 THEN 'Boolean'
152
+ WHEN 0x301 THEN 'DateTime'
153
+ WHEN 0x401 THEN 'Double'
154
+ WHEN 0x501 THEN 'Integer'
155
+ WHEN 0x601 THEN 'Long'
156
+ WHEN 0x701 THEN 'Point2d'
157
+ WHEN 0x801 THEN 'Point3d'
158
+ WHEN 0x901 THEN 'String'
159
+ WHEN 0xa01 THEN 'IGeometry'
160
+ END
161
+ ),
162
+ 'extendedTypeName', ExtendedTypeName,
163
+ 'navigationRelationship',
164
+ (
165
+ SELECT
166
+ JSON_OBJECT(
167
+ 'classId', format('0x%x', nc.Id),
168
+ 'classFullName', format('%s:%s', ns.Name, nc.Name)
169
+ )
170
+ FROM ec_Class nc
171
+ JOIN ec_Schema ns ON ns.Id = nc.SchemaId
172
+ WHERE
173
+ nc.Id = pt.NavigationRelationshipClassId
174
+ ),
175
+ 'structClass',
176
+ (
177
+ SELECT
178
+ JSON_OBJECT(
179
+ 'classId', format('0x%x', nc.Id),
180
+ 'classFullName', format('%s:%s', ns.Name, nc.Name)
181
+ )
182
+ FROM ec_Class nc
183
+ JOIN ec_Schema ns ON ns.Id = nc.SchemaId
184
+ WHERE
185
+ nc.Id = pt.StructClassId
186
+ ),
187
+ 'dateTimeInfo', (
188
+ SELECT
189
+ JSON_OBJECT (
190
+ 'dateTimeKind', (
191
+ CASE
192
+ WHEN [ca].[Instance] LIKE '%<DateTimeKind>Utc</DateTimeKind>%' COLLATE [NoCase] THEN 'Utc'
193
+ WHEN [ca].[Instance] LIKE '%<DateTimeKind>Local</DateTimeKind>%' COLLATE [NoCase] THEN 'Local'
194
+ ELSE 'Unspecified'
195
+ END
196
+ ),
197
+ 'dateTimeComponent', (
198
+ CASE
199
+ WHEN [ca].[Instance] LIKE '%<DateTimeComponent>DateTime</DateTimeComponent>%' COLLATE [NoCase] THEN 'DateTime'
200
+ WHEN [ca].[Instance] LIKE '%<DateTimeComponent>Date</DateTimeComponent>%' COLLATE [NoCase] THEN 'Date'
201
+ WHEN [ca].[Instance] LIKE '%<DateTimeComponent>TimeOfDay</DateTimeComponent>%' COLLATE [NoCase] THEN 'TimeOfDay'
202
+ ELSE 'DateTime'
203
+ END
204
+ )
205
+ )
206
+ FROM
207
+ [ec_CustomAttribute] [ca]
208
+ JOIN [ec_Class] [cl] ON [cl].[Id] = [ca].[ClassId]
209
+ JOIN [ec_Schema] [sc] ON [sc].[Id] = [cl].[SchemaId]
210
+ WHERE
211
+ [ca].[ContainerType] = 992
212
+ AND [cl].[Name] = 'DateTimeInfo'
213
+ AND [sc].[Name] = 'CoreCustomAttributes'
214
+ AND [ca].[ContainerId] = [pt].[Id]
215
+ ),
216
+ 'columns',
217
+ (
218
+ SELECT
219
+ JSON_GROUP_ARRAY(JSON(columnJson))
220
+ FROM
221
+ (
222
+ SELECT
223
+ JSON_OBJECT(
224
+ 'table', tb.Name,
225
+ 'column', cc.Name,
226
+ 'type',
227
+ (
228
+ CASE cc.Type
229
+ WHEN 0 THEN 'Any'
230
+ WHEN 1 THEN 'Boolean'
231
+ WHEN 2 THEN 'Blob'
232
+ WHEN 3 THEN 'Timestamp'
233
+ WHEN 4 THEN 'Real'
234
+ WHEN 5 THEN 'Integer'
235
+ WHEN 6 THEN 'Text'
236
+ END
237
+ ),
238
+ 'columnKind',
239
+ (
240
+ CASE cc.ColumnKind
241
+ WHEN 0 THEN 'Default'
242
+ WHEN 1 THEN 'Id'
243
+ WHEN 2 THEN 'ClassId'
244
+ WHEN 4 THEN 'SharedData'
245
+ END
246
+ ),
247
+ 'accessString', pp0.AccessString,
248
+ 'isVirtual', cc.IsVirtual OR tb.Type = 4
249
+ ) columnJson
250
+ FROM [ec_PropertyMap] [pm0]
251
+ JOIN [ec_Column] [cc] ON [cc].[Id] = [pm0].[ColumnId]
252
+ JOIN [ec_Table] [tb] ON [tb].[Id] = [cc].[TableId]
253
+ JOIN [ec_PropertyPath] [pp0] ON [pp0].[Id] = [pm0].[PropertyPathId]
254
+ WHERE
255
+ [pp0].[RootPropertyId] = pt.Id AND pm0.ClassId = cs.Id
256
+ )
257
+ )
258
+ ) propJson
259
+ FROM [ec_PropertyMap] [pm]
260
+ JOIN [ec_PropertyPath] [pp] ON [pp].[Id] = [pm].[PropertyPathId]
261
+ JOIN [ec_Property] [pt] ON [pt].[Id] = [pp].[RootPropertyId]
262
+ WHERE
263
+ pm.ClassId = cs.Id
264
+ GROUP BY
265
+ pt.Id
266
+ )
267
+ )
268
+ ) classDef
269
+ FROM [ec_Class] [cs]
270
+ JOIN [ec_ClassMap] [cm] ON [cm].[ClassId] = [cs].[Id]
271
+ JOIN [ec_Schema] [ss] ON [ss].[Id] = [cs].[SchemaId]
272
+ WHERE
273
+ [cs].[Id] = ?
269
274
  `;
270
275
  return this.db.withPreparedSqliteStatement(sql, (stmt) => {
271
276
  stmt.bindId(1, classId);
@@ -333,27 +338,27 @@ class PartialECChangeUnifier {
333
338
  * @returns return root class id
334
339
  */
335
340
  static getRootClassId(classId, db) {
336
- const sql = `
337
- WITH
338
- [base_class]([classId], [baseClassId], [Level]) AS(
339
- SELECT [ch].[ClassId], [ch].[BaseClassId], 0
340
- FROM [ec_ClassHasBaseClasses] [ch] WHERE [ch].[ClassId] = ?
341
- UNION ALL
342
- SELECT [ch].[ClassId], [ch].[BaseClassId], [Level] + 1
343
- FROM [ec_ClassHasBaseClasses] [ch], [base_class] [bc] WHERE [bc].[BaseClassId] = [ch].[ClassId]
344
-
345
- )
346
- SELECT FORMAT('0x%x', [bc].[BaseClassId]) rootClass
347
- FROM [base_class] [bc]
348
- WHERE [bc].[ClassId] <> [bc].[BaseClassId]
349
- AND [bc].[BaseClassId] NOT IN (SELECT [ca].[ContainerId]
350
- FROM [ec_CustomAttribute] [ca]
351
- WHERE [ca].[ContainerType] = 30
352
- AND [ca].[ClassId] IN (SELECT [cc].[Id]
353
- FROM [ec_Class] [cc]
354
- JOIN [ec_Schema] [ss] ON [ss].[Id] = [cc].[SchemaId]
355
- WHERE [cc].[Name] = 'IsMixIn'
356
- AND [ss].[Name] = 'CoreCustomAttributes'))
341
+ const sql = `
342
+ WITH
343
+ [base_class]([classId], [baseClassId], [Level]) AS(
344
+ SELECT [ch].[ClassId], [ch].[BaseClassId], 0
345
+ FROM [ec_ClassHasBaseClasses] [ch] WHERE [ch].[ClassId] = ?
346
+ UNION ALL
347
+ SELECT [ch].[ClassId], [ch].[BaseClassId], [Level] + 1
348
+ FROM [ec_ClassHasBaseClasses] [ch], [base_class] [bc] WHERE [bc].[BaseClassId] = [ch].[ClassId]
349
+
350
+ )
351
+ SELECT FORMAT('0x%x', [bc].[BaseClassId]) rootClass
352
+ FROM [base_class] [bc]
353
+ WHERE [bc].[ClassId] <> [bc].[BaseClassId]
354
+ AND [bc].[BaseClassId] NOT IN (SELECT [ca].[ContainerId]
355
+ FROM [ec_CustomAttribute] [ca]
356
+ WHERE [ca].[ContainerType] = 30
357
+ AND [ca].[ClassId] IN (SELECT [cc].[Id]
358
+ FROM [ec_Class] [cc]
359
+ JOIN [ec_Schema] [ss] ON [ss].[Id] = [cc].[SchemaId]
360
+ WHERE [cc].[Name] = 'IsMixIn'
361
+ AND [ss].[Name] = 'CoreCustomAttributes'))
357
362
  ORDER BY [Level] DESC`;
358
363
  return db.withSqliteStatement(sql, (stmt) => {
359
364
  stmt.bindId(1, classId);