@itwin/core-backend 5.9.0-dev.8 → 5.10.0-dev.1

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 (244) hide show
  1. package/CHANGELOG.md +18 -1
  2. package/lib/cjs/BackendHubAccess.d.ts +38 -0
  3. package/lib/cjs/BackendHubAccess.d.ts.map +1 -1
  4. package/lib/cjs/BackendHubAccess.js.map +1 -1
  5. package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
  6. package/lib/cjs/BriefcaseManager.js +6 -3
  7. package/lib/cjs/BriefcaseManager.js.map +1 -1
  8. package/lib/cjs/ChangesetECAdaptor.d.ts +9 -1
  9. package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
  10. package/lib/cjs/ChangesetECAdaptor.js +7 -1
  11. package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
  12. package/lib/cjs/ChangesetReader.d.ts +186 -0
  13. package/lib/cjs/ChangesetReader.d.ts.map +1 -0
  14. package/lib/cjs/ChangesetReader.js +372 -0
  15. package/lib/cjs/ChangesetReader.js.map +1 -0
  16. package/lib/cjs/ChangesetReaderTypes.d.ts +120 -0
  17. package/lib/cjs/ChangesetReaderTypes.d.ts.map +1 -0
  18. package/lib/cjs/ChangesetReaderTypes.js +23 -0
  19. package/lib/cjs/ChangesetReaderTypes.js.map +1 -0
  20. package/lib/cjs/CloudSqlite.d.ts +1 -1
  21. package/lib/cjs/CloudSqlite.d.ts.map +1 -1
  22. package/lib/cjs/CloudSqlite.js +68 -13
  23. package/lib/cjs/CloudSqlite.js.map +1 -1
  24. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  25. package/lib/cjs/DevTools.js.map +1 -1
  26. package/lib/cjs/DisplayStyle.js.map +1 -1
  27. package/lib/cjs/ECSqlStatement.d.ts.map +1 -1
  28. package/lib/cjs/ECSqlStatement.js.map +1 -1
  29. package/lib/cjs/EditTxn.d.ts +55 -1
  30. package/lib/cjs/EditTxn.d.ts.map +1 -1
  31. package/lib/cjs/EditTxn.js +43 -1
  32. package/lib/cjs/EditTxn.js.map +1 -1
  33. package/lib/cjs/Element.d.ts +69 -0
  34. package/lib/cjs/Element.d.ts.map +1 -1
  35. package/lib/cjs/Element.js +36 -0
  36. package/lib/cjs/Element.js.map +1 -1
  37. package/lib/cjs/ElementGraphics.js.map +1 -1
  38. package/lib/cjs/ExternalSource.js.map +1 -1
  39. package/lib/cjs/GeographicCRSServices.d.ts +15 -0
  40. package/lib/cjs/GeographicCRSServices.d.ts.map +1 -1
  41. package/lib/cjs/GeographicCRSServices.js +13 -4
  42. package/lib/cjs/GeographicCRSServices.js.map +1 -1
  43. package/lib/cjs/IModelDb.d.ts +9 -1
  44. package/lib/cjs/IModelDb.d.ts.map +1 -1
  45. package/lib/cjs/IModelDb.js +25 -6
  46. package/lib/cjs/IModelDb.js.map +1 -1
  47. package/lib/cjs/IModelIncrementalSchemaLocater.js.map +1 -1
  48. package/lib/cjs/IpcHost.d.ts.map +1 -1
  49. package/lib/cjs/IpcHost.js +33 -13
  50. package/lib/cjs/IpcHost.js.map +1 -1
  51. package/lib/cjs/LockControl.d.ts +85 -1
  52. package/lib/cjs/LockControl.d.ts.map +1 -1
  53. package/lib/cjs/LockControl.js.map +1 -1
  54. package/lib/cjs/Model.d.ts +34 -0
  55. package/lib/cjs/Model.d.ts.map +1 -1
  56. package/lib/cjs/Model.js +24 -0
  57. package/lib/cjs/Model.js.map +1 -1
  58. package/lib/cjs/PartialChangeUnifier.d.ts +77 -0
  59. package/lib/cjs/PartialChangeUnifier.d.ts.map +1 -0
  60. package/lib/cjs/PartialChangeUnifier.js +234 -0
  61. package/lib/cjs/PartialChangeUnifier.js.map +1 -0
  62. package/lib/cjs/SheetIndex.js.map +1 -1
  63. package/lib/cjs/SqliteChangesetReader.d.ts.map +1 -1
  64. package/lib/cjs/SqliteChangesetReader.js +1 -1
  65. package/lib/cjs/SqliteChangesetReader.js.map +1 -1
  66. package/lib/cjs/TxnManager.d.ts +114 -4
  67. package/lib/cjs/TxnManager.d.ts.map +1 -1
  68. package/lib/cjs/TxnManager.js +196 -8
  69. package/lib/cjs/TxnManager.js.map +1 -1
  70. package/lib/cjs/ViewDefinition.d.ts +19 -7
  71. package/lib/cjs/ViewDefinition.d.ts.map +1 -1
  72. package/lib/cjs/ViewDefinition.js +77 -25
  73. package/lib/cjs/ViewDefinition.js.map +1 -1
  74. package/lib/cjs/ViewStore.d.ts.map +1 -1
  75. package/lib/cjs/ViewStore.js +63 -21
  76. package/lib/cjs/ViewStore.js.map +1 -1
  77. package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
  78. package/lib/cjs/core-backend.d.ts +3 -0
  79. package/lib/cjs/core-backend.d.ts.map +1 -1
  80. package/lib/cjs/core-backend.js +3 -0
  81. package/lib/cjs/core-backend.js.map +1 -1
  82. package/lib/cjs/internal/HubMock.d.ts +2 -0
  83. package/lib/cjs/internal/HubMock.d.ts.map +1 -1
  84. package/lib/cjs/internal/HubMock.js +7 -0
  85. package/lib/cjs/internal/HubMock.js.map +1 -1
  86. package/lib/cjs/internal/IntegrityCheck.d.ts +10 -10
  87. package/lib/cjs/internal/IntegrityCheck.js +22 -22
  88. package/lib/cjs/internal/IntegrityCheck.js.map +1 -1
  89. package/lib/cjs/internal/NoLocks.d.ts.map +1 -1
  90. package/lib/cjs/internal/NoLocks.js +6 -0
  91. package/lib/cjs/internal/NoLocks.js.map +1 -1
  92. package/lib/cjs/internal/ServerBasedLocks.d.ts +12 -0
  93. package/lib/cjs/internal/ServerBasedLocks.d.ts.map +1 -1
  94. package/lib/cjs/internal/ServerBasedLocks.js +285 -4
  95. package/lib/cjs/internal/ServerBasedLocks.js.map +1 -1
  96. package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
  97. package/lib/cjs/workspace/Settings.d.ts +6 -4
  98. package/lib/cjs/workspace/Settings.d.ts.map +1 -1
  99. package/lib/cjs/workspace/Settings.js.map +1 -1
  100. package/lib/esm/BackendHubAccess.d.ts +38 -0
  101. package/lib/esm/BackendHubAccess.d.ts.map +1 -1
  102. package/lib/esm/BackendHubAccess.js.map +1 -1
  103. package/lib/esm/BriefcaseManager.d.ts.map +1 -1
  104. package/lib/esm/BriefcaseManager.js +6 -3
  105. package/lib/esm/BriefcaseManager.js.map +1 -1
  106. package/lib/esm/ChangesetECAdaptor.d.ts +9 -1
  107. package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -1
  108. package/lib/esm/ChangesetECAdaptor.js +7 -1
  109. package/lib/esm/ChangesetECAdaptor.js.map +1 -1
  110. package/lib/esm/ChangesetReader.d.ts +186 -0
  111. package/lib/esm/ChangesetReader.d.ts.map +1 -0
  112. package/lib/esm/ChangesetReader.js +368 -0
  113. package/lib/esm/ChangesetReader.js.map +1 -0
  114. package/lib/esm/ChangesetReaderTypes.d.ts +120 -0
  115. package/lib/esm/ChangesetReaderTypes.d.ts.map +1 -0
  116. package/lib/esm/ChangesetReaderTypes.js +20 -0
  117. package/lib/esm/ChangesetReaderTypes.js.map +1 -0
  118. package/lib/esm/CloudSqlite.d.ts +1 -1
  119. package/lib/esm/CloudSqlite.d.ts.map +1 -1
  120. package/lib/esm/CloudSqlite.js +69 -14
  121. package/lib/esm/CloudSqlite.js.map +1 -1
  122. package/lib/esm/ConcurrentQuery.js.map +1 -1
  123. package/lib/esm/DevTools.js.map +1 -1
  124. package/lib/esm/DisplayStyle.js.map +1 -1
  125. package/lib/esm/ECSqlStatement.d.ts.map +1 -1
  126. package/lib/esm/ECSqlStatement.js.map +1 -1
  127. package/lib/esm/EditTxn.d.ts +55 -1
  128. package/lib/esm/EditTxn.d.ts.map +1 -1
  129. package/lib/esm/EditTxn.js +43 -1
  130. package/lib/esm/EditTxn.js.map +1 -1
  131. package/lib/esm/Element.d.ts +69 -0
  132. package/lib/esm/Element.d.ts.map +1 -1
  133. package/lib/esm/Element.js +36 -0
  134. package/lib/esm/Element.js.map +1 -1
  135. package/lib/esm/ElementGraphics.js.map +1 -1
  136. package/lib/esm/ExternalSource.js.map +1 -1
  137. package/lib/esm/GeographicCRSServices.d.ts +15 -0
  138. package/lib/esm/GeographicCRSServices.d.ts.map +1 -1
  139. package/lib/esm/GeographicCRSServices.js +12 -4
  140. package/lib/esm/GeographicCRSServices.js.map +1 -1
  141. package/lib/esm/IModelDb.d.ts +9 -1
  142. package/lib/esm/IModelDb.d.ts.map +1 -1
  143. package/lib/esm/IModelDb.js +26 -7
  144. package/lib/esm/IModelDb.js.map +1 -1
  145. package/lib/esm/IModelIncrementalSchemaLocater.js.map +1 -1
  146. package/lib/esm/IpcHost.d.ts.map +1 -1
  147. package/lib/esm/IpcHost.js +33 -13
  148. package/lib/esm/IpcHost.js.map +1 -1
  149. package/lib/esm/LockControl.d.ts +85 -1
  150. package/lib/esm/LockControl.d.ts.map +1 -1
  151. package/lib/esm/LockControl.js.map +1 -1
  152. package/lib/esm/Model.d.ts +34 -0
  153. package/lib/esm/Model.d.ts.map +1 -1
  154. package/lib/esm/Model.js +24 -0
  155. package/lib/esm/Model.js.map +1 -1
  156. package/lib/esm/PartialChangeUnifier.d.ts +77 -0
  157. package/lib/esm/PartialChangeUnifier.d.ts.map +1 -0
  158. package/lib/esm/PartialChangeUnifier.js +230 -0
  159. package/lib/esm/PartialChangeUnifier.js.map +1 -0
  160. package/lib/esm/SheetIndex.js.map +1 -1
  161. package/lib/esm/SqliteChangesetReader.d.ts.map +1 -1
  162. package/lib/esm/SqliteChangesetReader.js +1 -1
  163. package/lib/esm/SqliteChangesetReader.js.map +1 -1
  164. package/lib/esm/TxnManager.d.ts +114 -4
  165. package/lib/esm/TxnManager.d.ts.map +1 -1
  166. package/lib/esm/TxnManager.js +196 -8
  167. package/lib/esm/TxnManager.js.map +1 -1
  168. package/lib/esm/ViewDefinition.d.ts +19 -7
  169. package/lib/esm/ViewDefinition.d.ts.map +1 -1
  170. package/lib/esm/ViewDefinition.js +78 -26
  171. package/lib/esm/ViewDefinition.js.map +1 -1
  172. package/lib/esm/ViewStore.d.ts.map +1 -1
  173. package/lib/esm/ViewStore.js +64 -22
  174. package/lib/esm/ViewStore.js.map +1 -1
  175. package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
  176. package/lib/esm/core-backend.d.ts +3 -0
  177. package/lib/esm/core-backend.d.ts.map +1 -1
  178. package/lib/esm/core-backend.js +3 -0
  179. package/lib/esm/core-backend.js.map +1 -1
  180. package/lib/esm/internal/HubMock.d.ts +2 -0
  181. package/lib/esm/internal/HubMock.d.ts.map +1 -1
  182. package/lib/esm/internal/HubMock.js +7 -0
  183. package/lib/esm/internal/HubMock.js.map +1 -1
  184. package/lib/esm/internal/IntegrityCheck.d.ts +10 -10
  185. package/lib/esm/internal/IntegrityCheck.js +22 -22
  186. package/lib/esm/internal/IntegrityCheck.js.map +1 -1
  187. package/lib/esm/internal/NoLocks.d.ts.map +1 -1
  188. package/lib/esm/internal/NoLocks.js +6 -0
  189. package/lib/esm/internal/NoLocks.js.map +1 -1
  190. package/lib/esm/internal/ServerBasedLocks.d.ts +12 -0
  191. package/lib/esm/internal/ServerBasedLocks.d.ts.map +1 -1
  192. package/lib/esm/internal/ServerBasedLocks.js +286 -5
  193. package/lib/esm/internal/ServerBasedLocks.js.map +1 -1
  194. package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
  195. package/lib/esm/test/ElementDrivesElement.test.d.ts.map +1 -1
  196. package/lib/esm/test/ElementDrivesElement.test.js.map +1 -1
  197. package/lib/esm/test/IModelTestUtils.d.ts +1 -0
  198. package/lib/esm/test/IModelTestUtils.d.ts.map +1 -1
  199. package/lib/esm/test/IModelTestUtils.js +5 -0
  200. package/lib/esm/test/IModelTestUtils.js.map +1 -1
  201. package/lib/esm/test/IpcHost.test.js +112 -0
  202. package/lib/esm/test/IpcHost.test.js.map +1 -1
  203. package/lib/esm/test/annotations/LeaderGeometry.test.js +0 -1
  204. package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
  205. package/lib/esm/test/ecsql/dataset/ECSqlDatasets.js.map +1 -1
  206. package/lib/esm/test/ecsql/src/ECSqlTestRunner.test.js.map +1 -1
  207. package/lib/esm/test/element/DeleteDefinitionElements.test.js +819 -26
  208. package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
  209. package/lib/esm/test/element/ElementRoundTrip.test.js +144 -3
  210. package/lib/esm/test/element/ElementRoundTrip.test.js.map +1 -1
  211. package/lib/esm/test/element/SheetInformationAspect.test.js.map +1 -1
  212. package/lib/esm/test/hubaccess/Rebase.test.js +1 -1
  213. package/lib/esm/test/hubaccess/Rebase.test.js.map +1 -1
  214. package/lib/esm/test/imodel/IModel.test.js +1 -1
  215. package/lib/esm/test/imodel/IModel.test.js.map +1 -1
  216. package/lib/esm/test/imodel/SchemaXmlImport.test.js +64 -0
  217. package/lib/esm/test/imodel/SchemaXmlImport.test.js.map +1 -1
  218. package/lib/esm/test/misc/GeoServices.test.js +43 -1
  219. package/lib/esm/test/misc/GeoServices.test.js.map +1 -1
  220. package/lib/esm/test/sheetindex/SheetIndex.test.js.map +1 -1
  221. package/lib/esm/test/standalone/ChangesetReader.test.js +4184 -1654
  222. package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
  223. package/lib/esm/test/standalone/DeleteElements.test.d.ts +2 -0
  224. package/lib/esm/test/standalone/DeleteElements.test.d.ts.map +1 -0
  225. package/lib/esm/test/standalone/DeleteElements.test.js +625 -0
  226. package/lib/esm/test/standalone/DeleteElements.test.js.map +1 -0
  227. package/lib/esm/test/standalone/GeometryStream.test.js.map +1 -1
  228. package/lib/esm/test/standalone/IntegrityCheck.test.js +214 -5
  229. package/lib/esm/test/standalone/IntegrityCheck.test.js.map +1 -1
  230. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.d.ts +2 -0
  231. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.d.ts.map +1 -0
  232. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js +1862 -0
  233. package/lib/esm/test/standalone/SQliteChangesetReaderAndChangesetECAdaptor.test.js.map +1 -0
  234. package/lib/esm/test/standalone/ServerBasedLocks.test.js +907 -3
  235. package/lib/esm/test/standalone/ServerBasedLocks.test.js.map +1 -1
  236. package/lib/esm/test/standalone/TxnManager.test.js +90 -0
  237. package/lib/esm/test/standalone/TxnManager.test.js.map +1 -1
  238. package/lib/esm/test/standalone/ViewDefinition.test.js +18 -7
  239. package/lib/esm/test/standalone/ViewDefinition.test.js.map +1 -1
  240. package/lib/esm/test/standalone/Workspace.test.js.map +1 -1
  241. package/lib/esm/workspace/Settings.d.ts +6 -4
  242. package/lib/esm/workspace/Settings.d.ts.map +1 -1
  243. package/lib/esm/workspace/Settings.js.map +1 -1
  244. package/package.json +15 -15
@@ -19,61 +19,61 @@ exports.integrityCheckTypeMap = {
19
19
  name: "Check Data Columns",
20
20
  resultType: "CheckDataColumnsResultRow",
21
21
  sqlCommand: "check_data_columns",
22
- sqlQuery: `PRAGMA integrity_check(check_data_columns) options enable_experimental_features`,
22
+ sqlQuery: `PRAGMA integrity_check(check_data_columns) ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES`,
23
23
  },
24
24
  checkECProfile: {
25
25
  name: "Check EC Profile",
26
26
  resultType: "CheckECProfileResultRow",
27
27
  sqlCommand: "check_ec_profile",
28
- sqlQuery: `PRAGMA integrity_check(check_ec_profile) options enable_experimental_features`,
28
+ sqlQuery: `PRAGMA integrity_check(check_ec_profile) ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES`,
29
29
  },
30
30
  checkNavigationClassIds: {
31
31
  name: "Check Navigation Class Ids",
32
32
  resultType: "CheckNavClassIdsResultRow",
33
33
  sqlCommand: "check_nav_class_ids",
34
- sqlQuery: `PRAGMA integrity_check(check_nav_class_ids) options enable_experimental_features`,
34
+ sqlQuery: `PRAGMA integrity_check(check_nav_class_ids) ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES`,
35
35
  },
36
36
  checkNavigationIds: {
37
37
  name: "Check Navigation Ids",
38
38
  resultType: "CheckNavIdsResultRow",
39
39
  sqlCommand: "check_nav_ids",
40
- sqlQuery: `PRAGMA integrity_check(check_nav_ids) options enable_experimental_features`,
40
+ sqlQuery: `PRAGMA integrity_check(check_nav_ids) ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES`,
41
41
  },
42
42
  checkLinktableForeignKeyClassIds: {
43
43
  name: "Check Link Table Foreign Key Class Ids",
44
44
  resultType: "CheckLinkTableFkClassIdsResultRow",
45
45
  sqlCommand: "check_linktable_fk_class_ids",
46
- sqlQuery: `PRAGMA integrity_check(check_linktable_fk_class_ids) options enable_experimental_features`,
46
+ sqlQuery: `PRAGMA integrity_check(check_linktable_fk_class_ids) ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES`,
47
47
  },
48
48
  checkLinktableForeignKeyIds: {
49
49
  name: "Check Link Table Foreign Key Ids",
50
50
  resultType: "CheckLinkTableFkIdsResultRow",
51
51
  sqlCommand: "check_linktable_fk_ids",
52
- sqlQuery: `PRAGMA integrity_check(check_linktable_fk_ids) options enable_experimental_features`,
52
+ sqlQuery: `PRAGMA integrity_check(check_linktable_fk_ids) ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES`,
53
53
  },
54
54
  checkClassIds: {
55
55
  name: "Check Class Ids",
56
56
  resultType: "CheckClassIdsResultRow",
57
57
  sqlCommand: "check_class_ids",
58
- sqlQuery: `PRAGMA integrity_check(check_class_ids) options enable_experimental_features`,
58
+ sqlQuery: `PRAGMA integrity_check(check_class_ids) ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES`,
59
59
  },
60
60
  checkDataSchema: {
61
61
  name: "Check Data Schema",
62
62
  resultType: "CheckDataSchemaResultRow",
63
63
  sqlCommand: "check_data_schema",
64
- sqlQuery: `PRAGMA integrity_check(check_data_schema) options enable_experimental_features`,
64
+ sqlQuery: `PRAGMA integrity_check(check_data_schema) ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES`,
65
65
  },
66
66
  checkSchemaLoad: {
67
67
  name: "Check Schema Load",
68
68
  resultType: "CheckSchemaLoadResultRow",
69
69
  sqlCommand: "check_schema_load",
70
- sqlQuery: `PRAGMA integrity_check(check_schema_load) options enable_experimental_features`,
70
+ sqlQuery: `PRAGMA integrity_check(check_schema_load) ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES`,
71
71
  },
72
72
  checkMissingChildRows: {
73
73
  name: "Check Missing Child Rows",
74
74
  resultType: "CheckMissingChildRowsResultRow",
75
75
  sqlCommand: "check_missing_child_rows",
76
- sqlQuery: `PRAGMA integrity_check(check_missing_child_rows) options enable_experimental_features`,
76
+ sqlQuery: `PRAGMA integrity_check(check_missing_child_rows) ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES`,
77
77
  },
78
78
  };
79
79
  /**
@@ -106,9 +106,9 @@ function getIntegrityCheckName(check) {
106
106
  * @internal
107
107
  */
108
108
  async function performQuickIntegrityCheck(iModel) {
109
- const integrityCheckQuery = "PRAGMA integrity_check options enable_experimental_features";
109
+ const integrityCheckQuery = "PRAGMA integrity_check ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES";
110
110
  const integrityCheckResults = [];
111
- for await (const row of iModel.createQueryReader(integrityCheckQuery)) {
111
+ for await (const row of iModel.createQueryReader(integrityCheckQuery, undefined, { usePrimaryConn: true })) {
112
112
  integrityCheckResults.push({ check: getIntegrityCheckName(row.check), passed: row.result, elapsedSeconds: row.elapsed_sec });
113
113
  }
114
114
  ;
@@ -118,70 +118,70 @@ async function performSpecificIntegrityCheck(iModel, check) {
118
118
  switch (check) {
119
119
  case "checkDataColumns": {
120
120
  const results = [];
121
- for await (const row of iModel.createQueryReader(exports.integrityCheckTypeMap.checkDataColumns.sqlQuery)) {
121
+ for await (const row of iModel.createQueryReader(exports.integrityCheckTypeMap.checkDataColumns.sqlQuery, undefined, { usePrimaryConn: true })) {
122
122
  results.push({ sno: row.sno, table: row.table, column: row.column });
123
123
  }
124
124
  return results;
125
125
  }
126
126
  case "checkECProfile": {
127
127
  const results = [];
128
- for await (const row of iModel.createQueryReader(exports.integrityCheckTypeMap.checkECProfile.sqlQuery)) {
128
+ for await (const row of iModel.createQueryReader(exports.integrityCheckTypeMap.checkECProfile.sqlQuery, undefined, { usePrimaryConn: true })) {
129
129
  results.push({ sno: row.sno, type: row.type, name: row.name, issue: row.issue });
130
130
  }
131
131
  return results;
132
132
  }
133
133
  case "checkNavigationClassIds": {
134
134
  const results = [];
135
- for await (const row of iModel.createQueryReader(exports.integrityCheckTypeMap.checkNavigationClassIds.sqlQuery)) {
135
+ for await (const row of iModel.createQueryReader(exports.integrityCheckTypeMap.checkNavigationClassIds.sqlQuery, undefined, { usePrimaryConn: true })) {
136
136
  results.push({ sno: row.sno, id: row.id, class: row.class, property: row.property, navId: row.nav_id, navClassId: row.nav_classId });
137
137
  }
138
138
  return results;
139
139
  }
140
140
  case "checkNavigationIds": {
141
141
  const results = [];
142
- for await (const row of iModel.createQueryReader(exports.integrityCheckTypeMap.checkNavigationIds.sqlQuery)) {
142
+ for await (const row of iModel.createQueryReader(exports.integrityCheckTypeMap.checkNavigationIds.sqlQuery, undefined, { usePrimaryConn: true })) {
143
143
  results.push({ sno: row.sno, id: row.id, class: row.class, property: row.property, navId: row.nav_id, primaryClass: row.primary_class });
144
144
  }
145
145
  return results;
146
146
  }
147
147
  case "checkLinktableForeignKeyClassIds": {
148
148
  const results = [];
149
- for await (const row of iModel.createQueryReader(exports.integrityCheckTypeMap.checkLinktableForeignKeyClassIds.sqlQuery)) {
149
+ for await (const row of iModel.createQueryReader(exports.integrityCheckTypeMap.checkLinktableForeignKeyClassIds.sqlQuery, undefined, { usePrimaryConn: true })) {
150
150
  results.push({ sno: row.sno, id: row.id, relationship: row.relationship, property: row.property, keyId: row.key_id, keyClassId: row.key_classId });
151
151
  }
152
152
  return results;
153
153
  }
154
154
  case "checkLinktableForeignKeyIds": {
155
155
  const results = [];
156
- for await (const row of iModel.createQueryReader(exports.integrityCheckTypeMap.checkLinktableForeignKeyIds.sqlQuery)) {
156
+ for await (const row of iModel.createQueryReader(exports.integrityCheckTypeMap.checkLinktableForeignKeyIds.sqlQuery, undefined, { usePrimaryConn: true })) {
157
157
  results.push({ sno: row.sno, id: row.id, relationship: row.relationship, property: row.property, keyId: row.key_id, primaryClass: row.primary_class });
158
158
  }
159
159
  return results;
160
160
  }
161
161
  case "checkClassIds": {
162
162
  const results = [];
163
- for await (const row of iModel.createQueryReader(exports.integrityCheckTypeMap.checkClassIds.sqlQuery)) {
163
+ for await (const row of iModel.createQueryReader(exports.integrityCheckTypeMap.checkClassIds.sqlQuery, undefined, { usePrimaryConn: true })) {
164
164
  results.push({ sno: row.sno, class: row.class, id: row.id, classId: row.class_id, type: row.type });
165
165
  }
166
166
  return results;
167
167
  }
168
168
  case "checkDataSchema": {
169
169
  const results = [];
170
- for await (const row of iModel.createQueryReader(exports.integrityCheckTypeMap.checkDataSchema.sqlQuery)) {
170
+ for await (const row of iModel.createQueryReader(exports.integrityCheckTypeMap.checkDataSchema.sqlQuery, undefined, { usePrimaryConn: true })) {
171
171
  results.push({ sno: row.sno, type: row.type, name: row.name });
172
172
  }
173
173
  return results;
174
174
  }
175
175
  case "checkSchemaLoad": {
176
176
  const results = [];
177
- for await (const row of iModel.createQueryReader(exports.integrityCheckTypeMap.checkSchemaLoad.sqlQuery)) {
177
+ for await (const row of iModel.createQueryReader(exports.integrityCheckTypeMap.checkSchemaLoad.sqlQuery, undefined, { usePrimaryConn: true })) {
178
178
  results.push({ sno: row.sno, schema: row.schema });
179
179
  }
180
180
  return results;
181
181
  }
182
182
  case "checkMissingChildRows": {
183
183
  const results = [];
184
- for await (const row of iModel.createQueryReader(exports.integrityCheckTypeMap.checkMissingChildRows.sqlQuery)) {
184
+ for await (const row of iModel.createQueryReader(exports.integrityCheckTypeMap.checkMissingChildRows.sqlQuery, undefined, { usePrimaryConn: true })) {
185
185
  results.push({ sno: row.sno, class: row.class, id: row.id, classId: row.class_id, missingRowInTables: row.MissingRowInTables });
186
186
  }
187
187
  return results;
@@ -1 +1 @@
1
- {"version":3,"file":"IntegrityCheck.js","sourceRoot":"","sources":["../../../src/internal/IntegrityCheck.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\r\nimport { IModelStatus } from \"@itwin/core-bentley\";\r\nimport { IModelError } from \"@itwin/core-common\";\r\nimport { IModelDb } from \"../IModelDb\";\r\n\r\n/**\r\n * Information about each integrity check type, including the name, expected result type, and SQL query to execute\r\n * @internal\r\n */\r\nexport const integrityCheckTypeMap = {\r\n checkDataColumns: {\r\n name: \"Check Data Columns\",\r\n resultType: \"CheckDataColumnsResultRow\",\r\n sqlCommand: \"check_data_columns\",\r\n sqlQuery: `PRAGMA integrity_check(check_data_columns) options enable_experimental_features`,\r\n },\r\n checkECProfile: {\r\n name: \"Check EC Profile\",\r\n resultType: \"CheckECProfileResultRow\",\r\n sqlCommand: \"check_ec_profile\",\r\n sqlQuery: `PRAGMA integrity_check(check_ec_profile) options enable_experimental_features`,\r\n },\r\n checkNavigationClassIds: {\r\n name: \"Check Navigation Class Ids\",\r\n resultType: \"CheckNavClassIdsResultRow\",\r\n sqlCommand: \"check_nav_class_ids\",\r\n sqlQuery: `PRAGMA integrity_check(check_nav_class_ids) options enable_experimental_features`,\r\n },\r\n checkNavigationIds: {\r\n name: \"Check Navigation Ids\",\r\n resultType: \"CheckNavIdsResultRow\",\r\n sqlCommand: \"check_nav_ids\",\r\n sqlQuery: `PRAGMA integrity_check(check_nav_ids) options enable_experimental_features`,\r\n },\r\n checkLinktableForeignKeyClassIds: {\r\n name: \"Check Link Table Foreign Key Class Ids\",\r\n resultType: \"CheckLinkTableFkClassIdsResultRow\",\r\n sqlCommand: \"check_linktable_fk_class_ids\",\r\n sqlQuery: `PRAGMA integrity_check(check_linktable_fk_class_ids) options enable_experimental_features`,\r\n },\r\n checkLinktableForeignKeyIds: {\r\n name: \"Check Link Table Foreign Key Ids\",\r\n resultType: \"CheckLinkTableFkIdsResultRow\",\r\n sqlCommand: \"check_linktable_fk_ids\",\r\n sqlQuery: `PRAGMA integrity_check(check_linktable_fk_ids) options enable_experimental_features`,\r\n },\r\n checkClassIds: {\r\n name: \"Check Class Ids\",\r\n resultType: \"CheckClassIdsResultRow\",\r\n sqlCommand: \"check_class_ids\",\r\n sqlQuery: `PRAGMA integrity_check(check_class_ids) options enable_experimental_features`,\r\n },\r\n checkDataSchema: {\r\n name: \"Check Data Schema\",\r\n resultType: \"CheckDataSchemaResultRow\",\r\n sqlCommand: \"check_data_schema\",\r\n sqlQuery: `PRAGMA integrity_check(check_data_schema) options enable_experimental_features`,\r\n },\r\n checkSchemaLoad: {\r\n name: \"Check Schema Load\",\r\n resultType: \"CheckSchemaLoadResultRow\",\r\n sqlCommand: \"check_schema_load\",\r\n sqlQuery: `PRAGMA integrity_check(check_schema_load) options enable_experimental_features`,\r\n },\r\n checkMissingChildRows: {\r\n name: \"Check Missing Child Rows\",\r\n resultType: \"CheckMissingChildRowsResultRow\",\r\n sqlCommand: \"check_missing_child_rows\",\r\n sqlQuery: `PRAGMA integrity_check(check_missing_child_rows) options enable_experimental_features`,\r\n },\r\n} as const;\r\n\r\n/**\r\n * Type representing the keys of the integrityCheckType map, which correspond to the different types of integrity checks that can be performed.\r\n */\r\nexport type IntegrityCheckKey = keyof typeof integrityCheckTypeMap;\r\n\r\n/** Map of integrity check keys to their result row types */\r\ninterface IntegrityCheckResultTypeMap {\r\n checkDataColumns: CheckDataColumnsResultRow;\r\n checkECProfile: CheckECProfileResultRow;\r\n checkNavigationClassIds: CheckNavClassIdsResultRow;\r\n checkNavigationIds: CheckNavIdsResultRow;\r\n checkLinktableForeignKeyClassIds: CheckLinkTableFkClassIdsResultRow;\r\n checkLinktableForeignKeyIds: CheckLinkTableFkIdsResultRow;\r\n checkClassIds: CheckClassIdsResultRow;\r\n checkDataSchema: CheckDataSchemaResultRow;\r\n checkSchemaLoad: CheckSchemaLoadResultRow;\r\n checkMissingChildRows: CheckMissingChildRowsResultRow;\r\n}\r\n\r\n/** Checks the Map to give the return type of a specific integrity check */\r\ntype IntegrityCheckResultRow<K extends IntegrityCheckKey> = IntegrityCheckResultTypeMap[K];\r\n\r\n/**\r\n * Return type for quick integrity check\r\n */\r\nexport interface QuickIntegrityCheckResultRow {\r\n check: string;\r\n passed: boolean;\r\n elapsedSeconds: string;\r\n}\r\n\r\n/**\r\n * Return type for Check Data Columns integrity check\r\n */\r\nexport interface CheckDataColumnsResultRow {\r\n sno: number;\r\n table: string;\r\n column: string;\r\n}\r\n\r\n/**\r\n * Return type for Check EC Profile integrity check\r\n */\r\nexport interface CheckECProfileResultRow {\r\n sno: number;\r\n type: string;\r\n name: string;\r\n issue: string;\r\n}\r\n\r\n/**\r\n * Return type for Check Navigation Class Ids integrity check\r\n */\r\nexport interface CheckNavClassIdsResultRow {\r\n sno: number;\r\n id: string;\r\n class: string;\r\n property: string;\r\n navId: string;\r\n navClassId: string;\r\n}\r\n\r\n/**\r\n * Return type for Check Navigation Ids integrity check\r\n */\r\nexport interface CheckNavIdsResultRow {\r\n sno: number;\r\n id: string;\r\n class: string;\r\n property: string;\r\n navId: string;\r\n primaryClass: string;\r\n}\r\n\r\n/**\r\n * Return type for Check Link Table Foreign Key Class Ids integrity check\r\n */\r\nexport interface CheckLinkTableFkClassIdsResultRow {\r\n sno: number;\r\n id: string;\r\n relationship: string;\r\n property: string;\r\n keyId: string;\r\n keyClassId: string;\r\n}\r\n\r\n/**\r\n * Return type for Check Link Table Foreign Key Ids integrity check\r\n */\r\nexport interface CheckLinkTableFkIdsResultRow {\r\n sno: number;\r\n id: string;\r\n relationship: string;\r\n property: string;\r\n keyId: string;\r\n primaryClass: string;\r\n}\r\n\r\n/**\r\n * Return type for Check Class Ids integrity check\r\n */\r\nexport interface CheckClassIdsResultRow {\r\n sno: number;\r\n class: string;\r\n id: string;\r\n classId: string;\r\n type: string;\r\n}\r\n\r\n/**\r\n * Return type for Check Data Schema integrity check\r\n */\r\nexport interface CheckDataSchemaResultRow {\r\n sno: number;\r\n type: string;\r\n name: string;\r\n}\r\n\r\n/**\r\n * Return type for Check Schema Load integrity check\r\n */\r\nexport interface CheckSchemaLoadResultRow {\r\n sno: number;\r\n schema: string;\r\n}\r\n\r\n/**\r\n * Return type for Check Missing Child Rows integrity check\r\n */\r\nexport interface CheckMissingChildRowsResultRow {\r\n sno: number;\r\n class: string;\r\n id: string;\r\n classId: string;\r\n missingRowInTables: string;\r\n}\r\n\r\n/**\r\n * Return type for integrity check results, including the check name, whether it passed, and the specific results (if any)\r\n */\r\nexport interface IntegrityCheckResult {\r\n /** The name of the integrity check that was performed */\r\n check: string;\r\n /** Whether the integrity check passed (i.e. no issues were found = true) */\r\n passed: boolean;\r\n /** The specific results returned by the integrity check, which may include details about any issues that were found.\r\n * In the case where issues are found, this will be an array of result rows specific to the type of check that was performed,\r\n * or an array of quick integrity check results if it was a quick check. */\r\n results: IntegrityCheckResultRow<IntegrityCheckKey>[] | QuickIntegrityCheckResultRow[];\r\n}\r\n\r\n/**\r\n * Gets the user-friendly name of an integrity check based on its key or SQL command.\r\n * It first attempts to find a direct match for the key in the integrityCheckTypeMap. If not found, it searches for a match based on the SQL command.\r\n * If still not found, it returns the original check string.\r\n * @param check - The integrity check key or SQL command to get the name of\r\n * @returns The user-friendly name of the integrity check, or the original check string if no match is found\r\n * @internal\r\n */\r\nexport function getIntegrityCheckName(check: string): string {\r\n // First try direct lookup by key\r\n const directLookup = integrityCheckTypeMap[check as IntegrityCheckKey];\r\n if (directLookup) {\r\n return directLookup.name;\r\n }\r\n // If not found, search by sqlCommand\r\n for (const [, value] of Object.entries(integrityCheckTypeMap)) {\r\n if (value.sqlCommand === check) {\r\n return value.name;\r\n }\r\n }\r\n // Fallback to the original check string\r\n return check;\r\n}\r\n\r\n/**\r\n * Performs a quick integrity check on the given iModel.\r\n * @param iModel The IModelDb instance to perform the integrity check on\r\n * @returns An array of results for each check performed, including the check name, whether it passed, and the elapsed time in seconds\r\n * @internal\r\n */\r\nexport async function performQuickIntegrityCheck(iModel: IModelDb): Promise<QuickIntegrityCheckResultRow[]> {\r\n const integrityCheckQuery = \"PRAGMA integrity_check options enable_experimental_features\";\r\n const integrityCheckResults: QuickIntegrityCheckResultRow[] = [];\r\n for await (const row of iModel.createQueryReader(integrityCheckQuery)) {\r\n integrityCheckResults.push({ check: getIntegrityCheckName(row.check), passed: row.result, elapsedSeconds: row.elapsed_sec});\r\n };\r\n return integrityCheckResults;\r\n}\r\n\r\n/**\r\n * Performs a specific integrity check on the given iModel based on the provided check key, and returns the results specific to that check type.\r\n * @param iModel The IModelDb instance to perform the integrity check on\r\n * @param check The key of the specific integrity check to perform\r\n * @return An array of results specific to the integrity check that was performed. The type of the result rows will depend on the check that was executed.\r\n * @throws IModelError with status BadRequest if an unknown integrity check key is provided\r\n * @internal\r\n */\r\nexport async function performSpecificIntegrityCheck(iModel: IModelDb, check: \"checkDataColumns\"): Promise<IntegrityCheckResultRow<\"checkDataColumns\">[]>;\r\nexport async function performSpecificIntegrityCheck(iModel: IModelDb, check: \"checkECProfile\"): Promise<IntegrityCheckResultRow<\"checkECProfile\">[]>;\r\nexport async function performSpecificIntegrityCheck(iModel: IModelDb, check: \"checkNavigationClassIds\"): Promise<IntegrityCheckResultRow<\"checkNavigationClassIds\">[]>;\r\nexport async function performSpecificIntegrityCheck(iModel: IModelDb, check: \"checkNavigationIds\"): Promise<IntegrityCheckResultRow<\"checkNavigationIds\">[]>;\r\nexport async function performSpecificIntegrityCheck(iModel: IModelDb, check: \"checkLinktableForeignKeyClassIds\"): Promise<IntegrityCheckResultRow<\"checkLinktableForeignKeyClassIds\">[]>;\r\nexport async function performSpecificIntegrityCheck(iModel: IModelDb, check: \"checkLinktableForeignKeyIds\"): Promise<IntegrityCheckResultRow<\"checkLinktableForeignKeyIds\">[]>;\r\nexport async function performSpecificIntegrityCheck(iModel: IModelDb, check: \"checkClassIds\"): Promise<IntegrityCheckResultRow<\"checkClassIds\">[]>;\r\nexport async function performSpecificIntegrityCheck(iModel: IModelDb, check: \"checkDataSchema\"): Promise<IntegrityCheckResultRow<\"checkDataSchema\">[]>;\r\nexport async function performSpecificIntegrityCheck(iModel: IModelDb, check: \"checkSchemaLoad\"): Promise<IntegrityCheckResultRow<\"checkSchemaLoad\">[]>;\r\nexport async function performSpecificIntegrityCheck(iModel: IModelDb, check: \"checkMissingChildRows\"): Promise<IntegrityCheckResultRow<\"checkMissingChildRows\">[]>;\r\nexport async function performSpecificIntegrityCheck<K extends IntegrityCheckKey>(iModel: IModelDb, check: K): Promise<IntegrityCheckResultRow<K>[]>;\r\nexport async function performSpecificIntegrityCheck(iModel: IModelDb, check: IntegrityCheckKey): Promise<IntegrityCheckResultRow<IntegrityCheckKey>[]> {\r\n switch (check) {\r\n case \"checkDataColumns\": {\r\n const results: CheckDataColumnsResultRow[] = [];\r\n for await (const row of iModel.createQueryReader(integrityCheckTypeMap.checkDataColumns.sqlQuery)) {\r\n results.push({ sno: row.sno, table: row.table, column: row.column });\r\n }\r\n return results;\r\n }\r\n case \"checkECProfile\": {\r\n const results: CheckECProfileResultRow[] = [];\r\n for await (const row of iModel.createQueryReader(integrityCheckTypeMap.checkECProfile.sqlQuery)) {\r\n results.push({ sno: row.sno, type: row.type, name: row.name, issue: row.issue });\r\n }\r\n return results;\r\n }\r\n case \"checkNavigationClassIds\": {\r\n const results: CheckNavClassIdsResultRow[] = [];\r\n for await (const row of iModel.createQueryReader(integrityCheckTypeMap.checkNavigationClassIds.sqlQuery)) {\r\n results.push({ sno: row.sno, id: row.id, class: row.class, property: row.property, navId: row.nav_id, navClassId: row.nav_classId });\r\n }\r\n return results;\r\n }\r\n case \"checkNavigationIds\": {\r\n const results: CheckNavIdsResultRow[] = [];\r\n for await (const row of iModel.createQueryReader(integrityCheckTypeMap.checkNavigationIds.sqlQuery)) {\r\n results.push({ sno: row.sno, id: row.id, class: row.class, property: row.property, navId: row.nav_id, primaryClass: row.primary_class });\r\n }\r\n return results;\r\n }\r\n case \"checkLinktableForeignKeyClassIds\": {\r\n const results: CheckLinkTableFkClassIdsResultRow[] = [];\r\n for await (const row of iModel.createQueryReader(integrityCheckTypeMap.checkLinktableForeignKeyClassIds.sqlQuery)) {\r\n results.push({ sno: row.sno, id: row.id, relationship: row.relationship, property: row.property, keyId: row.key_id, keyClassId: row.key_classId });\r\n }\r\n return results;\r\n }\r\n case \"checkLinktableForeignKeyIds\": {\r\n const results: CheckLinkTableFkIdsResultRow[] = [];\r\n for await (const row of iModel.createQueryReader(integrityCheckTypeMap.checkLinktableForeignKeyIds.sqlQuery)) {\r\n results.push({ sno: row.sno, id: row.id, relationship: row.relationship, property: row.property, keyId: row.key_id, primaryClass: row.primary_class });\r\n }\r\n return results;\r\n }\r\n case \"checkClassIds\": {\r\n const results: CheckClassIdsResultRow[] = [];\r\n for await (const row of iModel.createQueryReader(integrityCheckTypeMap.checkClassIds.sqlQuery)) {\r\n results.push({ sno: row.sno, class: row.class, id: row.id, classId: row.class_id, type: row.type });\r\n }\r\n return results;\r\n }\r\n case \"checkDataSchema\": {\r\n const results: CheckDataSchemaResultRow[] = [];\r\n for await (const row of iModel.createQueryReader(integrityCheckTypeMap.checkDataSchema.sqlQuery)) {\r\n results.push({ sno: row.sno, type: row.type, name: row.name });\r\n }\r\n return results;\r\n }\r\n case \"checkSchemaLoad\": {\r\n const results: CheckSchemaLoadResultRow[] = [];\r\n for await (const row of iModel.createQueryReader(integrityCheckTypeMap.checkSchemaLoad.sqlQuery)) {\r\n results.push({ sno: row.sno, schema: row.schema });\r\n }\r\n return results;\r\n }\r\n case \"checkMissingChildRows\": {\r\n const results: CheckMissingChildRowsResultRow[] = [];\r\n for await (const row of iModel.createQueryReader(integrityCheckTypeMap.checkMissingChildRows.sqlQuery)) {\r\n results.push({ sno: row.sno, class: row.class, id: row.id, classId: row.class_id, missingRowInTables: row.MissingRowInTables });\r\n }\r\n return results;\r\n }\r\n default:\r\n throw new IModelError(IModelStatus.BadRequest, `Unknown integrity check type`);\r\n }\r\n}"]}
1
+ {"version":3,"file":"IntegrityCheck.js","sourceRoot":"","sources":["../../../src/internal/IntegrityCheck.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\r\nimport { IModelStatus } from \"@itwin/core-bentley\";\r\nimport { IModelError } from \"@itwin/core-common\";\r\nimport { IModelDb } from \"../IModelDb\";\r\n\r\n/**\r\n * Information about each integrity check type, including the name, expected result type, and SQL query to execute\r\n * @internal\r\n */\r\nexport const integrityCheckTypeMap = {\r\n checkDataColumns: {\r\n name: \"Check Data Columns\",\r\n resultType: \"CheckDataColumnsResultRow\",\r\n sqlCommand: \"check_data_columns\",\r\n sqlQuery: `PRAGMA integrity_check(check_data_columns) ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES`,\r\n },\r\n checkECProfile: {\r\n name: \"Check EC Profile\",\r\n resultType: \"CheckECProfileResultRow\",\r\n sqlCommand: \"check_ec_profile\",\r\n sqlQuery: `PRAGMA integrity_check(check_ec_profile) ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES`,\r\n },\r\n checkNavigationClassIds: {\r\n name: \"Check Navigation Class Ids\",\r\n resultType: \"CheckNavClassIdsResultRow\",\r\n sqlCommand: \"check_nav_class_ids\",\r\n sqlQuery: `PRAGMA integrity_check(check_nav_class_ids) ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES`,\r\n },\r\n checkNavigationIds: {\r\n name: \"Check Navigation Ids\",\r\n resultType: \"CheckNavIdsResultRow\",\r\n sqlCommand: \"check_nav_ids\",\r\n sqlQuery: `PRAGMA integrity_check(check_nav_ids) ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES`,\r\n },\r\n checkLinktableForeignKeyClassIds: {\r\n name: \"Check Link Table Foreign Key Class Ids\",\r\n resultType: \"CheckLinkTableFkClassIdsResultRow\",\r\n sqlCommand: \"check_linktable_fk_class_ids\",\r\n sqlQuery: `PRAGMA integrity_check(check_linktable_fk_class_ids) ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES`,\r\n },\r\n checkLinktableForeignKeyIds: {\r\n name: \"Check Link Table Foreign Key Ids\",\r\n resultType: \"CheckLinkTableFkIdsResultRow\",\r\n sqlCommand: \"check_linktable_fk_ids\",\r\n sqlQuery: `PRAGMA integrity_check(check_linktable_fk_ids) ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES`,\r\n },\r\n checkClassIds: {\r\n name: \"Check Class Ids\",\r\n resultType: \"CheckClassIdsResultRow\",\r\n sqlCommand: \"check_class_ids\",\r\n sqlQuery: `PRAGMA integrity_check(check_class_ids) ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES`,\r\n },\r\n checkDataSchema: {\r\n name: \"Check Data Schema\",\r\n resultType: \"CheckDataSchemaResultRow\",\r\n sqlCommand: \"check_data_schema\",\r\n sqlQuery: `PRAGMA integrity_check(check_data_schema) ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES`,\r\n },\r\n checkSchemaLoad: {\r\n name: \"Check Schema Load\",\r\n resultType: \"CheckSchemaLoadResultRow\",\r\n sqlCommand: \"check_schema_load\",\r\n sqlQuery: `PRAGMA integrity_check(check_schema_load) ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES`,\r\n },\r\n checkMissingChildRows: {\r\n name: \"Check Missing Child Rows\",\r\n resultType: \"CheckMissingChildRowsResultRow\",\r\n sqlCommand: \"check_missing_child_rows\",\r\n sqlQuery: `PRAGMA integrity_check(check_missing_child_rows) ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES`,\r\n },\r\n} as const;\r\n\r\n/**\r\n * Type representing the keys of the integrityCheckType map, which correspond to the different types of integrity checks that can be performed.\r\n */\r\nexport type IntegrityCheckKey = keyof typeof integrityCheckTypeMap;\r\n\r\n/** Map of integrity check keys to their result row types */\r\ninterface IntegrityCheckResultTypeMap {\r\n checkDataColumns: CheckDataColumnsResultRow;\r\n checkECProfile: CheckECProfileResultRow;\r\n checkNavigationClassIds: CheckNavClassIdsResultRow;\r\n checkNavigationIds: CheckNavIdsResultRow;\r\n checkLinktableForeignKeyClassIds: CheckLinkTableFkClassIdsResultRow;\r\n checkLinktableForeignKeyIds: CheckLinkTableFkIdsResultRow;\r\n checkClassIds: CheckClassIdsResultRow;\r\n checkDataSchema: CheckDataSchemaResultRow;\r\n checkSchemaLoad: CheckSchemaLoadResultRow;\r\n checkMissingChildRows: CheckMissingChildRowsResultRow;\r\n}\r\n\r\n/** Checks the Map to give the return type of a specific integrity check */\r\ntype IntegrityCheckResultRow<K extends IntegrityCheckKey> = IntegrityCheckResultTypeMap[K];\r\n\r\n/**\r\n * Return type for quick integrity check\r\n */\r\nexport interface QuickIntegrityCheckResultRow {\r\n check: string;\r\n passed: boolean;\r\n elapsedSeconds: string;\r\n}\r\n\r\n/**\r\n * Return type for Check Data Columns integrity check\r\n */\r\nexport interface CheckDataColumnsResultRow {\r\n sno: number;\r\n table: string;\r\n column: string;\r\n}\r\n\r\n/**\r\n * Return type for Check EC Profile integrity check\r\n */\r\nexport interface CheckECProfileResultRow {\r\n sno: number;\r\n type: string;\r\n name: string;\r\n issue: string;\r\n}\r\n\r\n/**\r\n * Return type for Check Navigation Class Ids integrity check\r\n */\r\nexport interface CheckNavClassIdsResultRow {\r\n sno: number;\r\n id: string;\r\n class: string;\r\n property: string;\r\n navId: string;\r\n navClassId: string;\r\n}\r\n\r\n/**\r\n * Return type for Check Navigation Ids integrity check\r\n */\r\nexport interface CheckNavIdsResultRow {\r\n sno: number;\r\n id: string;\r\n class: string;\r\n property: string;\r\n navId: string;\r\n primaryClass: string;\r\n}\r\n\r\n/**\r\n * Return type for Check Link Table Foreign Key Class Ids integrity check\r\n */\r\nexport interface CheckLinkTableFkClassIdsResultRow {\r\n sno: number;\r\n id: string;\r\n relationship: string;\r\n property: string;\r\n keyId: string;\r\n keyClassId: string;\r\n}\r\n\r\n/**\r\n * Return type for Check Link Table Foreign Key Ids integrity check\r\n */\r\nexport interface CheckLinkTableFkIdsResultRow {\r\n sno: number;\r\n id: string;\r\n relationship: string;\r\n property: string;\r\n keyId: string;\r\n primaryClass: string;\r\n}\r\n\r\n/**\r\n * Return type for Check Class Ids integrity check\r\n */\r\nexport interface CheckClassIdsResultRow {\r\n sno: number;\r\n class: string;\r\n id: string;\r\n classId: string;\r\n type: string;\r\n}\r\n\r\n/**\r\n * Return type for Check Data Schema integrity check\r\n */\r\nexport interface CheckDataSchemaResultRow {\r\n sno: number;\r\n type: string;\r\n name: string;\r\n}\r\n\r\n/**\r\n * Return type for Check Schema Load integrity check\r\n */\r\nexport interface CheckSchemaLoadResultRow {\r\n sno: number;\r\n schema: string;\r\n}\r\n\r\n/**\r\n * Return type for Check Missing Child Rows integrity check\r\n */\r\nexport interface CheckMissingChildRowsResultRow {\r\n sno: number;\r\n class: string;\r\n id: string;\r\n classId: string;\r\n missingRowInTables: string;\r\n}\r\n\r\n/**\r\n * Return type for integrity check results, including the check name, whether it passed, and the specific results (if any)\r\n */\r\nexport interface IntegrityCheckResult {\r\n /** The name of the integrity check that was performed */\r\n check: string;\r\n /** Whether the integrity check passed (i.e. no issues were found = true) */\r\n passed: boolean;\r\n /** The specific results returned by the integrity check, which may include details about any issues that were found.\r\n * In the case where issues are found, this will be an array of result rows specific to the type of check that was performed,\r\n * or an array of quick integrity check results if it was a quick check. */\r\n results: IntegrityCheckResultRow<IntegrityCheckKey>[] | QuickIntegrityCheckResultRow[];\r\n}\r\n\r\n/**\r\n * Gets the user-friendly name of an integrity check based on its key or SQL command.\r\n * It first attempts to find a direct match for the key in the integrityCheckTypeMap. If not found, it searches for a match based on the SQL command.\r\n * If still not found, it returns the original check string.\r\n * @param check - The integrity check key or SQL command to get the name of\r\n * @returns The user-friendly name of the integrity check, or the original check string if no match is found\r\n * @internal\r\n */\r\nexport function getIntegrityCheckName(check: string): string {\r\n // First try direct lookup by key\r\n const directLookup = integrityCheckTypeMap[check as IntegrityCheckKey];\r\n if (directLookup) {\r\n return directLookup.name;\r\n }\r\n // If not found, search by sqlCommand\r\n for (const [, value] of Object.entries(integrityCheckTypeMap)) {\r\n if (value.sqlCommand === check) {\r\n return value.name;\r\n }\r\n }\r\n // Fallback to the original check string\r\n return check;\r\n}\r\n\r\n/**\r\n * Performs a quick integrity check on the given iModel.\r\n * @param iModel The IModelDb instance to perform the integrity check on\r\n * @returns An array of results for each check performed, including the check name, whether it passed, and the elapsed time in seconds\r\n * @internal\r\n */\r\nexport async function performQuickIntegrityCheck(iModel: IModelDb): Promise<QuickIntegrityCheckResultRow[]> {\r\n const integrityCheckQuery = \"PRAGMA integrity_check ECSQLOPTIONS ENABLE_EXPERIMENTAL_FEATURES\";\r\n const integrityCheckResults: QuickIntegrityCheckResultRow[] = [];\r\n for await (const row of iModel.createQueryReader(integrityCheckQuery, undefined, { usePrimaryConn: true })) {\r\n integrityCheckResults.push({ check: getIntegrityCheckName(row.check), passed: row.result, elapsedSeconds: row.elapsed_sec});\r\n };\r\n return integrityCheckResults;\r\n}\r\n\r\n/**\r\n * Performs a specific integrity check on the given iModel based on the provided check key, and returns the results specific to that check type.\r\n * @param iModel The IModelDb instance to perform the integrity check on\r\n * @param check The key of the specific integrity check to perform\r\n * @return An array of results specific to the integrity check that was performed. The type of the result rows will depend on the check that was executed.\r\n * @throws IModelError with status BadRequest if an unknown integrity check key is provided\r\n * @internal\r\n */\r\nexport async function performSpecificIntegrityCheck(iModel: IModelDb, check: \"checkDataColumns\"): Promise<IntegrityCheckResultRow<\"checkDataColumns\">[]>;\r\nexport async function performSpecificIntegrityCheck(iModel: IModelDb, check: \"checkECProfile\"): Promise<IntegrityCheckResultRow<\"checkECProfile\">[]>;\r\nexport async function performSpecificIntegrityCheck(iModel: IModelDb, check: \"checkNavigationClassIds\"): Promise<IntegrityCheckResultRow<\"checkNavigationClassIds\">[]>;\r\nexport async function performSpecificIntegrityCheck(iModel: IModelDb, check: \"checkNavigationIds\"): Promise<IntegrityCheckResultRow<\"checkNavigationIds\">[]>;\r\nexport async function performSpecificIntegrityCheck(iModel: IModelDb, check: \"checkLinktableForeignKeyClassIds\"): Promise<IntegrityCheckResultRow<\"checkLinktableForeignKeyClassIds\">[]>;\r\nexport async function performSpecificIntegrityCheck(iModel: IModelDb, check: \"checkLinktableForeignKeyIds\"): Promise<IntegrityCheckResultRow<\"checkLinktableForeignKeyIds\">[]>;\r\nexport async function performSpecificIntegrityCheck(iModel: IModelDb, check: \"checkClassIds\"): Promise<IntegrityCheckResultRow<\"checkClassIds\">[]>;\r\nexport async function performSpecificIntegrityCheck(iModel: IModelDb, check: \"checkDataSchema\"): Promise<IntegrityCheckResultRow<\"checkDataSchema\">[]>;\r\nexport async function performSpecificIntegrityCheck(iModel: IModelDb, check: \"checkSchemaLoad\"): Promise<IntegrityCheckResultRow<\"checkSchemaLoad\">[]>;\r\nexport async function performSpecificIntegrityCheck(iModel: IModelDb, check: \"checkMissingChildRows\"): Promise<IntegrityCheckResultRow<\"checkMissingChildRows\">[]>;\r\nexport async function performSpecificIntegrityCheck<K extends IntegrityCheckKey>(iModel: IModelDb, check: K): Promise<IntegrityCheckResultRow<K>[]>;\r\nexport async function performSpecificIntegrityCheck(iModel: IModelDb, check: IntegrityCheckKey): Promise<IntegrityCheckResultRow<IntegrityCheckKey>[]> {\r\n switch (check) {\r\n case \"checkDataColumns\": {\r\n const results: CheckDataColumnsResultRow[] = [];\r\n for await (const row of iModel.createQueryReader(integrityCheckTypeMap.checkDataColumns.sqlQuery, undefined, { usePrimaryConn: true })) {\r\n results.push({ sno: row.sno, table: row.table, column: row.column });\r\n }\r\n return results;\r\n }\r\n case \"checkECProfile\": {\r\n const results: CheckECProfileResultRow[] = [];\r\n for await (const row of iModel.createQueryReader(integrityCheckTypeMap.checkECProfile.sqlQuery, undefined, { usePrimaryConn: true })) {\r\n results.push({ sno: row.sno, type: row.type, name: row.name, issue: row.issue });\r\n }\r\n return results;\r\n }\r\n case \"checkNavigationClassIds\": {\r\n const results: CheckNavClassIdsResultRow[] = [];\r\n for await (const row of iModel.createQueryReader(integrityCheckTypeMap.checkNavigationClassIds.sqlQuery, undefined, { usePrimaryConn: true })) {\r\n results.push({ sno: row.sno, id: row.id, class: row.class, property: row.property, navId: row.nav_id, navClassId: row.nav_classId });\r\n }\r\n return results;\r\n }\r\n case \"checkNavigationIds\": {\r\n const results: CheckNavIdsResultRow[] = [];\r\n for await (const row of iModel.createQueryReader(integrityCheckTypeMap.checkNavigationIds.sqlQuery, undefined, { usePrimaryConn: true })) {\r\n results.push({ sno: row.sno, id: row.id, class: row.class, property: row.property, navId: row.nav_id, primaryClass: row.primary_class });\r\n }\r\n return results;\r\n }\r\n case \"checkLinktableForeignKeyClassIds\": {\r\n const results: CheckLinkTableFkClassIdsResultRow[] = [];\r\n for await (const row of iModel.createQueryReader(integrityCheckTypeMap.checkLinktableForeignKeyClassIds.sqlQuery, undefined, { usePrimaryConn: true })) {\r\n results.push({ sno: row.sno, id: row.id, relationship: row.relationship, property: row.property, keyId: row.key_id, keyClassId: row.key_classId });\r\n }\r\n return results;\r\n }\r\n case \"checkLinktableForeignKeyIds\": {\r\n const results: CheckLinkTableFkIdsResultRow[] = [];\r\n for await (const row of iModel.createQueryReader(integrityCheckTypeMap.checkLinktableForeignKeyIds.sqlQuery, undefined, { usePrimaryConn: true })) {\r\n results.push({ sno: row.sno, id: row.id, relationship: row.relationship, property: row.property, keyId: row.key_id, primaryClass: row.primary_class });\r\n }\r\n return results;\r\n }\r\n case \"checkClassIds\": {\r\n const results: CheckClassIdsResultRow[] = [];\r\n for await (const row of iModel.createQueryReader(integrityCheckTypeMap.checkClassIds.sqlQuery, undefined, { usePrimaryConn: true })) {\r\n results.push({ sno: row.sno, class: row.class, id: row.id, classId: row.class_id, type: row.type });\r\n }\r\n return results;\r\n }\r\n case \"checkDataSchema\": {\r\n const results: CheckDataSchemaResultRow[] = [];\r\n for await (const row of iModel.createQueryReader(integrityCheckTypeMap.checkDataSchema.sqlQuery, undefined, { usePrimaryConn: true })) {\r\n results.push({ sno: row.sno, type: row.type, name: row.name });\r\n }\r\n return results;\r\n }\r\n case \"checkSchemaLoad\": {\r\n const results: CheckSchemaLoadResultRow[] = [];\r\n for await (const row of iModel.createQueryReader(integrityCheckTypeMap.checkSchemaLoad.sqlQuery, undefined, { usePrimaryConn: true })) {\r\n results.push({ sno: row.sno, schema: row.schema });\r\n }\r\n return results;\r\n }\r\n case \"checkMissingChildRows\": {\r\n const results: CheckMissingChildRowsResultRow[] = [];\r\n for await (const row of iModel.createQueryReader(integrityCheckTypeMap.checkMissingChildRows.sqlQuery, undefined, { usePrimaryConn: true })) {\r\n results.push({ sno: row.sno, class: row.class, id: row.id, classId: row.class_id, missingRowInTables: row.MissingRowInTables });\r\n }\r\n return results;\r\n }\r\n default:\r\n throw new IModelError(IModelStatus.BadRequest, `Unknown integrity check type`);\r\n }\r\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"NoLocks.d.ts","sourceRoot":"","sources":["../../../src/internal/NoLocks.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAmB7C,wBAAgB,qBAAqB,IAAI,WAAW,CAEnD"}
1
+ {"version":3,"file":"NoLocks.d.ts","sourceRoot":"","sources":["../../../src/internal/NoLocks.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAyB7C,wBAAgB,qBAAqB,IAAI,WAAW,CAEnD"}
@@ -20,6 +20,12 @@ class NoLocks {
20
20
  async acquireLocks() { }
21
21
  async [Symbols_1._releaseAllLocks]() { }
22
22
  async releaseAllLocks() { }
23
+ async abandonAllLocks() { }
24
+ async abandonLocksForReversedTxn() { return false; }
25
+ async abandonLocksForCurrentUnsavedTxn() { return false; }
26
+ async acquireLocksForReinstatingTxn() { return false; }
27
+ holdsNecessaryLocksForReinstatingTxn() { return true; }
28
+ clearTxnLockRecords() { }
23
29
  }
24
30
  function createNoOpLockControl() {
25
31
  return new NoLocks();
@@ -1 +1 @@
1
- {"version":3,"file":"NoLocks.js","sourceRoot":"","sources":["../../../src/internal/NoLocks.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;AAyB/F,sDAEC;AApBD,uCAAoG;AAEpG,yJAAyJ;AACzJ,MAAM,OAAO;IACK,CAAC,mCAAyB,CAAC,GAAG,SAAS,CAAC;IACxD,IAAW,aAAa,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;IACrC,CAAC,gBAAM,CAAC,KAAW,CAAC;IACpB,aAAa,KAAW,CAAC;IACzB,kBAAkB,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IAC/C,eAAe,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IAC5C,kBAAkB,KAAW,CAAC;IAC9B,eAAe,KAAW,CAAC;IAC3B,CAAC,4BAAkB,CAAC,KAAW,CAAC;IAChC,KAAK,CAAC,YAAY,KAAK,CAAC;IACxB,KAAK,CAAC,CAAC,0BAAgB,CAAC,KAAoB,CAAC;IAC7C,KAAK,CAAC,eAAe,KAAoB,CAAC;CAClD;AAED,SAAgB,qBAAqB;IACnC,OAAO,IAAI,OAAO,EAAE,CAAC;AACvB,CAAC","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\r\n/** @packageDocumentation\r\n * @module iModels\r\n */\r\n\r\nimport { LockControl } from \"../LockControl\";\r\nimport { _close, _elementWasCreated, _implementationProhibited, _releaseAllLocks } from \"./Symbols\";\r\n\r\n/** A null-implementation of LockControl that does not attempt to limit access between briefcases. This relies on change-merging to resolve conflicts. */\r\nclass NoLocks implements LockControl {\r\n public readonly [_implementationProhibited] = undefined;\r\n public get isServerBased() { return false; }\r\n public [_close](): void { }\r\n public clearAllLocks(): void { }\r\n public holdsExclusiveLock(): boolean { return false; }\r\n public holdsSharedLock(): boolean { return false; }\r\n public checkExclusiveLock(): void { }\r\n public checkSharedLock(): void { }\r\n public [_elementWasCreated](): void { }\r\n public async acquireLocks() { }\r\n public async [_releaseAllLocks](): Promise<void> { }\r\n public async releaseAllLocks(): Promise<void> { }\r\n}\r\n\r\nexport function createNoOpLockControl(): LockControl {\r\n return new NoLocks();\r\n}\r\n"]}
1
+ {"version":3,"file":"NoLocks.js","sourceRoot":"","sources":["../../../src/internal/NoLocks.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;;AA+B/F,sDAEC;AA1BD,uCAAoG;AAEpG,yJAAyJ;AACzJ,MAAM,OAAO;IACK,CAAC,mCAAyB,CAAC,GAAG,SAAS,CAAC;IACxD,IAAW,aAAa,KAAK,OAAO,KAAK,CAAC,CAAC,CAAC;IACrC,CAAC,gBAAM,CAAC,KAAW,CAAC;IACpB,aAAa,KAAW,CAAC;IACzB,kBAAkB,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IAC/C,eAAe,KAAc,OAAO,KAAK,CAAC,CAAC,CAAC;IAC5C,kBAAkB,KAAW,CAAC;IAC9B,eAAe,KAAW,CAAC;IAC3B,CAAC,4BAAkB,CAAC,KAAW,CAAC;IAChC,KAAK,CAAC,YAAY,KAAK,CAAC;IACxB,KAAK,CAAC,CAAC,0BAAgB,CAAC,KAAoB,CAAC;IAC7C,KAAK,CAAC,eAAe,KAAoB,CAAC;IAC1C,KAAK,CAAC,eAAe,KAAoB,CAAC;IAC1C,KAAK,CAAC,0BAA0B,KAAuB,OAAO,KAAK,CAAC,CAAC,CAAC;IACtE,KAAK,CAAC,gCAAgC,KAAuB,OAAO,KAAK,CAAC,CAAC,CAAC;IAC5E,KAAK,CAAC,6BAA6B,KAAuB,OAAO,KAAK,CAAC,CAAC,CAAC;IACzE,oCAAoC,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAChE,mBAAmB,KAAW,CAAC;CACvC;AAED,SAAgB,qBAAqB;IACnC,OAAO,IAAI,OAAO,EAAE,CAAC;AACvB,CAAC","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\r\n/** @packageDocumentation\r\n * @module iModels\r\n */\r\n\r\nimport { LockControl } from \"../LockControl\";\r\nimport { _close, _elementWasCreated, _implementationProhibited, _releaseAllLocks } from \"./Symbols\";\r\n\r\n/** A null-implementation of LockControl that does not attempt to limit access between briefcases. This relies on change-merging to resolve conflicts. */\r\nclass NoLocks implements LockControl {\r\n public readonly [_implementationProhibited] = undefined;\r\n public get isServerBased() { return false; }\r\n public [_close](): void { }\r\n public clearAllLocks(): void { }\r\n public holdsExclusiveLock(): boolean { return false; }\r\n public holdsSharedLock(): boolean { return false; }\r\n public checkExclusiveLock(): void { }\r\n public checkSharedLock(): void { }\r\n public [_elementWasCreated](): void { }\r\n public async acquireLocks() { }\r\n public async [_releaseAllLocks](): Promise<void> { }\r\n public async releaseAllLocks(): Promise<void> { }\r\n public async abandonAllLocks(): Promise<void> { }\r\n public async abandonLocksForReversedTxn(): Promise<boolean> { return false; }\r\n public async abandonLocksForCurrentUnsavedTxn(): Promise<boolean> { return false; }\r\n public async acquireLocksForReinstatingTxn(): Promise<boolean> { return false; }\r\n public holdsNecessaryLocksForReinstatingTxn(): boolean { return true; }\r\n public clearTxnLockRecords(): void { }\r\n}\r\n\r\nexport function createNoOpLockControl(): LockControl {\r\n return new NoLocks();\r\n}\r\n"]}
@@ -12,6 +12,8 @@ export declare class ServerBasedLocks implements LockControl {
12
12
  get isServerBased(): boolean;
13
13
  protected readonly lockDb: SQLiteDb;
14
14
  protected readonly briefcase: BriefcaseDb;
15
+ private _removeOnCommitListener;
16
+ private readonly _unsavedChangesTxnId;
15
17
  constructor(iModel: BriefcaseDb);
16
18
  [_close](): void;
17
19
  private getOwners;
@@ -24,7 +26,9 @@ export declare class ServerBasedLocks implements LockControl {
24
26
  getLockCount(state: LockState): number;
25
27
  [_releaseAllLocks](): Promise<void>;
26
28
  releaseAllLocks(): Promise<void>;
29
+ abandonAllLocks(): Promise<void>;
27
30
  private insertLock;
31
+ private insertTxnLockRecord;
28
32
  private ownerHoldsExclusiveLock;
29
33
  /** Determine whether an the exclusive lock is already held by an element (or one of its owners) */
30
34
  holdsExclusiveLock(id: Id64String): boolean;
@@ -39,8 +43,16 @@ export declare class ServerBasedLocks implements LockControl {
39
43
  shared?: Id64Arg;
40
44
  exclusive?: Id64Arg;
41
45
  }): Promise<void>;
46
+ private abandonLocks;
47
+ abandonLocksForCurrentUnsavedTxn(): Promise<boolean>;
48
+ abandonLocksForReversedTxn(txnId: Id64String): Promise<boolean>;
49
+ private getAbandonedLocksForTxn;
50
+ acquireLocksForReinstatingTxn(txnId: Id64String): Promise<boolean>;
51
+ holdsNecessaryLocksForReinstatingTxn(txnId: Id64String): boolean;
52
+ clearTxnLockRecords(txnId: Id64String): void;
42
53
  /** When an element is newly created in a session, we hold the lock on it implicitly. Save that fact. */
43
54
  [_elementWasCreated](id: Id64String): void;
55
+ private clearDiscoveredLocks;
44
56
  /** locks are not necessary during change propagation. */
45
57
  private get _locksAreRequired();
46
58
  /** throw if locks are currently required and the exclusive lock is not held on the supplied element */
@@ -1 +1 @@
1
- {"version":3,"file":"ServerBasedLocks.d.ts","sourceRoot":"","sources":["../../../src/internal/ServerBasedLocks.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAkB,OAAO,EAAE,UAAU,EAA0B,MAAM,qBAAqB,CAAC;AAClG,OAAO,EAAuB,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAc,yBAAyB,EAAa,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAmB3H,qBAAa,gBAAiB,YAAW,WAAW;IAClD,SAAgB,CAAC,yBAAyB,CAAC,YAAa;IAExD,IAAW,aAAa,YAAmB;IAC3C,SAAS,CAAC,QAAQ,CAAC,MAAM,WAAkB;IAC3C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;gBAEvB,MAAM,EAAE,WAAW;IAY/B,CAAC,MAAM,CAAC;IAKf,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,aAAa;IAKrB,qBAAqB;IACd,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;IAQhC,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ7C,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,uBAAuB;IAgB/B,mGAAmG;IAC5F,kBAAkB,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO;IAK3C,eAAe,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO;IAM/C,sIAAsI;IACtI,OAAO,CAAC,aAAa;IAUrB,sGAAsG;IACtG,OAAO,CAAC,mBAAmB;IAM3B,mEAAmE;YACrD,eAAe;IAmBhB,YAAY,CAAC,GAAG,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBxF,wGAAwG;IACjG,CAAC,kBAAkB,CAAC,CAAC,EAAE,EAAE,UAAU;IAK1C,yDAAyD;IACzD,OAAO,KAAK,iBAAiB,GAAqD;IAElF,uGAAuG;IAChG,kBAAkB,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAKzE,kGAAkG;IAC3F,eAAe,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAKvE;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAEvE"}
1
+ {"version":3,"file":"ServerBasedLocks.d.ts","sourceRoot":"","sources":["../../../src/internal/ServerBasedLocks.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAkB,OAAO,EAAE,UAAU,EAA0B,MAAM,qBAAqB,CAAC;AAClG,OAAO,EAAuB,SAAS,EAAyB,MAAM,oBAAoB,CAAC;AAE3F,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAc,yBAAyB,EAAa,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAmB3H,qBAAa,gBAAiB,YAAW,WAAW;IAClD,SAAgB,CAAC,yBAAyB,CAAC,YAAa;IAExD,IAAW,aAAa,YAAmB;IAC3C,SAAS,CAAC,QAAQ,CAAC,MAAM,WAAkB;IAC3C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;IAC1C,OAAO,CAAC,uBAAuB,CAAa;IAC5C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAwB;gBAE1C,MAAM,EAAE,WAAW;IA2C/B,CAAC,MAAM,CAAC;IAOf,OAAO,CAAC,SAAS;IAWjB,OAAO,CAAC,YAAY;IAOpB;;OAEG;IACH,OAAO,CAAC,aAAa;IAMrB,qBAAqB;IACd,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;IAQhC,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAQhC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB7C,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,uBAAuB;IAgB/B,mGAAmG;IAC5F,kBAAkB,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO;IAK3C,eAAe,CAAC,EAAE,EAAE,UAAU,GAAG,OAAO;IAM/C,sIAAsI;IACtI,OAAO,CAAC,aAAa;IAUrB,sGAAsG;IACtG,OAAO,CAAC,mBAAmB;IAM3B,mEAAmE;YACrD,eAAe;IAqBhB,YAAY,CAAC,GAAG,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YAiB1E,YAAY;IAcb,gCAAgC,IAAI,OAAO,CAAC,OAAO,CAAC;IAIpD,0BAA0B,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IA8H5E,OAAO,CAAC,uBAAuB;IAyBlB,6BAA6B,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAiDxE,oCAAoC,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO;IAKhE,mBAAmB,CAAC,KAAK,EAAE,UAAU;IAY5C,wGAAwG;IACjG,CAAC,kBAAkB,CAAC,CAAC,EAAE,EAAE,UAAU;IAM1C,OAAO,CAAC,oBAAoB;IAS5B,yDAAyD;IACzD,OAAO,KAAK,iBAAiB,GAAqD;IAElF,uGAAuG;IAChG,kBAAkB,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAKzE,kGAAkG;IAC3F,eAAe,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAKvE;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAEvE"}