@itwin/core-backend 4.8.0-dev.2 → 4.8.0-dev.21

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 (273) hide show
  1. package/CHANGELOG.md +31 -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.d.ts +3 -1
  7. package/lib/cjs/BackendLoggerCategory.d.ts.map +1 -1
  8. package/lib/cjs/BackendLoggerCategory.js +2 -0
  9. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  10. package/lib/cjs/BisCoreSchema.js.map +1 -1
  11. package/lib/cjs/BlobContainerService.d.ts +3 -3
  12. package/lib/cjs/BlobContainerService.d.ts.map +1 -1
  13. package/lib/cjs/BlobContainerService.js.map +1 -1
  14. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  15. package/lib/cjs/BriefcaseManager.js +4 -2
  16. package/lib/cjs/BriefcaseManager.js.map +1 -1
  17. package/lib/cjs/Category.d.ts +0 -6
  18. package/lib/cjs/Category.d.ts.map +1 -1
  19. package/lib/cjs/Category.js +0 -6
  20. package/lib/cjs/Category.js.map +1 -1
  21. package/lib/cjs/ChangeSummaryManager.d.ts.map +1 -1
  22. package/lib/cjs/ChangeSummaryManager.js +6 -5
  23. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  24. package/lib/cjs/ChangedElementsDb.d.ts +1 -0
  25. package/lib/cjs/ChangedElementsDb.d.ts.map +1 -1
  26. package/lib/cjs/ChangedElementsDb.js +3 -2
  27. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  28. package/lib/cjs/ChangedElementsManager.js.map +1 -1
  29. package/lib/cjs/ChangesetECAdaptor.js +237 -237
  30. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  31. package/lib/cjs/ChannelControl.d.ts +4 -26
  32. package/lib/cjs/ChannelControl.d.ts.map +1 -1
  33. package/lib/cjs/ChannelControl.js +2 -101
  34. package/lib/cjs/ChannelControl.js.map +1 -1
  35. package/lib/cjs/CheckpointManager.d.ts.map +1 -1
  36. package/lib/cjs/CheckpointManager.js +2 -1
  37. package/lib/cjs/CheckpointManager.js.map +1 -1
  38. package/lib/cjs/ClassRegistry.js +5 -5
  39. package/lib/cjs/ClassRegistry.js.map +1 -1
  40. package/lib/cjs/CloudSqlite.d.ts +49 -24
  41. package/lib/cjs/CloudSqlite.d.ts.map +1 -1
  42. package/lib/cjs/CloudSqlite.js +66 -7
  43. package/lib/cjs/CloudSqlite.js.map +1 -1
  44. package/lib/cjs/CodeService.d.ts +4 -4
  45. package/lib/cjs/CodeService.d.ts.map +1 -1
  46. package/lib/cjs/CodeService.js.map +1 -1
  47. package/lib/cjs/CodeSpecs.js.map +1 -1
  48. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  49. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  50. package/lib/cjs/DevTools.d.ts.map +1 -1
  51. package/lib/cjs/DevTools.js +2 -1
  52. package/lib/cjs/DevTools.js.map +1 -1
  53. package/lib/cjs/DisplayStyle.d.ts +0 -3
  54. package/lib/cjs/DisplayStyle.d.ts.map +1 -1
  55. package/lib/cjs/DisplayStyle.js +0 -3
  56. package/lib/cjs/DisplayStyle.js.map +1 -1
  57. package/lib/cjs/ECDb.js +2 -2
  58. package/lib/cjs/ECDb.js.map +1 -1
  59. package/lib/cjs/ECSchemaXmlContext.js +2 -2
  60. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  61. package/lib/cjs/ECSqlStatement.d.ts +6 -3
  62. package/lib/cjs/ECSqlStatement.d.ts.map +1 -1
  63. package/lib/cjs/ECSqlStatement.js +3 -3
  64. package/lib/cjs/ECSqlStatement.js.map +1 -1
  65. package/lib/cjs/Element.d.ts +3 -60
  66. package/lib/cjs/Element.d.ts.map +1 -1
  67. package/lib/cjs/Element.js +8 -64
  68. package/lib/cjs/Element.js.map +1 -1
  69. package/lib/cjs/ElementAspect.d.ts +0 -5
  70. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  71. package/lib/cjs/ElementAspect.js +4 -8
  72. package/lib/cjs/ElementAspect.js.map +1 -1
  73. package/lib/cjs/ElementGraphics.js.map +1 -1
  74. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  75. package/lib/cjs/Entity.js.map +1 -1
  76. package/lib/cjs/EntityReferences.js.map +1 -1
  77. package/lib/cjs/ExportGraphics.js.map +1 -1
  78. package/lib/cjs/ExternalSource.js.map +1 -1
  79. package/lib/cjs/GeoCoordConfig.d.ts +10 -0
  80. package/lib/cjs/GeoCoordConfig.d.ts.map +1 -1
  81. package/lib/cjs/GeoCoordConfig.js +22 -24
  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.js +47 -47
  86. package/lib/cjs/GeometrySummary.js.map +1 -1
  87. package/lib/cjs/HubMock.js.map +1 -1
  88. package/lib/cjs/IModelCloneContext.js.map +1 -1
  89. package/lib/cjs/IModelDb.d.ts +27 -97
  90. package/lib/cjs/IModelDb.d.ts.map +1 -1
  91. package/lib/cjs/IModelDb.js +139 -63
  92. package/lib/cjs/IModelDb.js.map +1 -1
  93. package/lib/cjs/IModelElementCloneContext.js +2 -2
  94. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  95. package/lib/cjs/IModelHost.d.ts +13 -4
  96. package/lib/cjs/IModelHost.d.ts.map +1 -1
  97. package/lib/cjs/IModelHost.js +39 -32
  98. package/lib/cjs/IModelHost.js.map +1 -1
  99. package/lib/cjs/IModelJsFs.js.map +1 -1
  100. package/lib/cjs/IpcHost.d.ts.map +1 -1
  101. package/lib/cjs/IpcHost.js +2 -1
  102. package/lib/cjs/IpcHost.js.map +1 -1
  103. package/lib/cjs/LineStyle.js.map +1 -1
  104. package/lib/cjs/LocalHub.d.ts +2 -2
  105. package/lib/cjs/LocalHub.d.ts.map +1 -1
  106. package/lib/cjs/LocalHub.js +18 -18
  107. package/lib/cjs/LocalHub.js.map +1 -1
  108. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  109. package/lib/cjs/LockControl.d.ts +66 -0
  110. package/lib/cjs/LockControl.d.ts.map +1 -0
  111. package/lib/cjs/LockControl.js +11 -0
  112. package/lib/cjs/LockControl.js.map +1 -0
  113. package/lib/cjs/Material.d.ts +2 -5
  114. package/lib/cjs/Material.d.ts.map +1 -1
  115. package/lib/cjs/Material.js +6 -4
  116. package/lib/cjs/Material.js.map +1 -1
  117. package/lib/cjs/Model.d.ts +0 -22
  118. package/lib/cjs/Model.d.ts.map +1 -1
  119. package/lib/cjs/Model.js +4 -25
  120. package/lib/cjs/Model.js.map +1 -1
  121. package/lib/cjs/NativeAppStorage.js.map +1 -1
  122. package/lib/cjs/NativeHost.js.map +1 -1
  123. package/lib/cjs/NavigationRelationship.js.map +1 -1
  124. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  125. package/lib/cjs/PropertyStore.d.ts +17 -7
  126. package/lib/cjs/PropertyStore.d.ts.map +1 -1
  127. package/lib/cjs/PropertyStore.js +11 -5
  128. package/lib/cjs/PropertyStore.js.map +1 -1
  129. package/lib/cjs/Relationship.d.ts +0 -12
  130. package/lib/cjs/Relationship.d.ts.map +1 -1
  131. package/lib/cjs/Relationship.js +0 -12
  132. package/lib/cjs/Relationship.js.map +1 -1
  133. package/lib/cjs/RpcBackend.js.map +1 -1
  134. package/lib/cjs/SQLiteDb.d.ts +2 -3
  135. package/lib/cjs/SQLiteDb.d.ts.map +1 -1
  136. package/lib/cjs/SQLiteDb.js +5 -6
  137. package/lib/cjs/SQLiteDb.js.map +1 -1
  138. package/lib/cjs/Schema.js.map +1 -1
  139. package/lib/cjs/SchemaSync.d.ts +1 -1
  140. package/lib/cjs/SchemaSync.d.ts.map +1 -1
  141. package/lib/cjs/SchemaSync.js +2 -2
  142. package/lib/cjs/SchemaSync.js.map +1 -1
  143. package/lib/cjs/SchemaUtils.js +3 -3
  144. package/lib/cjs/SchemaUtils.js.map +1 -1
  145. package/lib/cjs/SqliteChangesetReader.d.ts.map +1 -1
  146. package/lib/cjs/SqliteChangesetReader.js +2 -2
  147. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  148. package/lib/cjs/SqliteStatement.js +2 -2
  149. package/lib/cjs/SqliteStatement.js.map +1 -1
  150. package/lib/cjs/TextAnnotationElement.js.map +1 -1
  151. package/lib/cjs/TextAnnotationGeometry.d.ts +5 -1
  152. package/lib/cjs/TextAnnotationGeometry.d.ts.map +1 -1
  153. package/lib/cjs/TextAnnotationGeometry.js +11 -8
  154. package/lib/cjs/TextAnnotationGeometry.js.map +1 -1
  155. package/lib/cjs/TextAnnotationLayout.d.ts +21 -13
  156. package/lib/cjs/TextAnnotationLayout.d.ts.map +1 -1
  157. package/lib/cjs/TextAnnotationLayout.js +134 -92
  158. package/lib/cjs/TextAnnotationLayout.js.map +1 -1
  159. package/lib/cjs/Texture.js.map +1 -1
  160. package/lib/cjs/TileStorage.js.map +1 -1
  161. package/lib/cjs/TxnManager.d.ts +2 -1
  162. package/lib/cjs/TxnManager.d.ts.map +1 -1
  163. package/lib/cjs/TxnManager.js +2 -1
  164. package/lib/cjs/TxnManager.js.map +1 -1
  165. package/lib/cjs/ViewDefinition.d.ts +1 -18
  166. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  167. package/lib/cjs/ViewDefinition.js +1 -18
  168. package/lib/cjs/ViewDefinition.js.map +1 -1
  169. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  170. package/lib/cjs/ViewStore.d.ts +16 -2
  171. package/lib/cjs/ViewStore.d.ts.map +1 -1
  172. package/lib/cjs/ViewStore.js +14 -1
  173. package/lib/cjs/ViewStore.js.map +1 -1
  174. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  175. package/lib/cjs/assets/Settings/Schemas/Base.Schema.json +33 -0
  176. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +27 -31
  177. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +94 -52
  178. package/lib/cjs/assets/Settings/backend.setting.json5 +21 -132
  179. package/lib/cjs/core-backend.d.ts +3 -2
  180. package/lib/cjs/core-backend.d.ts.map +1 -1
  181. package/lib/cjs/core-backend.js +4 -6
  182. package/lib/cjs/core-backend.js.map +1 -1
  183. package/lib/cjs/domains/FunctionalElements.d.ts +0 -10
  184. package/lib/cjs/domains/FunctionalElements.d.ts.map +1 -1
  185. package/lib/cjs/domains/FunctionalElements.js +0 -10
  186. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  187. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  188. package/lib/cjs/domains/GenericElements.d.ts +0 -18
  189. package/lib/cjs/domains/GenericElements.d.ts.map +1 -1
  190. package/lib/cjs/domains/GenericElements.js +0 -18
  191. package/lib/cjs/domains/GenericElements.js.map +1 -1
  192. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  193. package/lib/cjs/internal/ChangesetConflictArgs.d.ts +24 -0
  194. package/lib/cjs/internal/ChangesetConflictArgs.d.ts.map +1 -0
  195. package/lib/cjs/internal/ChangesetConflictArgs.js +7 -0
  196. package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -0
  197. package/lib/cjs/internal/ChannelAdmin.d.ts +34 -0
  198. package/lib/cjs/internal/ChannelAdmin.d.ts.map +1 -0
  199. package/lib/cjs/internal/ChannelAdmin.js +117 -0
  200. package/lib/cjs/internal/ChannelAdmin.js.map +1 -0
  201. package/lib/cjs/internal/NativePlatform.d.ts +15 -0
  202. package/lib/cjs/internal/NativePlatform.d.ts.map +1 -0
  203. package/lib/cjs/internal/NativePlatform.js +49 -0
  204. package/lib/cjs/internal/NativePlatform.js.map +1 -0
  205. package/lib/cjs/internal/NoLocks.d.ts +6 -0
  206. package/lib/cjs/internal/NoLocks.d.ts.map +1 -0
  207. package/lib/cjs/internal/NoLocks.js +30 -0
  208. package/lib/cjs/internal/NoLocks.js.map +1 -0
  209. package/lib/cjs/{ServerBasedLocks.d.ts → internal/ServerBasedLocks.d.ts} +10 -17
  210. package/lib/cjs/internal/ServerBasedLocks.d.ts.map +1 -0
  211. package/lib/cjs/{ServerBasedLocks.js → internal/ServerBasedLocks.js} +22 -17
  212. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -0
  213. package/lib/cjs/internal/Symbols.d.ts +9 -0
  214. package/lib/cjs/internal/Symbols.d.ts.map +1 -0
  215. package/lib/cjs/internal/Symbols.js +19 -0
  216. package/lib/cjs/internal/Symbols.js.map +1 -0
  217. package/lib/cjs/internal/cross-package.d.ts +3 -0
  218. package/lib/cjs/internal/cross-package.d.ts.map +1 -0
  219. package/lib/cjs/internal/cross-package.js +14 -0
  220. package/lib/cjs/internal/cross-package.js.map +1 -0
  221. package/lib/cjs/internal/workspace/SettingsImpl.d.ts +43 -0
  222. package/lib/cjs/internal/workspace/SettingsImpl.d.ts.map +1 -0
  223. package/lib/cjs/internal/workspace/SettingsImpl.js +161 -0
  224. package/lib/cjs/internal/workspace/SettingsImpl.js.map +1 -0
  225. package/lib/cjs/internal/workspace/SettingsSchemasImpl.d.ts +6 -0
  226. package/lib/cjs/internal/workspace/SettingsSchemasImpl.d.ts.map +1 -0
  227. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js +276 -0
  228. package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -0
  229. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts +41 -0
  230. package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts.map +1 -0
  231. package/lib/cjs/internal/workspace/WorkspaceImpl.js +696 -0
  232. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -0
  233. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.d.ts +10 -0
  234. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.d.ts.map +1 -0
  235. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js +41 -0
  236. package/lib/cjs/internal/workspace/WorkspaceSqliteDb.js.map +1 -0
  237. package/lib/cjs/rpc/multipart.js.map +1 -1
  238. package/lib/cjs/rpc/tracing.js +1 -1
  239. package/lib/cjs/rpc/tracing.js.map +1 -1
  240. package/lib/cjs/rpc/web/logging.js.map +1 -1
  241. package/lib/cjs/rpc/web/request.js.map +1 -1
  242. package/lib/cjs/rpc/web/response.js.map +1 -1
  243. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  244. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +1 -0
  245. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts.map +1 -1
  246. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +5 -2
  247. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  248. package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts.map +1 -1
  249. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js +2 -1
  250. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  251. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  252. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  253. package/lib/cjs/rpc-impl/WipRpcImpl.js.map +1 -1
  254. package/lib/cjs/workspace/Settings.d.ts +167 -138
  255. package/lib/cjs/workspace/Settings.d.ts.map +1 -1
  256. package/lib/cjs/workspace/Settings.js +68 -138
  257. package/lib/cjs/workspace/Settings.js.map +1 -1
  258. package/lib/cjs/workspace/SettingsSchemas.d.ts +112 -48
  259. package/lib/cjs/workspace/SettingsSchemas.d.ts.map +1 -1
  260. package/lib/cjs/workspace/SettingsSchemas.js +1 -172
  261. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  262. package/lib/cjs/workspace/Workspace.d.ts +411 -277
  263. package/lib/cjs/workspace/Workspace.d.ts.map +1 -1
  264. package/lib/cjs/workspace/Workspace.js +76 -457
  265. package/lib/cjs/workspace/Workspace.js.map +1 -1
  266. package/lib/cjs/workspace/WorkspaceEditor.d.ts +245 -0
  267. package/lib/cjs/workspace/WorkspaceEditor.d.ts.map +1 -0
  268. package/lib/cjs/workspace/WorkspaceEditor.js +34 -0
  269. package/lib/cjs/workspace/WorkspaceEditor.js.map +1 -0
  270. package/package.json +16 -15
  271. package/lib/cjs/ServerBasedLocks.d.ts.map +0 -1
  272. package/lib/cjs/ServerBasedLocks.js.map +0 -1
  273. package/lib/cjs/assets/Settings/Schemas/Cloud.Schema.json +0 -45
@@ -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,34 @@ 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', [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] = ?;
69
69
  `;
70
70
  return this.db.withPreparedSqliteStatement(sql, (stmt) => {
71
71
  stmt.bindString(1, tableName);
@@ -86,186 +86,186 @@ class ECDbMap {
86
86
  getClassMap(classId) {
87
87
  if (this._cachedClassMaps.has(classId))
88
88
  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] = ?
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] = ?
269
269
  `;
270
270
  return this.db.withPreparedSqliteStatement(sql, (stmt) => {
271
271
  stmt.bindId(1, classId);
@@ -333,27 +333,27 @@ class PartialECChangeUnifier {
333
333
  * @returns return root class id
334
334
  */
335
335
  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'))
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'))
357
357
  ORDER BY [Level] DESC`;
358
358
  return db.withSqliteStatement(sql, (stmt) => {
359
359
  stmt.bindId(1, classId);