@itwin/core-backend 3.6.0-dev.8 → 3.6.0

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/LICENSE.md +1 -1
  3. package/lib/cjs/AliCloudStorageService.d.ts +23 -23
  4. package/lib/cjs/AliCloudStorageService.js +71 -71
  5. package/lib/cjs/AliCloudStorageService.js.map +1 -1
  6. package/lib/cjs/BackendHubAccess.d.ts +224 -224
  7. package/lib/cjs/BackendHubAccess.js +41 -41
  8. package/lib/cjs/BackendHubAccess.js.map +1 -1
  9. package/lib/cjs/BackendLoggerCategory.d.ts +91 -91
  10. package/lib/cjs/BackendLoggerCategory.js +99 -99
  11. package/lib/cjs/BackendLoggerCategory.js.map +1 -1
  12. package/lib/cjs/BisCoreSchema.d.ts +21 -21
  13. package/lib/cjs/BisCoreSchema.js +60 -60
  14. package/lib/cjs/BisCoreSchema.js.map +1 -1
  15. package/lib/cjs/BriefcaseManager.d.ts +170 -170
  16. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  17. package/lib/cjs/BriefcaseManager.js +414 -413
  18. package/lib/cjs/BriefcaseManager.js.map +1 -1
  19. package/lib/cjs/Category.d.ts +153 -153
  20. package/lib/cjs/Category.js +243 -243
  21. package/lib/cjs/Category.js.map +1 -1
  22. package/lib/cjs/ChangeSummaryManager.d.ts +187 -187
  23. package/lib/cjs/ChangeSummaryManager.js +447 -447
  24. package/lib/cjs/ChangeSummaryManager.js.map +1 -1
  25. package/lib/cjs/ChangedElementsDb.d.ts +99 -99
  26. package/lib/cjs/ChangedElementsDb.js +165 -165
  27. package/lib/cjs/ChangedElementsDb.js.map +1 -1
  28. package/lib/cjs/ChangedElementsManager.d.ts +39 -39
  29. package/lib/cjs/ChangedElementsManager.js +88 -88
  30. package/lib/cjs/ChangedElementsManager.js.map +1 -1
  31. package/lib/cjs/CheckpointManager.d.ts +121 -120
  32. package/lib/cjs/CheckpointManager.d.ts.map +1 -1
  33. package/lib/cjs/CheckpointManager.js +349 -343
  34. package/lib/cjs/CheckpointManager.js.map +1 -1
  35. package/lib/cjs/ClassRegistry.d.ts +79 -79
  36. package/lib/cjs/ClassRegistry.d.ts.map +1 -1
  37. package/lib/cjs/ClassRegistry.js +250 -249
  38. package/lib/cjs/ClassRegistry.js.map +1 -1
  39. package/lib/cjs/CloudSqlite.d.ts +350 -350
  40. package/lib/cjs/CloudSqlite.d.ts.map +1 -1
  41. package/lib/cjs/CloudSqlite.js +153 -152
  42. package/lib/cjs/CloudSqlite.js.map +1 -1
  43. package/lib/cjs/CloudStorageBackend.d.ts +58 -58
  44. package/lib/cjs/CloudStorageBackend.js +173 -173
  45. package/lib/cjs/CloudStorageBackend.js.map +1 -1
  46. package/lib/cjs/CodeService.d.ts +396 -396
  47. package/lib/cjs/CodeService.js +63 -63
  48. package/lib/cjs/CodeService.js.map +1 -1
  49. package/lib/cjs/CodeSpecs.d.ts +55 -50
  50. package/lib/cjs/CodeSpecs.d.ts.map +1 -1
  51. package/lib/cjs/CodeSpecs.js +124 -112
  52. package/lib/cjs/CodeSpecs.js.map +1 -1
  53. package/lib/cjs/ConcurrentQuery.d.ts +13 -13
  54. package/lib/cjs/ConcurrentQuery.js +36 -36
  55. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  56. package/lib/cjs/CustomViewState3dCreator.d.ts +21 -21
  57. package/lib/cjs/CustomViewState3dCreator.js +81 -81
  58. package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
  59. package/lib/cjs/DevTools.d.ts +71 -71
  60. package/lib/cjs/DevTools.js +154 -154
  61. package/lib/cjs/DevTools.js.map +1 -1
  62. package/lib/cjs/DisplayStyle.d.ts +106 -106
  63. package/lib/cjs/DisplayStyle.js +256 -256
  64. package/lib/cjs/DisplayStyle.js.map +1 -1
  65. package/lib/cjs/ECDb.d.ts +191 -191
  66. package/lib/cjs/ECDb.js +350 -350
  67. package/lib/cjs/ECDb.js.map +1 -1
  68. package/lib/cjs/ECSchemaXmlContext.d.ts +18 -18
  69. package/lib/cjs/ECSchemaXmlContext.js +41 -41
  70. package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
  71. package/lib/cjs/ECSqlStatement.d.ts +473 -466
  72. package/lib/cjs/ECSqlStatement.d.ts.map +1 -1
  73. package/lib/cjs/ECSqlStatement.js +791 -791
  74. package/lib/cjs/ECSqlStatement.js.map +1 -1
  75. package/lib/cjs/Element.d.ts +1109 -1102
  76. package/lib/cjs/Element.d.ts.map +1 -1
  77. package/lib/cjs/Element.js +1427 -1416
  78. package/lib/cjs/Element.js.map +1 -1
  79. package/lib/cjs/ElementAspect.d.ts +179 -176
  80. package/lib/cjs/ElementAspect.d.ts.map +1 -1
  81. package/lib/cjs/ElementAspect.js +211 -211
  82. package/lib/cjs/ElementAspect.js.map +1 -1
  83. package/lib/cjs/ElementGraphics.d.ts +9 -9
  84. package/lib/cjs/ElementGraphics.js +41 -41
  85. package/lib/cjs/ElementGraphics.js.map +1 -1
  86. package/lib/cjs/ElementTreeWalker.d.ts +162 -162
  87. package/lib/cjs/ElementTreeWalker.js +409 -409
  88. package/lib/cjs/ElementTreeWalker.js.map +1 -1
  89. package/lib/cjs/Entity.d.ts +106 -106
  90. package/lib/cjs/Entity.js +134 -134
  91. package/lib/cjs/Entity.js.map +1 -1
  92. package/lib/cjs/EntityReferences.d.ts +49 -49
  93. package/lib/cjs/EntityReferences.js +95 -95
  94. package/lib/cjs/EntityReferences.js.map +1 -1
  95. package/lib/cjs/ExportGraphics.d.ts +317 -317
  96. package/lib/cjs/ExportGraphics.js +208 -208
  97. package/lib/cjs/ExportGraphics.js.map +1 -1
  98. package/lib/cjs/ExternalSource.d.ts +96 -96
  99. package/lib/cjs/ExternalSource.js +131 -131
  100. package/lib/cjs/ExternalSource.js.map +1 -1
  101. package/lib/cjs/GeoCoordConfig.d.ts +19 -19
  102. package/lib/cjs/GeoCoordConfig.js +85 -85
  103. package/lib/cjs/GeoCoordConfig.js.map +1 -1
  104. package/lib/cjs/GeometrySummary.d.ts +4 -4
  105. package/lib/cjs/GeometrySummary.js +380 -380
  106. package/lib/cjs/GeometrySummary.js.map +1 -1
  107. package/lib/cjs/HubMock.d.ts +94 -94
  108. package/lib/cjs/HubMock.js +222 -222
  109. package/lib/cjs/HubMock.js.map +1 -1
  110. package/lib/cjs/IModelCloneContext.d.ts +8 -8
  111. package/lib/cjs/IModelCloneContext.d.ts.map +1 -1
  112. package/lib/cjs/IModelCloneContext.js +15 -15
  113. package/lib/cjs/IModelCloneContext.js.map +1 -1
  114. package/lib/cjs/IModelDb.d.ts +1210 -1183
  115. package/lib/cjs/IModelDb.d.ts.map +1 -1
  116. package/lib/cjs/IModelDb.js +2386 -2374
  117. package/lib/cjs/IModelDb.js.map +1 -1
  118. package/lib/cjs/IModelElementCloneContext.d.ts +89 -89
  119. package/lib/cjs/IModelElementCloneContext.js +159 -159
  120. package/lib/cjs/IModelElementCloneContext.js.map +1 -1
  121. package/lib/cjs/IModelHost.d.ts +369 -370
  122. package/lib/cjs/IModelHost.d.ts.map +1 -1
  123. package/lib/cjs/IModelHost.js +496 -496
  124. package/lib/cjs/IModelHost.js.map +1 -1
  125. package/lib/cjs/IModelJsFs.d.ts +62 -62
  126. package/lib/cjs/IModelJsFs.js +140 -140
  127. package/lib/cjs/IModelJsFs.js.map +1 -1
  128. package/lib/cjs/IpcHost.d.ts +104 -104
  129. package/lib/cjs/IpcHost.js +278 -278
  130. package/lib/cjs/IpcHost.js.map +1 -1
  131. package/lib/cjs/LineStyle.d.ts +311 -311
  132. package/lib/cjs/LineStyle.js +295 -295
  133. package/lib/cjs/LineStyle.js.map +1 -1
  134. package/lib/cjs/LocalHub.d.ts +162 -162
  135. package/lib/cjs/LocalHub.d.ts.map +1 -1
  136. package/lib/cjs/LocalHub.js +585 -587
  137. package/lib/cjs/LocalHub.js.map +1 -1
  138. package/lib/cjs/LocalhostIpcHost.d.ts +20 -20
  139. package/lib/cjs/LocalhostIpcHost.js +81 -81
  140. package/lib/cjs/LocalhostIpcHost.js.map +1 -1
  141. package/lib/cjs/Material.d.ts +131 -103
  142. package/lib/cjs/Material.d.ts.map +1 -1
  143. package/lib/cjs/Material.js +181 -147
  144. package/lib/cjs/Material.js.map +1 -1
  145. package/lib/cjs/Model.d.ts +392 -392
  146. package/lib/cjs/Model.js +485 -485
  147. package/lib/cjs/Model.js.map +1 -1
  148. package/lib/cjs/NativeAppStorage.d.ts +51 -51
  149. package/lib/cjs/NativeAppStorage.js +202 -202
  150. package/lib/cjs/NativeAppStorage.js.map +1 -1
  151. package/lib/cjs/NativeHost.d.ts +52 -52
  152. package/lib/cjs/NativeHost.js +163 -163
  153. package/lib/cjs/NativeHost.js.map +1 -1
  154. package/lib/cjs/NavigationRelationship.d.ts +156 -156
  155. package/lib/cjs/NavigationRelationship.js +225 -225
  156. package/lib/cjs/NavigationRelationship.js.map +1 -1
  157. package/lib/cjs/PromiseMemoizer.d.ts +51 -51
  158. package/lib/cjs/PromiseMemoizer.js +101 -101
  159. package/lib/cjs/PromiseMemoizer.js.map +1 -1
  160. package/lib/cjs/PropertyStore.d.ts +132 -132
  161. package/lib/cjs/PropertyStore.js +11 -11
  162. package/lib/cjs/PropertyStore.js.map +1 -1
  163. package/lib/cjs/Relationship.d.ts +416 -416
  164. package/lib/cjs/Relationship.js +494 -494
  165. package/lib/cjs/Relationship.js.map +1 -1
  166. package/lib/cjs/RpcBackend.d.ts +5 -5
  167. package/lib/cjs/RpcBackend.d.ts.map +1 -1
  168. package/lib/cjs/RpcBackend.js +32 -31
  169. package/lib/cjs/RpcBackend.js.map +1 -1
  170. package/lib/cjs/SQLiteDb.d.ts +219 -219
  171. package/lib/cjs/SQLiteDb.js +214 -214
  172. package/lib/cjs/SQLiteDb.js.map +1 -1
  173. package/lib/cjs/Schema.d.ts +55 -55
  174. package/lib/cjs/Schema.js +83 -83
  175. package/lib/cjs/Schema.js.map +1 -1
  176. package/lib/cjs/ServerBasedLocks.d.ts +57 -57
  177. package/lib/cjs/ServerBasedLocks.js +168 -168
  178. package/lib/cjs/ServerBasedLocks.js.map +1 -1
  179. package/lib/cjs/SqliteStatement.d.ts +360 -360
  180. package/lib/cjs/SqliteStatement.js +586 -586
  181. package/lib/cjs/SqliteStatement.js.map +1 -1
  182. package/lib/cjs/Texture.d.ts +58 -58
  183. package/lib/cjs/Texture.js +82 -82
  184. package/lib/cjs/Texture.js.map +1 -1
  185. package/lib/cjs/TileStorage.d.ts +18 -18
  186. package/lib/cjs/TileStorage.js +90 -90
  187. package/lib/cjs/TileStorage.js.map +1 -1
  188. package/lib/cjs/TxnManager.d.ts +202 -202
  189. package/lib/cjs/TxnManager.js +356 -356
  190. package/lib/cjs/TxnManager.js.map +1 -1
  191. package/lib/cjs/ViewDefinition.d.ts +439 -439
  192. package/lib/cjs/ViewDefinition.js +646 -646
  193. package/lib/cjs/ViewDefinition.js.map +1 -1
  194. package/lib/cjs/ViewStateHydrator.d.ts +13 -13
  195. package/lib/cjs/ViewStateHydrator.js +103 -103
  196. package/lib/cjs/ViewStateHydrator.js.map +1 -1
  197. package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
  198. package/lib/cjs/assets/Settings/Schemas/Cloud.Schema.json +67 -67
  199. package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +31 -31
  200. package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +52 -52
  201. package/lib/cjs/assets/Settings/backend.setting.json5 +138 -138
  202. package/lib/cjs/core-backend.d.ts +184 -184
  203. package/lib/cjs/core-backend.js +204 -204
  204. package/lib/cjs/core-backend.js.map +1 -1
  205. package/lib/cjs/domains/FunctionalElements.d.ts +101 -101
  206. package/lib/cjs/domains/FunctionalElements.js +145 -145
  207. package/lib/cjs/domains/FunctionalElements.js.map +1 -1
  208. package/lib/cjs/domains/FunctionalSchema.d.ts +13 -13
  209. package/lib/cjs/domains/FunctionalSchema.d.ts.map +1 -1
  210. package/lib/cjs/domains/FunctionalSchema.js +40 -40
  211. package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
  212. package/lib/cjs/domains/GenericElements.d.ts +177 -177
  213. package/lib/cjs/domains/GenericElements.js +263 -263
  214. package/lib/cjs/domains/GenericElements.js.map +1 -1
  215. package/lib/cjs/domains/GenericSchema.d.ts +10 -10
  216. package/lib/cjs/domains/GenericSchema.js +28 -28
  217. package/lib/cjs/domains/GenericSchema.js.map +1 -1
  218. package/lib/cjs/rpc/multipart.d.ts +11 -11
  219. package/lib/cjs/rpc/multipart.d.ts.map +1 -1
  220. package/lib/cjs/rpc/multipart.js +71 -70
  221. package/lib/cjs/rpc/multipart.js.map +1 -1
  222. package/lib/cjs/rpc/tracing.d.ts +28 -28
  223. package/lib/cjs/rpc/tracing.d.ts.map +1 -1
  224. package/lib/cjs/rpc/tracing.js +74 -73
  225. package/lib/cjs/rpc/tracing.js.map +1 -1
  226. package/lib/cjs/rpc/web/logging.d.ts +9 -9
  227. package/lib/cjs/rpc/web/logging.d.ts.map +1 -1
  228. package/lib/cjs/rpc/web/logging.js +43 -42
  229. package/lib/cjs/rpc/web/logging.js.map +1 -1
  230. package/lib/cjs/rpc/web/request.d.ts +6 -6
  231. package/lib/cjs/rpc/web/request.d.ts.map +1 -1
  232. package/lib/cjs/rpc/web/request.js +74 -73
  233. package/lib/cjs/rpc/web/request.js.map +1 -1
  234. package/lib/cjs/rpc/web/response.d.ts +6 -6
  235. package/lib/cjs/rpc/web/response.d.ts.map +1 -1
  236. package/lib/cjs/rpc/web/response.js +106 -105
  237. package/lib/cjs/rpc/web/response.js.map +1 -1
  238. package/lib/cjs/rpc-impl/DevToolsRpcImpl.d.ts +15 -15
  239. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js +32 -32
  240. package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
  241. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +47 -47
  242. package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts.map +1 -1
  243. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +294 -291
  244. package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
  245. package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts +22 -22
  246. package/lib/cjs/rpc-impl/IModelTileRpcImpl.d.ts.map +1 -1
  247. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js +205 -202
  248. package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
  249. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts +36 -36
  250. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js +168 -168
  251. package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
  252. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.d.ts +16 -16
  253. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js +43 -43
  254. package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
  255. package/lib/cjs/rpc-impl/WipRpcImpl.d.ts +15 -15
  256. package/lib/cjs/rpc-impl/WipRpcImpl.js +37 -37
  257. package/lib/cjs/rpc-impl/WipRpcImpl.js.map +1 -1
  258. package/lib/cjs/workspace/Settings.d.ts +186 -186
  259. package/lib/cjs/workspace/Settings.js +155 -155
  260. package/lib/cjs/workspace/Settings.js.map +1 -1
  261. package/lib/cjs/workspace/SettingsSchemas.d.ts +75 -75
  262. package/lib/cjs/workspace/SettingsSchemas.js +191 -191
  263. package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
  264. package/lib/cjs/workspace/Workspace.d.ts +414 -414
  265. package/lib/cjs/workspace/Workspace.js +543 -543
  266. package/lib/cjs/workspace/Workspace.js.map +1 -1
  267. package/package.json +13 -13
@@ -1,166 +1,166 @@
1
- "use strict";
2
- /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
- * See LICENSE.md in the project root for license terms and full copyright notice.
5
- *--------------------------------------------------------------------------------------------*/
6
- /** @packageDocumentation
7
- * @module ChangedElementsDb
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.ChangedElementsDb = void 0;
11
- const core_bentley_1 = require("@itwin/core-bentley");
12
- const core_common_1 = require("@itwin/core-common");
13
- const BriefcaseManager_1 = require("./BriefcaseManager");
14
- const ECDb_1 = require("./ECDb");
15
- const IModelHost_1 = require("./IModelHost");
16
- /** An ChangedElementsDb file
17
- * @internal
18
- */
19
- class ChangedElementsDb {
20
- constructor() {
21
- this._nativeDb = new IModelHost_1.IModelHost.platform.ChangedElementsECDb();
22
- }
23
- dispose() {
24
- if (!this._nativeDb)
25
- return;
26
- this.closeDb();
27
- this._nativeDb.dispose();
28
- this._nativeDb = undefined;
29
- }
30
- /** Create a ChangedElementsDb
31
- * @param pathName The path to the ECDb file to create.
32
- * @throws [IModelError]($common) if the operation failed.
33
- */
34
- _createDb(briefcase, pathName) {
35
- const status = this.nativeDb.createDb(briefcase.nativeDb, pathName);
36
- if (status !== core_bentley_1.DbResult.BE_SQLITE_OK)
37
- throw new core_common_1.IModelError(status, "Failed to created ECDb");
38
- }
39
- /** Open the Changed Elements Db.
40
- * @param pathName The path to the ECDb file to open
41
- * @param openMode Open mode
42
- * @throws [IModelError]($common) if the operation failed.
43
- */
44
- _openDb(pathName, openMode = ECDb_1.ECDbOpenMode.Readonly) {
45
- const nativeOpenMode = openMode === ECDb_1.ECDbOpenMode.Readonly ? core_bentley_1.OpenMode.Readonly : core_bentley_1.OpenMode.ReadWrite;
46
- const tryUpgrade = openMode === ECDb_1.ECDbOpenMode.FileUpgrade;
47
- const status = this.nativeDb.openDb(pathName, nativeOpenMode, tryUpgrade);
48
- if (status !== core_bentley_1.DbResult.BE_SQLITE_OK)
49
- throw new core_common_1.IModelError(status, "Failed to open ECDb");
50
- }
51
- /** Open the Changed Elements Db.
52
- * @param pathName The path to the ECDb file to open
53
- * @param openMode Open mode
54
- * @returns ChangedElementsDb
55
- */
56
- static openDb(pathName, openMode = ECDb_1.ECDbOpenMode.Readonly) {
57
- const cacheDb = new ChangedElementsDb();
58
- cacheDb._openDb(pathName, openMode);
59
- return cacheDb;
60
- }
61
- /** Create the changed elements cache db
62
- * @param briefcase IModelDb to use
63
- * @param pathName The path to the ECDb file to create.
64
- * @returns The new cache db
65
- */
66
- static createDb(briefcase, pathName) {
67
- const cacheDb = new ChangedElementsDb();
68
- cacheDb._createDb(briefcase, pathName);
69
- return cacheDb;
70
- }
71
- /** Processes a range of changesets and adds it to the changed elements cache
72
- * @param briefcase iModel briefcase to use
73
- * @param options Options for processing
74
- */
75
- async processChangesets(accessToken, briefcase, options) {
76
- const iModelId = briefcase.iModelId;
77
- const first = (await IModelHost_1.IModelHost.hubAccess.queryChangeset({ iModelId, changeset: { id: options.startChangesetId }, accessToken })).index;
78
- const end = (await IModelHost_1.IModelHost.hubAccess.queryChangeset({ iModelId, changeset: { id: options.endChangesetId }, accessToken })).index;
79
- const changesets = await IModelHost_1.IModelHost.hubAccess.downloadChangesets({ accessToken, iModelId, range: { first, end }, targetDir: BriefcaseManager_1.BriefcaseManager.getChangeSetsPath(iModelId) });
80
- // ChangeSets need to be processed from newest to oldest
81
- changesets.reverse();
82
- const status = this.nativeDb.processChangesets(briefcase.nativeDb, changesets, options.rulesetId, options.filterSpatial, options.wantParents, options.wantPropertyChecksums, options.rulesetDir, options.tempDir, options.wantChunkTraversal);
83
- if (status !== core_bentley_1.DbResult.BE_SQLITE_OK)
84
- throw new core_common_1.IModelError(status, "Failed to process changesets");
85
- return status;
86
- }
87
- /** Processes a range of changesets and adds it to the changed elements cache
88
- * This call will close the IModelDb object as it is required for processing and applying changesets
89
- * @param briefcase iModel briefcase to use
90
- * @param options options for processing
91
- */
92
- async processChangesetsAndRoll(accessToken, briefcase, options) {
93
- const iModelId = briefcase.iModelId;
94
- const first = (await IModelHost_1.IModelHost.hubAccess.queryChangeset({ iModelId, changeset: { id: options.startChangesetId }, accessToken })).index;
95
- const end = (await IModelHost_1.IModelHost.hubAccess.queryChangeset({ iModelId, changeset: { id: options.endChangesetId }, accessToken })).index;
96
- const changesets = await IModelHost_1.IModelHost.hubAccess.downloadChangesets({ accessToken, iModelId, range: { first, end }, targetDir: BriefcaseManager_1.BriefcaseManager.getChangeSetsPath(iModelId) });
97
- // ChangeSets need to be processed from newest to oldest
98
- changesets.reverse();
99
- // Close briefcase before doing processing and rolling briefcase
100
- const dbFilename = briefcase.pathName;
101
- const dbGuid = briefcase.iModelId;
102
- briefcase.close();
103
- // Process changesets
104
- const status = this.nativeDb.processChangesetsAndRoll(dbFilename, dbGuid, changesets, options.rulesetId, options.filterSpatial, options.wantParents, options.wantPropertyChecksums, options.rulesetDir, options.tempDir, options.wantRelationshipCaching, options.relationshipCacheSize, options.wantChunkTraversal);
105
- if (status !== core_bentley_1.DbResult.BE_SQLITE_OK)
106
- throw new core_common_1.IModelError(status, "Failed to process changesets");
107
- return status;
108
- }
109
- /** Get changed elements between two changesets
110
- * @param startChangesetId Start Changeset Id
111
- * @param endChangesetId End Changeset Id
112
- * @returns Returns the changed elements between the changesets provided
113
- * @throws [IModelError]($common) if the operation failed.
114
- */
115
- getChangedElements(startChangesetId, endChangesetId) {
116
- const result = this.nativeDb.getChangedElements(startChangesetId, endChangesetId);
117
- if (result.error || !result.result)
118
- throw new core_common_1.IModelError(result.error ? result.error.status : -1, result.error ? result.error.message : "Problem getting changed elements");
119
- return (result.result.changedElements);
120
- }
121
- /** Get changed models between two changesets
122
- * @param startChangesetId Start Changeset Id
123
- * @param endChangesetId End Changeset Id
124
- * @returns Returns the changed models between the changesets provided
125
- * @throws [IModelError]($common) if the operation failed.
126
- */
127
- getChangedModels(startChangesetId, endChangesetId) {
128
- const result = this.nativeDb.getChangedElements(startChangesetId, endChangesetId);
129
- if (result.error || !result.result)
130
- throw new core_common_1.IModelError(result.error ? result.error.status : -1, result.error ? result.error.message : "Problem getting changed models");
131
- return (result.result.changedModels);
132
- }
133
- /** Get changed models between two changesets
134
- * @param startChangesetId Start Changeset Id
135
- * @param endChangesetId End Changeset Id
136
- * @returns Returns the changed models between the changesets provided
137
- * @throws [IModelError]($common) if the operation failed.
138
- */
139
- getChangeData(startChangesetId, endChangesetId) {
140
- const result = this.nativeDb.getChangedElements(startChangesetId, endChangesetId);
141
- if (result.error)
142
- throw new core_common_1.IModelError(result.error.status, result.error.message);
143
- return result.result;
144
- }
145
- /** Returns true if the Changed Elements Db is open */
146
- get isOpen() { return this.nativeDb.isOpen(); }
147
- /** Returns true if the cache already contains this changeset Id */
148
- isProcessed(changesetId) { return this.nativeDb.isProcessed(changesetId); }
149
- /** Close the Db after saving any uncommitted changes.
150
- * @throws [IModelError]($common) if the database is not open.
151
- */
152
- closeDb() {
153
- this.nativeDb.closeDb();
154
- }
155
- cleanCaches() {
156
- this.nativeDb.cleanCaches();
157
- }
158
- /** @internal */
159
- get nativeDb() {
160
- if (!this._nativeDb)
161
- throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadRequest, "ChangedElementsDb object has already been disposed.");
162
- return this._nativeDb;
163
- }
164
- }
165
- exports.ChangedElementsDb = ChangedElementsDb;
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ /** @packageDocumentation
7
+ * @module ChangedElementsDb
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.ChangedElementsDb = void 0;
11
+ const core_bentley_1 = require("@itwin/core-bentley");
12
+ const core_common_1 = require("@itwin/core-common");
13
+ const BriefcaseManager_1 = require("./BriefcaseManager");
14
+ const ECDb_1 = require("./ECDb");
15
+ const IModelHost_1 = require("./IModelHost");
16
+ /** An ChangedElementsDb file
17
+ * @internal
18
+ */
19
+ class ChangedElementsDb {
20
+ constructor() {
21
+ this._nativeDb = new IModelHost_1.IModelHost.platform.ChangedElementsECDb();
22
+ }
23
+ dispose() {
24
+ if (!this._nativeDb)
25
+ return;
26
+ this.closeDb();
27
+ this._nativeDb.dispose();
28
+ this._nativeDb = undefined;
29
+ }
30
+ /** Create a ChangedElementsDb
31
+ * @param pathName The path to the ECDb file to create.
32
+ * @throws [IModelError]($common) if the operation failed.
33
+ */
34
+ _createDb(briefcase, pathName) {
35
+ const status = this.nativeDb.createDb(briefcase.nativeDb, pathName);
36
+ if (status !== core_bentley_1.DbResult.BE_SQLITE_OK)
37
+ throw new core_common_1.IModelError(status, "Failed to created ECDb");
38
+ }
39
+ /** Open the Changed Elements Db.
40
+ * @param pathName The path to the ECDb file to open
41
+ * @param openMode Open mode
42
+ * @throws [IModelError]($common) if the operation failed.
43
+ */
44
+ _openDb(pathName, openMode = ECDb_1.ECDbOpenMode.Readonly) {
45
+ const nativeOpenMode = openMode === ECDb_1.ECDbOpenMode.Readonly ? core_bentley_1.OpenMode.Readonly : core_bentley_1.OpenMode.ReadWrite;
46
+ const tryUpgrade = openMode === ECDb_1.ECDbOpenMode.FileUpgrade;
47
+ const status = this.nativeDb.openDb(pathName, nativeOpenMode, tryUpgrade);
48
+ if (status !== core_bentley_1.DbResult.BE_SQLITE_OK)
49
+ throw new core_common_1.IModelError(status, "Failed to open ECDb");
50
+ }
51
+ /** Open the Changed Elements Db.
52
+ * @param pathName The path to the ECDb file to open
53
+ * @param openMode Open mode
54
+ * @returns ChangedElementsDb
55
+ */
56
+ static openDb(pathName, openMode = ECDb_1.ECDbOpenMode.Readonly) {
57
+ const cacheDb = new ChangedElementsDb();
58
+ cacheDb._openDb(pathName, openMode);
59
+ return cacheDb;
60
+ }
61
+ /** Create the changed elements cache db
62
+ * @param briefcase IModelDb to use
63
+ * @param pathName The path to the ECDb file to create.
64
+ * @returns The new cache db
65
+ */
66
+ static createDb(briefcase, pathName) {
67
+ const cacheDb = new ChangedElementsDb();
68
+ cacheDb._createDb(briefcase, pathName);
69
+ return cacheDb;
70
+ }
71
+ /** Processes a range of changesets and adds it to the changed elements cache
72
+ * @param briefcase iModel briefcase to use
73
+ * @param options Options for processing
74
+ */
75
+ async processChangesets(accessToken, briefcase, options) {
76
+ const iModelId = briefcase.iModelId;
77
+ const first = (await IModelHost_1.IModelHost.hubAccess.queryChangeset({ iModelId, changeset: { id: options.startChangesetId }, accessToken })).index;
78
+ const end = (await IModelHost_1.IModelHost.hubAccess.queryChangeset({ iModelId, changeset: { id: options.endChangesetId }, accessToken })).index;
79
+ const changesets = await IModelHost_1.IModelHost.hubAccess.downloadChangesets({ accessToken, iModelId, range: { first, end }, targetDir: BriefcaseManager_1.BriefcaseManager.getChangeSetsPath(iModelId) });
80
+ // ChangeSets need to be processed from newest to oldest
81
+ changesets.reverse();
82
+ const status = this.nativeDb.processChangesets(briefcase.nativeDb, changesets, options.rulesetId, options.filterSpatial, options.wantParents, options.wantPropertyChecksums, options.rulesetDir, options.tempDir, options.wantChunkTraversal);
83
+ if (status !== core_bentley_1.DbResult.BE_SQLITE_OK)
84
+ throw new core_common_1.IModelError(status, "Failed to process changesets");
85
+ return status;
86
+ }
87
+ /** Processes a range of changesets and adds it to the changed elements cache
88
+ * This call will close the IModelDb object as it is required for processing and applying changesets
89
+ * @param briefcase iModel briefcase to use
90
+ * @param options options for processing
91
+ */
92
+ async processChangesetsAndRoll(accessToken, briefcase, options) {
93
+ const iModelId = briefcase.iModelId;
94
+ const first = (await IModelHost_1.IModelHost.hubAccess.queryChangeset({ iModelId, changeset: { id: options.startChangesetId }, accessToken })).index;
95
+ const end = (await IModelHost_1.IModelHost.hubAccess.queryChangeset({ iModelId, changeset: { id: options.endChangesetId }, accessToken })).index;
96
+ const changesets = await IModelHost_1.IModelHost.hubAccess.downloadChangesets({ accessToken, iModelId, range: { first, end }, targetDir: BriefcaseManager_1.BriefcaseManager.getChangeSetsPath(iModelId) });
97
+ // ChangeSets need to be processed from newest to oldest
98
+ changesets.reverse();
99
+ // Close briefcase before doing processing and rolling briefcase
100
+ const dbFilename = briefcase.pathName;
101
+ const dbGuid = briefcase.iModelId;
102
+ briefcase.close();
103
+ // Process changesets
104
+ const status = this.nativeDb.processChangesetsAndRoll(dbFilename, dbGuid, changesets, options.rulesetId, options.filterSpatial, options.wantParents, options.wantPropertyChecksums, options.rulesetDir, options.tempDir, options.wantRelationshipCaching, options.relationshipCacheSize, options.wantChunkTraversal);
105
+ if (status !== core_bentley_1.DbResult.BE_SQLITE_OK)
106
+ throw new core_common_1.IModelError(status, "Failed to process changesets");
107
+ return status;
108
+ }
109
+ /** Get changed elements between two changesets
110
+ * @param startChangesetId Start Changeset Id
111
+ * @param endChangesetId End Changeset Id
112
+ * @returns Returns the changed elements between the changesets provided
113
+ * @throws [IModelError]($common) if the operation failed.
114
+ */
115
+ getChangedElements(startChangesetId, endChangesetId) {
116
+ const result = this.nativeDb.getChangedElements(startChangesetId, endChangesetId);
117
+ if (result.error || !result.result)
118
+ throw new core_common_1.IModelError(result.error ? result.error.status : -1, result.error ? result.error.message : "Problem getting changed elements");
119
+ return (result.result.changedElements);
120
+ }
121
+ /** Get changed models between two changesets
122
+ * @param startChangesetId Start Changeset Id
123
+ * @param endChangesetId End Changeset Id
124
+ * @returns Returns the changed models between the changesets provided
125
+ * @throws [IModelError]($common) if the operation failed.
126
+ */
127
+ getChangedModels(startChangesetId, endChangesetId) {
128
+ const result = this.nativeDb.getChangedElements(startChangesetId, endChangesetId);
129
+ if (result.error || !result.result)
130
+ throw new core_common_1.IModelError(result.error ? result.error.status : -1, result.error ? result.error.message : "Problem getting changed models");
131
+ return (result.result.changedModels);
132
+ }
133
+ /** Get changed models between two changesets
134
+ * @param startChangesetId Start Changeset Id
135
+ * @param endChangesetId End Changeset Id
136
+ * @returns Returns the changed models between the changesets provided
137
+ * @throws [IModelError]($common) if the operation failed.
138
+ */
139
+ getChangeData(startChangesetId, endChangesetId) {
140
+ const result = this.nativeDb.getChangedElements(startChangesetId, endChangesetId);
141
+ if (result.error)
142
+ throw new core_common_1.IModelError(result.error.status, result.error.message);
143
+ return result.result;
144
+ }
145
+ /** Returns true if the Changed Elements Db is open */
146
+ get isOpen() { return this.nativeDb.isOpen(); }
147
+ /** Returns true if the cache already contains this changeset Id */
148
+ isProcessed(changesetId) { return this.nativeDb.isProcessed(changesetId); }
149
+ /** Close the Db after saving any uncommitted changes.
150
+ * @throws [IModelError]($common) if the database is not open.
151
+ */
152
+ closeDb() {
153
+ this.nativeDb.closeDb();
154
+ }
155
+ cleanCaches() {
156
+ this.nativeDb.cleanCaches();
157
+ }
158
+ /** @internal */
159
+ get nativeDb() {
160
+ if (!this._nativeDb)
161
+ throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadRequest, "ChangedElementsDb object has already been disposed.");
162
+ return this._nativeDb;
163
+ }
164
+ }
165
+ exports.ChangedElementsDb = ChangedElementsDb;
166
166
  //# sourceMappingURL=ChangedElementsDb.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChangedElementsDb.js","sourceRoot":"","sources":["../../src/ChangedElementsDb.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module ChangedElementsDb\r\n */\r\n\r\nimport { AccessToken, DbResult, IDisposable, IModelStatus, OpenMode } from \"@itwin/core-bentley\";\r\nimport { ChangeData, ChangedElements, ChangedModels, IModelError } from \"@itwin/core-common\";\r\nimport { IModelJsNative } from \"@bentley/imodeljs-native\";\r\nimport { BriefcaseManager } from \"./BriefcaseManager\";\r\nimport { ECDbOpenMode } from \"./ECDb\";\r\nimport { IModelDb } from \"./IModelDb\";\r\nimport { IModelHost } from \"./IModelHost\";\r\n\r\n/**\r\n * Options for processChangesets function\r\n * @internal\r\n * */\r\nexport interface ProcessChangesetOptions {\r\n startChangesetId: string;\r\n endChangesetId: string;\r\n rulesetId: string;\r\n filterSpatial?: boolean;\r\n wantParents?: boolean;\r\n wantPropertyChecksums?: boolean;\r\n rulesetDir?: string;\r\n tempDir?: string;\r\n wantRelationshipCaching?: boolean;\r\n relationshipCacheSize?: number;\r\n wantChunkTraversal?: boolean;\r\n}\r\n\r\n/** An ChangedElementsDb file\r\n * @internal\r\n */\r\nexport class ChangedElementsDb implements IDisposable {\r\n private _nativeDb: IModelJsNative.ChangedElementsECDb | undefined;\r\n\r\n constructor() {\r\n this._nativeDb = new IModelHost.platform.ChangedElementsECDb();\r\n }\r\n\r\n public dispose(): void {\r\n if (!this._nativeDb)\r\n return;\r\n\r\n this.closeDb();\r\n this._nativeDb.dispose();\r\n this._nativeDb = undefined;\r\n }\r\n\r\n /** Create a ChangedElementsDb\r\n * @param pathName The path to the ECDb file to create.\r\n * @throws [IModelError]($common) if the operation failed.\r\n */\r\n private _createDb(briefcase: IModelDb, pathName: string): void {\r\n const status: DbResult = this.nativeDb.createDb(briefcase.nativeDb, pathName);\r\n if (status !== DbResult.BE_SQLITE_OK)\r\n throw new IModelError(status, \"Failed to created ECDb\");\r\n }\r\n\r\n /** Open the Changed Elements Db.\r\n * @param pathName The path to the ECDb file to open\r\n * @param openMode Open mode\r\n * @throws [IModelError]($common) if the operation failed.\r\n */\r\n private _openDb(pathName: string, openMode: ECDbOpenMode = ECDbOpenMode.Readonly): void {\r\n const nativeOpenMode = openMode === ECDbOpenMode.Readonly ? OpenMode.Readonly : OpenMode.ReadWrite;\r\n const tryUpgrade = openMode === ECDbOpenMode.FileUpgrade;\r\n const status = this.nativeDb.openDb(pathName, nativeOpenMode, tryUpgrade);\r\n if (status !== DbResult.BE_SQLITE_OK)\r\n throw new IModelError(status, \"Failed to open ECDb\");\r\n }\r\n\r\n /** Open the Changed Elements Db.\r\n * @param pathName The path to the ECDb file to open\r\n * @param openMode Open mode\r\n * @returns ChangedElementsDb\r\n */\r\n public static openDb(pathName: string, openMode: ECDbOpenMode = ECDbOpenMode.Readonly): ChangedElementsDb {\r\n const cacheDb = new ChangedElementsDb();\r\n cacheDb._openDb(pathName, openMode);\r\n return cacheDb;\r\n }\r\n\r\n /** Create the changed elements cache db\r\n * @param briefcase IModelDb to use\r\n * @param pathName The path to the ECDb file to create.\r\n * @returns The new cache db\r\n */\r\n public static createDb(briefcase: IModelDb, pathName: string): ChangedElementsDb {\r\n const cacheDb = new ChangedElementsDb();\r\n cacheDb._createDb(briefcase, pathName);\r\n return cacheDb;\r\n }\r\n\r\n /** Processes a range of changesets and adds it to the changed elements cache\r\n * @param briefcase iModel briefcase to use\r\n * @param options Options for processing\r\n */\r\n public async processChangesets(accessToken: AccessToken, briefcase: IModelDb, options: ProcessChangesetOptions): Promise<DbResult> {\r\n const iModelId = briefcase.iModelId;\r\n const first = (await IModelHost.hubAccess.queryChangeset({ iModelId, changeset: { id: options.startChangesetId }, accessToken })).index;\r\n const end = (await IModelHost.hubAccess.queryChangeset({ iModelId, changeset: { id: options.endChangesetId }, accessToken })).index;\r\n const changesets = await IModelHost.hubAccess.downloadChangesets({ accessToken, iModelId, range: { first, end }, targetDir: BriefcaseManager.getChangeSetsPath(iModelId) });\r\n\r\n // ChangeSets need to be processed from newest to oldest\r\n changesets.reverse();\r\n const status = this.nativeDb.processChangesets(\r\n briefcase.nativeDb,\r\n changesets,\r\n options.rulesetId,\r\n options.filterSpatial,\r\n options.wantParents,\r\n options.wantPropertyChecksums,\r\n options.rulesetDir,\r\n options.tempDir,\r\n options.wantChunkTraversal,\r\n );\r\n if (status !== DbResult.BE_SQLITE_OK)\r\n throw new IModelError(status, \"Failed to process changesets\");\r\n return status;\r\n }\r\n\r\n /** Processes a range of changesets and adds it to the changed elements cache\r\n * This call will close the IModelDb object as it is required for processing and applying changesets\r\n * @param briefcase iModel briefcase to use\r\n * @param options options for processing\r\n */\r\n public async processChangesetsAndRoll(accessToken: AccessToken, briefcase: IModelDb, options: ProcessChangesetOptions): Promise<DbResult> {\r\n const iModelId = briefcase.iModelId;\r\n const first = (await IModelHost.hubAccess.queryChangeset({ iModelId, changeset: { id: options.startChangesetId }, accessToken })).index;\r\n const end = (await IModelHost.hubAccess.queryChangeset({ iModelId, changeset: { id: options.endChangesetId }, accessToken })).index;\r\n const changesets = await IModelHost.hubAccess.downloadChangesets({ accessToken, iModelId, range: { first, end }, targetDir: BriefcaseManager.getChangeSetsPath(iModelId) });\r\n\r\n // ChangeSets need to be processed from newest to oldest\r\n changesets.reverse();\r\n // Close briefcase before doing processing and rolling briefcase\r\n const dbFilename = briefcase.pathName;\r\n const dbGuid = briefcase.iModelId;\r\n briefcase.close();\r\n // Process changesets\r\n const status = this.nativeDb.processChangesetsAndRoll(\r\n dbFilename,\r\n dbGuid,\r\n changesets,\r\n options.rulesetId,\r\n options.filterSpatial,\r\n options.wantParents,\r\n options.wantPropertyChecksums,\r\n options.rulesetDir,\r\n options.tempDir,\r\n options.wantRelationshipCaching,\r\n options.relationshipCacheSize,\r\n options.wantChunkTraversal,\r\n );\r\n if (status !== DbResult.BE_SQLITE_OK)\r\n throw new IModelError(status, \"Failed to process changesets\");\r\n return status;\r\n }\r\n\r\n /** Get changed elements between two changesets\r\n * @param startChangesetId Start Changeset Id\r\n * @param endChangesetId End Changeset Id\r\n * @returns Returns the changed elements between the changesets provided\r\n * @throws [IModelError]($common) if the operation failed.\r\n */\r\n public getChangedElements(startChangesetId: string, endChangesetId: string): ChangedElements | undefined {\r\n const result = this.nativeDb.getChangedElements(startChangesetId, endChangesetId);\r\n if (result.error || !result.result)\r\n throw new IModelError(result.error ? result.error.status : -1, result.error ? result.error.message : \"Problem getting changed elements\");\r\n return (result.result.changedElements) as ChangedElements;\r\n }\r\n\r\n /** Get changed models between two changesets\r\n * @param startChangesetId Start Changeset Id\r\n * @param endChangesetId End Changeset Id\r\n * @returns Returns the changed models between the changesets provided\r\n * @throws [IModelError]($common) if the operation failed.\r\n */\r\n public getChangedModels(startChangesetId: string, endChangesetId: string): ChangedModels | undefined {\r\n const result = this.nativeDb.getChangedElements(startChangesetId, endChangesetId);\r\n if (result.error || !result.result)\r\n throw new IModelError(result.error ? result.error.status : -1, result.error ? result.error.message : \"Problem getting changed models\");\r\n return (result.result.changedModels) as ChangedModels;\r\n }\r\n\r\n /** Get changed models between two changesets\r\n * @param startChangesetId Start Changeset Id\r\n * @param endChangesetId End Changeset Id\r\n * @returns Returns the changed models between the changesets provided\r\n * @throws [IModelError]($common) if the operation failed.\r\n */\r\n public getChangeData(startChangesetId: string, endChangesetId: string): ChangeData | undefined {\r\n const result = this.nativeDb.getChangedElements(startChangesetId, endChangesetId);\r\n if (result.error)\r\n throw new IModelError(result.error.status, result.error.message);\r\n return result.result as ChangeData;\r\n }\r\n\r\n /** Returns true if the Changed Elements Db is open */\r\n public get isOpen(): boolean { return this.nativeDb.isOpen(); }\r\n\r\n /** Returns true if the cache already contains this changeset Id */\r\n public isProcessed(changesetId: string): boolean { return this.nativeDb.isProcessed(changesetId); }\r\n\r\n /** Close the Db after saving any uncommitted changes.\r\n * @throws [IModelError]($common) if the database is not open.\r\n */\r\n public closeDb(): void {\r\n this.nativeDb.closeDb();\r\n }\r\n\r\n public cleanCaches(): void {\r\n this.nativeDb.cleanCaches();\r\n }\r\n\r\n /** @internal */\r\n public get nativeDb(): IModelJsNative.ChangedElementsECDb {\r\n if (!this._nativeDb)\r\n throw new IModelError(IModelStatus.BadRequest, \"ChangedElementsDb object has already been disposed.\");\r\n\r\n return this._nativeDb;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"ChangedElementsDb.js","sourceRoot":"","sources":["../../src/ChangedElementsDb.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module ChangedElementsDb\n */\n\nimport { AccessToken, DbResult, IDisposable, IModelStatus, OpenMode } from \"@itwin/core-bentley\";\nimport { ChangeData, ChangedElements, ChangedModels, IModelError } from \"@itwin/core-common\";\nimport { IModelJsNative } from \"@bentley/imodeljs-native\";\nimport { BriefcaseManager } from \"./BriefcaseManager\";\nimport { ECDbOpenMode } from \"./ECDb\";\nimport { IModelDb } from \"./IModelDb\";\nimport { IModelHost } from \"./IModelHost\";\n\n/**\n * Options for processChangesets function\n * @internal\n * */\nexport interface ProcessChangesetOptions {\n startChangesetId: string;\n endChangesetId: string;\n rulesetId: string;\n filterSpatial?: boolean;\n wantParents?: boolean;\n wantPropertyChecksums?: boolean;\n rulesetDir?: string;\n tempDir?: string;\n wantRelationshipCaching?: boolean;\n relationshipCacheSize?: number;\n wantChunkTraversal?: boolean;\n}\n\n/** An ChangedElementsDb file\n * @internal\n */\nexport class ChangedElementsDb implements IDisposable {\n private _nativeDb: IModelJsNative.ChangedElementsECDb | undefined;\n\n constructor() {\n this._nativeDb = new IModelHost.platform.ChangedElementsECDb();\n }\n\n public dispose(): void {\n if (!this._nativeDb)\n return;\n\n this.closeDb();\n this._nativeDb.dispose();\n this._nativeDb = undefined;\n }\n\n /** Create a ChangedElementsDb\n * @param pathName The path to the ECDb file to create.\n * @throws [IModelError]($common) if the operation failed.\n */\n private _createDb(briefcase: IModelDb, pathName: string): void {\n const status: DbResult = this.nativeDb.createDb(briefcase.nativeDb, pathName);\n if (status !== DbResult.BE_SQLITE_OK)\n throw new IModelError(status, \"Failed to created ECDb\");\n }\n\n /** Open the Changed Elements Db.\n * @param pathName The path to the ECDb file to open\n * @param openMode Open mode\n * @throws [IModelError]($common) if the operation failed.\n */\n private _openDb(pathName: string, openMode: ECDbOpenMode = ECDbOpenMode.Readonly): void {\n const nativeOpenMode = openMode === ECDbOpenMode.Readonly ? OpenMode.Readonly : OpenMode.ReadWrite;\n const tryUpgrade = openMode === ECDbOpenMode.FileUpgrade;\n const status = this.nativeDb.openDb(pathName, nativeOpenMode, tryUpgrade);\n if (status !== DbResult.BE_SQLITE_OK)\n throw new IModelError(status, \"Failed to open ECDb\");\n }\n\n /** Open the Changed Elements Db.\n * @param pathName The path to the ECDb file to open\n * @param openMode Open mode\n * @returns ChangedElementsDb\n */\n public static openDb(pathName: string, openMode: ECDbOpenMode = ECDbOpenMode.Readonly): ChangedElementsDb {\n const cacheDb = new ChangedElementsDb();\n cacheDb._openDb(pathName, openMode);\n return cacheDb;\n }\n\n /** Create the changed elements cache db\n * @param briefcase IModelDb to use\n * @param pathName The path to the ECDb file to create.\n * @returns The new cache db\n */\n public static createDb(briefcase: IModelDb, pathName: string): ChangedElementsDb {\n const cacheDb = new ChangedElementsDb();\n cacheDb._createDb(briefcase, pathName);\n return cacheDb;\n }\n\n /** Processes a range of changesets and adds it to the changed elements cache\n * @param briefcase iModel briefcase to use\n * @param options Options for processing\n */\n public async processChangesets(accessToken: AccessToken, briefcase: IModelDb, options: ProcessChangesetOptions): Promise<DbResult> {\n const iModelId = briefcase.iModelId;\n const first = (await IModelHost.hubAccess.queryChangeset({ iModelId, changeset: { id: options.startChangesetId }, accessToken })).index;\n const end = (await IModelHost.hubAccess.queryChangeset({ iModelId, changeset: { id: options.endChangesetId }, accessToken })).index;\n const changesets = await IModelHost.hubAccess.downloadChangesets({ accessToken, iModelId, range: { first, end }, targetDir: BriefcaseManager.getChangeSetsPath(iModelId) });\n\n // ChangeSets need to be processed from newest to oldest\n changesets.reverse();\n const status = this.nativeDb.processChangesets(\n briefcase.nativeDb,\n changesets,\n options.rulesetId,\n options.filterSpatial,\n options.wantParents,\n options.wantPropertyChecksums,\n options.rulesetDir,\n options.tempDir,\n options.wantChunkTraversal,\n );\n if (status !== DbResult.BE_SQLITE_OK)\n throw new IModelError(status, \"Failed to process changesets\");\n return status;\n }\n\n /** Processes a range of changesets and adds it to the changed elements cache\n * This call will close the IModelDb object as it is required for processing and applying changesets\n * @param briefcase iModel briefcase to use\n * @param options options for processing\n */\n public async processChangesetsAndRoll(accessToken: AccessToken, briefcase: IModelDb, options: ProcessChangesetOptions): Promise<DbResult> {\n const iModelId = briefcase.iModelId;\n const first = (await IModelHost.hubAccess.queryChangeset({ iModelId, changeset: { id: options.startChangesetId }, accessToken })).index;\n const end = (await IModelHost.hubAccess.queryChangeset({ iModelId, changeset: { id: options.endChangesetId }, accessToken })).index;\n const changesets = await IModelHost.hubAccess.downloadChangesets({ accessToken, iModelId, range: { first, end }, targetDir: BriefcaseManager.getChangeSetsPath(iModelId) });\n\n // ChangeSets need to be processed from newest to oldest\n changesets.reverse();\n // Close briefcase before doing processing and rolling briefcase\n const dbFilename = briefcase.pathName;\n const dbGuid = briefcase.iModelId;\n briefcase.close();\n // Process changesets\n const status = this.nativeDb.processChangesetsAndRoll(\n dbFilename,\n dbGuid,\n changesets,\n options.rulesetId,\n options.filterSpatial,\n options.wantParents,\n options.wantPropertyChecksums,\n options.rulesetDir,\n options.tempDir,\n options.wantRelationshipCaching,\n options.relationshipCacheSize,\n options.wantChunkTraversal,\n );\n if (status !== DbResult.BE_SQLITE_OK)\n throw new IModelError(status, \"Failed to process changesets\");\n return status;\n }\n\n /** Get changed elements between two changesets\n * @param startChangesetId Start Changeset Id\n * @param endChangesetId End Changeset Id\n * @returns Returns the changed elements between the changesets provided\n * @throws [IModelError]($common) if the operation failed.\n */\n public getChangedElements(startChangesetId: string, endChangesetId: string): ChangedElements | undefined {\n const result = this.nativeDb.getChangedElements(startChangesetId, endChangesetId);\n if (result.error || !result.result)\n throw new IModelError(result.error ? result.error.status : -1, result.error ? result.error.message : \"Problem getting changed elements\");\n return (result.result.changedElements) as ChangedElements;\n }\n\n /** Get changed models between two changesets\n * @param startChangesetId Start Changeset Id\n * @param endChangesetId End Changeset Id\n * @returns Returns the changed models between the changesets provided\n * @throws [IModelError]($common) if the operation failed.\n */\n public getChangedModels(startChangesetId: string, endChangesetId: string): ChangedModels | undefined {\n const result = this.nativeDb.getChangedElements(startChangesetId, endChangesetId);\n if (result.error || !result.result)\n throw new IModelError(result.error ? result.error.status : -1, result.error ? result.error.message : \"Problem getting changed models\");\n return (result.result.changedModels) as ChangedModels;\n }\n\n /** Get changed models between two changesets\n * @param startChangesetId Start Changeset Id\n * @param endChangesetId End Changeset Id\n * @returns Returns the changed models between the changesets provided\n * @throws [IModelError]($common) if the operation failed.\n */\n public getChangeData(startChangesetId: string, endChangesetId: string): ChangeData | undefined {\n const result = this.nativeDb.getChangedElements(startChangesetId, endChangesetId);\n if (result.error)\n throw new IModelError(result.error.status, result.error.message);\n return result.result as ChangeData;\n }\n\n /** Returns true if the Changed Elements Db is open */\n public get isOpen(): boolean { return this.nativeDb.isOpen(); }\n\n /** Returns true if the cache already contains this changeset Id */\n public isProcessed(changesetId: string): boolean { return this.nativeDb.isProcessed(changesetId); }\n\n /** Close the Db after saving any uncommitted changes.\n * @throws [IModelError]($common) if the database is not open.\n */\n public closeDb(): void {\n this.nativeDb.closeDb();\n }\n\n public cleanCaches(): void {\n this.nativeDb.cleanCaches();\n }\n\n /** @internal */\n public get nativeDb(): IModelJsNative.ChangedElementsECDb {\n if (!this._nativeDb)\n throw new IModelError(IModelStatus.BadRequest, \"ChangedElementsDb object has already been disposed.\");\n\n return this._nativeDb;\n }\n}\n"]}
@@ -1,40 +1,40 @@
1
- import { GuidString } from "@itwin/core-bentley";
2
- import { ChangeData, ChangedElements, ChangedModels } from "@itwin/core-common";
3
- /** Utilities for querying changed elements caches */
4
- /** @internal */
5
- export declare class ChangedElementsManager {
6
- /** Maintains a single entry since we will only have a cache per iModel, which means a ChangedElementsDb per backend instance */
7
- private static _entry;
8
- static getChangedElementsPathName(iModelId: GuidString): string;
9
- /** Get changed elements Db */
10
- private static getChangedElementsDb;
11
- static cleanUp(): void;
12
- /** Gets the changed elements from the cache if found
13
- * @param iModelId Id of the iModel
14
- * @param startChangesetId Start changeset Id
15
- * @param endChangesetId End changeset Id
16
- * @returns Changed elements if found
17
- */
18
- static getChangedElements(iModelId: GuidString, startChangesetId: string, endChangesetId: string): ChangedElements | undefined;
19
- /** Gets the changed models from the cache if found
20
- * @param iModelId Id of the iModel
21
- * @param startChangesetId Start changeset Id
22
- * @param endChangesetId End changeset Id
23
- * @returns Changed models if found
24
- */
25
- static getChangedModels(iModelId: GuidString, startChangesetId: string, endChangesetId: string): ChangedModels | undefined;
26
- /** Gets the change data (models and elements) from the cache if found
27
- * @param iModelId Id of the iModel
28
- * @param startChangesetId Start changeset Id
29
- * @param endChangesetId End changeset Id
30
- * @returns Changed models if found
31
- */
32
- static getChangeData(iModelId: GuidString, startChangesetId: string, endChangesetId: string): ChangeData | undefined;
33
- /** Checks if the cache contains information about the changeset
34
- * @param iModelId Id of the iModel
35
- * @param changesetId Changeset to check for
36
- * @returns true if the changeset has been processed and exists in the cache
37
- */
38
- static isProcessed(iModelId: GuidString, changesetId: string): boolean;
39
- }
1
+ import { GuidString } from "@itwin/core-bentley";
2
+ import { ChangeData, ChangedElements, ChangedModels } from "@itwin/core-common";
3
+ /** Utilities for querying changed elements caches */
4
+ /** @internal */
5
+ export declare class ChangedElementsManager {
6
+ /** Maintains a single entry since we will only have a cache per iModel, which means a ChangedElementsDb per backend instance */
7
+ private static _entry;
8
+ static getChangedElementsPathName(iModelId: GuidString): string;
9
+ /** Get changed elements Db */
10
+ private static getChangedElementsDb;
11
+ static cleanUp(): void;
12
+ /** Gets the changed elements from the cache if found
13
+ * @param iModelId Id of the iModel
14
+ * @param startChangesetId Start changeset Id
15
+ * @param endChangesetId End changeset Id
16
+ * @returns Changed elements if found
17
+ */
18
+ static getChangedElements(iModelId: GuidString, startChangesetId: string, endChangesetId: string): ChangedElements | undefined;
19
+ /** Gets the changed models from the cache if found
20
+ * @param iModelId Id of the iModel
21
+ * @param startChangesetId Start changeset Id
22
+ * @param endChangesetId End changeset Id
23
+ * @returns Changed models if found
24
+ */
25
+ static getChangedModels(iModelId: GuidString, startChangesetId: string, endChangesetId: string): ChangedModels | undefined;
26
+ /** Gets the change data (models and elements) from the cache if found
27
+ * @param iModelId Id of the iModel
28
+ * @param startChangesetId Start changeset Id
29
+ * @param endChangesetId End changeset Id
30
+ * @returns Changed models if found
31
+ */
32
+ static getChangeData(iModelId: GuidString, startChangesetId: string, endChangesetId: string): ChangeData | undefined;
33
+ /** Checks if the cache contains information about the changeset
34
+ * @param iModelId Id of the iModel
35
+ * @param changesetId Changeset to check for
36
+ * @returns true if the changeset has been processed and exists in the cache
37
+ */
38
+ static isProcessed(iModelId: GuidString, changesetId: string): boolean;
39
+ }
40
40
  //# sourceMappingURL=ChangedElementsManager.d.ts.map