@itwin/core-backend 5.15.0-dev.2 → 5.15.0-dev.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +52 -1
- package/lib/cjs/BlobContainerService.d.ts +2 -0
- package/lib/cjs/BlobContainerService.d.ts.map +1 -1
- package/lib/cjs/BlobContainerService.js.map +1 -1
- package/lib/cjs/BriefcaseManager.d.ts +4 -3
- package/lib/cjs/BriefcaseManager.d.ts.map +1 -1
- package/lib/cjs/BriefcaseManager.js +39 -9
- package/lib/cjs/BriefcaseManager.js.map +1 -1
- package/lib/cjs/ChangeUnifier.d.ts +82 -0
- package/lib/cjs/ChangeUnifier.d.ts.map +1 -0
- package/lib/cjs/ChangeUnifier.js +163 -0
- package/lib/cjs/ChangeUnifier.js.map +1 -0
- package/lib/cjs/ChangesetReader.d.ts +21 -2
- package/lib/cjs/ChangesetReader.d.ts.map +1 -1
- package/lib/cjs/ChangesetReader.js +37 -1
- package/lib/cjs/ChangesetReader.js.map +1 -1
- package/lib/cjs/ChangesetReaderTypes.d.ts +1 -1
- package/lib/cjs/ChangesetReaderTypes.js.map +1 -1
- package/lib/cjs/CloudSqlite.d.ts +15 -0
- package/lib/cjs/CloudSqlite.d.ts.map +1 -1
- package/lib/cjs/CloudSqlite.js.map +1 -1
- package/lib/cjs/ECDb.d.ts +1 -0
- package/lib/cjs/ECDb.d.ts.map +1 -1
- package/lib/cjs/ECDb.js +4 -1
- package/lib/cjs/ECDb.js.map +1 -1
- package/lib/cjs/ECSqlRowExecutor.d.ts +3 -3
- package/lib/cjs/ECSqlRowExecutor.d.ts.map +1 -1
- package/lib/cjs/ECSqlRowExecutor.js +2 -2
- package/lib/cjs/ECSqlRowExecutor.js.map +1 -1
- package/lib/cjs/ECSqlStatement.d.ts +5 -0
- package/lib/cjs/ECSqlStatement.d.ts.map +1 -1
- package/lib/cjs/ECSqlStatement.js +15 -2
- package/lib/cjs/ECSqlStatement.js.map +1 -1
- package/lib/cjs/ECSqlSyncReader.d.ts.map +1 -1
- package/lib/cjs/ECSqlSyncReader.js +2 -2
- package/lib/cjs/ECSqlSyncReader.js.map +1 -1
- package/lib/cjs/EditTxn.d.ts +61 -19
- package/lib/cjs/EditTxn.d.ts.map +1 -1
- package/lib/cjs/EditTxn.js +84 -29
- package/lib/cjs/EditTxn.js.map +1 -1
- package/lib/cjs/Element.d.ts +29 -2
- package/lib/cjs/Element.d.ts.map +1 -1
- package/lib/cjs/Element.js +38 -2
- package/lib/cjs/Element.js.map +1 -1
- package/lib/cjs/GeoCoordConfig.d.ts +1 -0
- package/lib/cjs/GeoCoordConfig.d.ts.map +1 -1
- package/lib/cjs/GeoCoordConfig.js +12 -8
- package/lib/cjs/GeoCoordConfig.js.map +1 -1
- package/lib/cjs/GeographicCRSServices.d.ts +50 -2
- package/lib/cjs/GeographicCRSServices.d.ts.map +1 -1
- package/lib/cjs/GeographicCRSServices.js +11 -1
- package/lib/cjs/GeographicCRSServices.js.map +1 -1
- package/lib/cjs/IModelDb.d.ts +22 -9
- package/lib/cjs/IModelDb.d.ts.map +1 -1
- package/lib/cjs/IModelDb.js +54 -12
- package/lib/cjs/IModelDb.js.map +1 -1
- package/lib/cjs/NativeHost.d.ts.map +1 -1
- package/lib/cjs/NativeHost.js +5 -1
- package/lib/cjs/NativeHost.js.map +1 -1
- package/lib/cjs/Relationship.d.ts +28 -0
- package/lib/cjs/Relationship.d.ts.map +1 -1
- package/lib/cjs/Relationship.js +78 -0
- package/lib/cjs/Relationship.js.map +1 -1
- package/lib/cjs/SchemaSync.d.ts.map +1 -1
- package/lib/cjs/SchemaSync.js +1 -0
- package/lib/cjs/SchemaSync.js.map +1 -1
- package/lib/cjs/TxnManager.d.ts +126 -89
- package/lib/cjs/TxnManager.d.ts.map +1 -1
- package/lib/cjs/TxnManager.js +114 -76
- package/lib/cjs/TxnManager.js.map +1 -1
- package/lib/cjs/ViewStateHydrator.d.ts.map +1 -1
- package/lib/cjs/ViewStateHydrator.js.map +1 -1
- package/lib/cjs/ViewStore.d.ts.map +1 -1
- package/lib/cjs/ViewStore.js +62 -19
- package/lib/cjs/ViewStore.js.map +1 -1
- package/lib/cjs/annotations/LeaderGeometry.d.ts.map +1 -1
- package/lib/cjs/annotations/LeaderGeometry.js +3 -0
- package/lib/cjs/annotations/LeaderGeometry.js.map +1 -1
- package/lib/cjs/core-backend.d.ts +1 -0
- package/lib/cjs/core-backend.d.ts.map +1 -1
- package/lib/cjs/core-backend.js +1 -0
- package/lib/cjs/core-backend.js.map +1 -1
- package/lib/cjs/internal/BriefcaseUtils.d.ts +19 -0
- package/lib/cjs/internal/BriefcaseUtils.d.ts.map +1 -0
- package/lib/cjs/internal/BriefcaseUtils.js +65 -0
- package/lib/cjs/internal/BriefcaseUtils.js.map +1 -0
- package/lib/cjs/internal/QueryMetadataCache.d.ts +44 -0
- package/lib/cjs/internal/QueryMetadataCache.d.ts.map +1 -0
- package/lib/cjs/internal/QueryMetadataCache.js +107 -0
- package/lib/cjs/internal/QueryMetadataCache.js.map +1 -0
- package/lib/cjs/internal/Symbols.d.ts +9 -0
- package/lib/cjs/internal/Symbols.d.ts.map +1 -1
- package/lib/cjs/internal/Symbols.js +10 -1
- package/lib/cjs/internal/Symbols.js.map +1 -1
- package/lib/cjs/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
- package/lib/cjs/internal/workspace/WorkspaceImpl.js +20 -6
- package/lib/cjs/internal/workspace/WorkspaceImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts +6 -6
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts.map +1 -1
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
- package/lib/cjs/workspace/SettingsEditor.d.ts +4 -3
- package/lib/cjs/workspace/SettingsEditor.d.ts.map +1 -1
- package/lib/cjs/workspace/SettingsEditor.js +7 -5
- package/lib/cjs/workspace/SettingsEditor.js.map +1 -1
- package/lib/esm/BlobContainerService.d.ts +2 -0
- package/lib/esm/BlobContainerService.d.ts.map +1 -1
- package/lib/esm/BlobContainerService.js.map +1 -1
- package/lib/esm/BriefcaseManager.d.ts +4 -3
- package/lib/esm/BriefcaseManager.d.ts.map +1 -1
- package/lib/esm/BriefcaseManager.js +40 -10
- package/lib/esm/BriefcaseManager.js.map +1 -1
- package/lib/esm/ChangeUnifier.d.ts +82 -0
- package/lib/esm/ChangeUnifier.d.ts.map +1 -0
- package/lib/esm/ChangeUnifier.js +159 -0
- package/lib/esm/ChangeUnifier.js.map +1 -0
- package/lib/esm/ChangesetReader.d.ts +21 -2
- package/lib/esm/ChangesetReader.d.ts.map +1 -1
- package/lib/esm/ChangesetReader.js +38 -2
- package/lib/esm/ChangesetReader.js.map +1 -1
- package/lib/esm/ChangesetReaderTypes.d.ts +1 -1
- package/lib/esm/ChangesetReaderTypes.js.map +1 -1
- package/lib/esm/CloudSqlite.d.ts +15 -0
- package/lib/esm/CloudSqlite.d.ts.map +1 -1
- package/lib/esm/CloudSqlite.js.map +1 -1
- package/lib/esm/ECDb.d.ts +1 -0
- package/lib/esm/ECDb.d.ts.map +1 -1
- package/lib/esm/ECDb.js +4 -1
- package/lib/esm/ECDb.js.map +1 -1
- package/lib/esm/ECSqlRowExecutor.d.ts +3 -3
- package/lib/esm/ECSqlRowExecutor.d.ts.map +1 -1
- package/lib/esm/ECSqlRowExecutor.js +2 -2
- package/lib/esm/ECSqlRowExecutor.js.map +1 -1
- package/lib/esm/ECSqlStatement.d.ts +5 -0
- package/lib/esm/ECSqlStatement.d.ts.map +1 -1
- package/lib/esm/ECSqlStatement.js +15 -2
- package/lib/esm/ECSqlStatement.js.map +1 -1
- package/lib/esm/ECSqlSyncReader.d.ts.map +1 -1
- package/lib/esm/ECSqlSyncReader.js +3 -3
- package/lib/esm/ECSqlSyncReader.js.map +1 -1
- package/lib/esm/EditTxn.d.ts +61 -19
- package/lib/esm/EditTxn.d.ts.map +1 -1
- package/lib/esm/EditTxn.js +85 -30
- package/lib/esm/EditTxn.js.map +1 -1
- package/lib/esm/Element.d.ts +29 -2
- package/lib/esm/Element.d.ts.map +1 -1
- package/lib/esm/Element.js +41 -5
- package/lib/esm/Element.js.map +1 -1
- package/lib/esm/GeoCoordConfig.d.ts +1 -0
- package/lib/esm/GeoCoordConfig.d.ts.map +1 -1
- package/lib/esm/GeoCoordConfig.js +12 -8
- package/lib/esm/GeoCoordConfig.js.map +1 -1
- package/lib/esm/GeographicCRSServices.d.ts +50 -2
- package/lib/esm/GeographicCRSServices.d.ts.map +1 -1
- package/lib/esm/GeographicCRSServices.js +10 -1
- package/lib/esm/GeographicCRSServices.js.map +1 -1
- package/lib/esm/IModelDb.d.ts +22 -9
- package/lib/esm/IModelDb.d.ts.map +1 -1
- package/lib/esm/IModelDb.js +56 -14
- package/lib/esm/IModelDb.js.map +1 -1
- package/lib/esm/NativeHost.d.ts.map +1 -1
- package/lib/esm/NativeHost.js +5 -1
- package/lib/esm/NativeHost.js.map +1 -1
- package/lib/esm/Relationship.d.ts +28 -0
- package/lib/esm/Relationship.d.ts.map +1 -1
- package/lib/esm/Relationship.js +78 -0
- package/lib/esm/Relationship.js.map +1 -1
- package/lib/esm/SchemaSync.d.ts.map +1 -1
- package/lib/esm/SchemaSync.js +1 -0
- package/lib/esm/SchemaSync.js.map +1 -1
- package/lib/esm/TxnManager.d.ts +126 -89
- package/lib/esm/TxnManager.d.ts.map +1 -1
- package/lib/esm/TxnManager.js +116 -78
- package/lib/esm/TxnManager.js.map +1 -1
- package/lib/esm/ViewStateHydrator.d.ts.map +1 -1
- package/lib/esm/ViewStateHydrator.js.map +1 -1
- package/lib/esm/ViewStore.d.ts.map +1 -1
- package/lib/esm/ViewStore.js +62 -19
- package/lib/esm/ViewStore.js.map +1 -1
- package/lib/esm/annotations/LeaderGeometry.d.ts.map +1 -1
- package/lib/esm/annotations/LeaderGeometry.js +3 -0
- package/lib/esm/annotations/LeaderGeometry.js.map +1 -1
- package/lib/esm/core-backend.d.ts +1 -0
- package/lib/esm/core-backend.d.ts.map +1 -1
- package/lib/esm/core-backend.js +1 -0
- package/lib/esm/core-backend.js.map +1 -1
- package/lib/esm/internal/BriefcaseUtils.d.ts +19 -0
- package/lib/esm/internal/BriefcaseUtils.d.ts.map +1 -0
- package/lib/esm/internal/BriefcaseUtils.js +61 -0
- package/lib/esm/internal/BriefcaseUtils.js.map +1 -0
- package/lib/esm/internal/QueryMetadataCache.d.ts +44 -0
- package/lib/esm/internal/QueryMetadataCache.d.ts.map +1 -0
- package/lib/esm/internal/QueryMetadataCache.js +103 -0
- package/lib/esm/internal/QueryMetadataCache.js.map +1 -0
- package/lib/esm/internal/Symbols.d.ts +9 -0
- package/lib/esm/internal/Symbols.d.ts.map +1 -1
- package/lib/esm/internal/Symbols.js +9 -0
- package/lib/esm/internal/Symbols.js.map +1 -1
- package/lib/esm/internal/workspace/WorkspaceImpl.d.ts.map +1 -1
- package/lib/esm/internal/workspace/WorkspaceImpl.js +20 -6
- package/lib/esm/internal/workspace/WorkspaceImpl.js.map +1 -1
- package/lib/esm/rpc-impl/IModelReadRpcImpl.d.ts +6 -6
- package/lib/esm/rpc-impl/IModelReadRpcImpl.d.ts.map +1 -1
- package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
- package/lib/esm/test/annotations/LeaderGeometry.test.js +15 -1
- package/lib/esm/test/annotations/LeaderGeometry.test.js.map +1 -1
- package/lib/esm/test/ecdb/ConcurrentQuery.test.js +144 -30
- package/lib/esm/test/ecdb/ConcurrentQuery.test.js.map +1 -1
- package/lib/esm/test/ecdb/ECSqlSyncReader.test.js +140 -0
- package/lib/esm/test/ecdb/ECSqlSyncReader.test.js.map +1 -1
- package/lib/esm/test/ecdb/QueryMetadataCache.test.d.ts +2 -0
- package/lib/esm/test/ecdb/QueryMetadataCache.test.d.ts.map +1 -0
- package/lib/esm/test/ecdb/QueryMetadataCache.test.js +630 -0
- package/lib/esm/test/ecdb/QueryMetadataCache.test.js.map +1 -0
- package/lib/esm/test/element/DeleteDefinitionElements.test.js +403 -249
- package/lib/esm/test/element/DeleteDefinitionElements.test.js.map +1 -1
- package/lib/esm/test/element/ElementSubModelInsert.test.d.ts +2 -0
- package/lib/esm/test/element/ElementSubModelInsert.test.d.ts.map +1 -0
- package/lib/esm/test/element/ElementSubModelInsert.test.js +183 -0
- package/lib/esm/test/element/ElementSubModelInsert.test.js.map +1 -0
- package/lib/esm/test/element/RelationshipBatchLookup.test.d.ts +2 -0
- package/lib/esm/test/element/RelationshipBatchLookup.test.d.ts.map +1 -0
- package/lib/esm/test/element/RelationshipBatchLookup.test.js +202 -0
- package/lib/esm/test/element/RelationshipBatchLookup.test.js.map +1 -0
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js +187 -1
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
- package/lib/esm/test/hubaccess/SchemaImportOrphanColumns.test.d.ts +2 -0
- package/lib/esm/test/hubaccess/SchemaImportOrphanColumns.test.d.ts.map +1 -0
- package/lib/esm/test/hubaccess/SchemaImportOrphanColumns.test.js +142 -0
- package/lib/esm/test/hubaccess/SchemaImportOrphanColumns.test.js.map +1 -0
- package/lib/esm/test/imodel/IModelGeolocation.test.js +13 -11
- package/lib/esm/test/imodel/IModelGeolocation.test.js.map +1 -1
- package/lib/esm/test/imodel/IModelProps.test.d.ts +2 -0
- package/lib/esm/test/imodel/IModelProps.test.d.ts.map +1 -0
- package/lib/esm/test/imodel/IModelProps.test.js +411 -0
- package/lib/esm/test/imodel/IModelProps.test.js.map +1 -0
- package/lib/esm/test/schema/SchemaViewPropertyOverrides.test.d.ts +2 -0
- package/lib/esm/test/schema/SchemaViewPropertyOverrides.test.d.ts.map +1 -0
- package/lib/esm/test/schema/SchemaViewPropertyOverrides.test.js +240 -0
- package/lib/esm/test/schema/SchemaViewPropertyOverrides.test.js.map +1 -0
- package/lib/esm/test/schema/SchemaViewValidation.test.js +2 -8
- package/lib/esm/test/schema/SchemaViewValidation.test.js.map +1 -1
- package/lib/esm/test/standalone/BriefcaseManagerDelete.test.d.ts +2 -0
- package/lib/esm/test/standalone/BriefcaseManagerDelete.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/BriefcaseManagerDelete.test.js +159 -0
- package/lib/esm/test/standalone/BriefcaseManagerDelete.test.js.map +1 -0
- package/lib/esm/test/standalone/ChangeUnifier.test.d.ts +2 -0
- package/lib/esm/test/standalone/ChangeUnifier.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/ChangeUnifier.test.js +732 -0
- package/lib/esm/test/standalone/ChangeUnifier.test.js.map +1 -0
- package/lib/esm/test/standalone/DeleteElements.test.js +962 -83
- package/lib/esm/test/standalone/DeleteElements.test.js.map +1 -1
- package/lib/esm/test/standalone/EditTxn.test.js +72 -1
- package/lib/esm/test/standalone/EditTxn.test.js.map +1 -1
- package/lib/esm/test/standalone/GeoCoordConfig.test.d.ts +2 -0
- package/lib/esm/test/standalone/GeoCoordConfig.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/GeoCoordConfig.test.js +158 -0
- package/lib/esm/test/standalone/GeoCoordConfig.test.js.map +1 -0
- package/lib/esm/test/standalone/SessionApplyIndirect.test.d.ts +2 -0
- package/lib/esm/test/standalone/SessionApplyIndirect.test.d.ts.map +1 -0
- package/lib/esm/test/standalone/SessionApplyIndirect.test.js +211 -0
- package/lib/esm/test/standalone/SessionApplyIndirect.test.js.map +1 -0
- package/lib/esm/test/standalone/ViewStoreDb.test.js +53 -0
- package/lib/esm/test/standalone/ViewStoreDb.test.js.map +1 -1
- package/lib/esm/test/workspace/SettingsContainers.test.d.ts +2 -0
- package/lib/esm/test/workspace/SettingsContainers.test.d.ts.map +1 -0
- package/lib/esm/test/workspace/SettingsContainers.test.js +95 -0
- package/lib/esm/test/workspace/SettingsContainers.test.js.map +1 -0
- package/lib/esm/workspace/SettingsEditor.d.ts +4 -3
- package/lib/esm/workspace/SettingsEditor.d.ts.map +1 -1
- package/lib/esm/workspace/SettingsEditor.js +7 -5
- package/lib/esm/workspace/SettingsEditor.js.map +1 -1
- package/package.json +18 -18
package/lib/cjs/IModelDb.js
CHANGED
|
@@ -52,6 +52,7 @@ const NoReservations_1 = require("./internal/NoReservations");
|
|
|
52
52
|
const IModelDbFontsImpl_1 = require("./internal/IModelDbFontsImpl");
|
|
53
53
|
const SchemaSyncReservations_1 = require("./internal/SchemaSyncReservations");
|
|
54
54
|
const Symbols_1 = require("./internal/Symbols");
|
|
55
|
+
const QueryMetadataCache_1 = require("./internal/QueryMetadataCache");
|
|
55
56
|
const ecschema_metadata_1 = require("@itwin/ecschema-metadata");
|
|
56
57
|
const Schema_1 = require("./Schema");
|
|
57
58
|
const ElementLRUCache_1 = require("./internal/ElementLRUCache");
|
|
@@ -78,6 +79,7 @@ class ImplicitWriteTxn extends EditTxn_1.EditTxn {
|
|
|
78
79
|
throw new Error("ImplicitWriteTxn cannot be ended");
|
|
79
80
|
}
|
|
80
81
|
verifyWriteable() {
|
|
82
|
+
this.iModel[Symbols_1._verifyTxnWrite]();
|
|
81
83
|
const enforcement = EditTxn_1.EditTxn.implicitWriteEnforcement;
|
|
82
84
|
if (enforcement === "allow")
|
|
83
85
|
return;
|
|
@@ -148,6 +150,7 @@ var DataTransformationStrategy;
|
|
|
148
150
|
*/
|
|
149
151
|
class IModelDb extends core_common_1.IModel {
|
|
150
152
|
_initialized = false;
|
|
153
|
+
_lastUpdatedGeographicCoordinateSystem;
|
|
151
154
|
/** Keep track of open imodels to support `tryFind` for RPC purposes */
|
|
152
155
|
static _openDbs = new Map();
|
|
153
156
|
static defaultLimit = 1000; // default limit for batching queries
|
|
@@ -162,6 +165,7 @@ class IModelDb extends core_common_1.IModel {
|
|
|
162
165
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
163
166
|
_statementCache = new SqliteStatement_1.StatementCache();
|
|
164
167
|
_sqliteStatementCache = new SqliteStatement_1.StatementCache();
|
|
168
|
+
_queryMetadataCache = new QueryMetadataCache_1.QueryMetadataCache();
|
|
165
169
|
_codeSpecs;
|
|
166
170
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
167
171
|
_classMetaDataRegistry;
|
|
@@ -405,8 +409,10 @@ class IModelDb extends core_common_1.IModel {
|
|
|
405
409
|
abandonSchemaChanges() {
|
|
406
410
|
if (!this[Symbols_1._nativeDb].hasUnsavedChanges())
|
|
407
411
|
return;
|
|
408
|
-
|
|
412
|
+
// Unsaved changes here can include schema changes, e.g. after a failed schema import.
|
|
413
|
+
this.clearCaches();
|
|
409
414
|
this[Symbols_1._nativeDb].abandonChanges();
|
|
415
|
+
this[Symbols_1._refreshGeographicCoordinateSystem]();
|
|
410
416
|
}
|
|
411
417
|
/** Optimize this iModel by vacuuming, and analyzing.
|
|
412
418
|
*
|
|
@@ -513,6 +519,7 @@ class IModelDb extends core_common_1.IModel {
|
|
|
513
519
|
/** @internal */
|
|
514
520
|
initializeIModelDb(when) {
|
|
515
521
|
const props = this[Symbols_1._nativeDb].getIModelProps(when);
|
|
522
|
+
this._lastUpdatedGeographicCoordinateSystem = props.geographicCoordinateSystem ? new core_common_1.GeographicCRS(props.geographicCoordinateSystem) : undefined;
|
|
516
523
|
super.initialize(props.rootSubject.name, props);
|
|
517
524
|
if (this._initialized)
|
|
518
525
|
return;
|
|
@@ -527,6 +534,40 @@ class IModelDb extends core_common_1.IModel {
|
|
|
527
534
|
db.onEcefLocationChanged.addListener(() => IpcHost_1.IpcHost.notifyTxns(db, "notifyEcefLocationChanged", db.ecefLocation?.toJSON()));
|
|
528
535
|
db.onGeographicCoordinateSystemChanged.addListener(() => IpcHost_1.IpcHost.notifyTxns(db, "notifyGeographicCoordinateSystemChanged", db.geographicCoordinateSystem?.toJSON()));
|
|
529
536
|
}
|
|
537
|
+
/** Reload the cached iModel properties (extents, geolocation, name, etc.) from the database, e.g. after changesets were merged.
|
|
538
|
+
* @internal
|
|
539
|
+
*/
|
|
540
|
+
[Symbols_1._refreshIModelProps]() {
|
|
541
|
+
this.initializeIModelDb("pullMerge");
|
|
542
|
+
}
|
|
543
|
+
/** @internal */
|
|
544
|
+
[Symbols_1._refreshGeographicCoordinateSystem]() {
|
|
545
|
+
const wasRefreshing = this._isRefreshingGeographicCoordinateSystem;
|
|
546
|
+
this._isRefreshingGeographicCoordinateSystem = true;
|
|
547
|
+
try {
|
|
548
|
+
const props = this[Symbols_1._nativeDb].getIModelProps().geographicCoordinateSystem;
|
|
549
|
+
this._lastUpdatedGeographicCoordinateSystem = props ? new core_common_1.GeographicCRS(props) : undefined;
|
|
550
|
+
this.geographicCoordinateSystem = props ? new core_common_1.GeographicCRS(props) : undefined;
|
|
551
|
+
}
|
|
552
|
+
finally {
|
|
553
|
+
this._isRefreshingGeographicCoordinateSystem = wasRefreshing;
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
_isRefreshingGeographicCoordinateSystem = false;
|
|
557
|
+
/** @internal */
|
|
558
|
+
[Symbols_1._verifyTxnWrite]() {
|
|
559
|
+
if (this._isRefreshingGeographicCoordinateSystem)
|
|
560
|
+
throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadRequest, "Cannot write while restoring the geographic coordinate system");
|
|
561
|
+
}
|
|
562
|
+
/** @internal */
|
|
563
|
+
[Symbols_1._updateIModelProps]() {
|
|
564
|
+
const { geographicCoordinateSystem, ...props } = this.toJSON();
|
|
565
|
+
const gcs = geographicCoordinateSystem ? new core_common_1.GeographicCRS(geographicCoordinateSystem) : undefined;
|
|
566
|
+
const gcsChanged = gcs !== undefined && !this._lastUpdatedGeographicCoordinateSystem?.equals(gcs);
|
|
567
|
+
this[Symbols_1._nativeDb].updateIModelProps(gcsChanged ? { ...props, geographicCoordinateSystem } : props);
|
|
568
|
+
if (gcsChanged)
|
|
569
|
+
this._lastUpdatedGeographicCoordinateSystem = gcs;
|
|
570
|
+
}
|
|
530
571
|
/** Returns true if this is a BriefcaseDb
|
|
531
572
|
* @see [[BriefcaseDb.open]]
|
|
532
573
|
*/
|
|
@@ -637,7 +678,7 @@ class IModelDb extends core_common_1.IModel {
|
|
|
637
678
|
throw new core_common_1.IModelError(core_bentley_1.DbResult.BE_SQLITE_ERROR_NOTOPEN, "db not open");
|
|
638
679
|
const executor = {
|
|
639
680
|
execute: async (request) => {
|
|
640
|
-
return ConcurrentQuery_1.ConcurrentQuery.executeQueryRequest(this[Symbols_1._nativeDb],
|
|
681
|
+
return this._queryMetadataCache.executeCachedQueryRequest(request, async (req) => ConcurrentQuery_1.ConcurrentQuery.executeQueryRequest(this[Symbols_1._nativeDb], req));
|
|
641
682
|
},
|
|
642
683
|
};
|
|
643
684
|
return new core_common_1.ECSqlReader(executor, ecsql, params, config);
|
|
@@ -839,6 +880,7 @@ class IModelDb extends core_common_1.IModel {
|
|
|
839
880
|
clearCaches(params) {
|
|
840
881
|
if (!params?.instanceCachesOnly) {
|
|
841
882
|
this._statementCache.clear();
|
|
883
|
+
this._queryMetadataCache.clear();
|
|
842
884
|
this._sqliteStatementCache.clear();
|
|
843
885
|
this._classMetaDataRegistry = undefined;
|
|
844
886
|
this._jsClassMap = undefined;
|
|
@@ -1130,6 +1172,7 @@ class IModelDb extends core_common_1.IModel {
|
|
|
1130
1172
|
const status = this[Symbols_1._nativeDb].cancelTo(txnBeforeAdopt, true);
|
|
1131
1173
|
if (core_bentley_1.IModelStatus.Success !== status)
|
|
1132
1174
|
core_bentley_1.Logger.logError(loggerCategory, `Failed to roll back the adopted schema rows after a failed import: ${core_bentley_1.IModelStatus[status] ?? status}`);
|
|
1175
|
+
this.clearCaches();
|
|
1133
1176
|
}
|
|
1134
1177
|
throw err;
|
|
1135
1178
|
}
|
|
@@ -2193,8 +2236,6 @@ function processSchemaWriteStatus(status) {
|
|
|
2193
2236
|
}
|
|
2194
2237
|
else if (modelIdArg.code) {
|
|
2195
2238
|
const modelId = this._iModel.elements.getElementProps({ code: modelIdArg.code }).id;
|
|
2196
|
-
if (!modelId)
|
|
2197
|
-
throw new core_common_1.IModelError(core_bentley_1.IModelStatus.NotFound, `Model not found with code: [spec:${modelIdArg.code.spec}, scope:${modelIdArg.code.scope}, value:${modelIdArg.code.value}])`);
|
|
2198
2239
|
args = { partialKey: { id: modelId, baseClassName } };
|
|
2199
2240
|
}
|
|
2200
2241
|
else {
|
|
@@ -2220,7 +2261,7 @@ function processSchemaWriteStatus(status) {
|
|
|
2220
2261
|
*/
|
|
2221
2262
|
getSubModel(modeledElementId, modelClass) {
|
|
2222
2263
|
const modeledElementProps = this._iModel.elements.getElementProps(modeledElementId);
|
|
2223
|
-
if (
|
|
2264
|
+
if (modeledElementProps.id === core_common_1.IModel.rootSubjectId)
|
|
2224
2265
|
throw new core_common_1.IModelError(core_bentley_1.IModelStatus.NotFound, "Root subject does not have a sub-model");
|
|
2225
2266
|
return this.getModel(modeledElementProps.id, modelClass);
|
|
2226
2267
|
}
|
|
@@ -2233,7 +2274,7 @@ function processSchemaWriteStatus(status) {
|
|
|
2233
2274
|
*/
|
|
2234
2275
|
tryGetSubModel(modeledElementId, modelClass) {
|
|
2235
2276
|
const modeledElementProps = this._iModel.elements.tryGetElementProps(modeledElementId);
|
|
2236
|
-
if (undefined === modeledElementProps
|
|
2277
|
+
if (undefined === modeledElementProps || core_common_1.IModel.rootSubjectId === modeledElementProps.id)
|
|
2237
2278
|
return undefined;
|
|
2238
2279
|
return this.tryGetModel(modeledElementProps.id, modelClass);
|
|
2239
2280
|
}
|
|
@@ -2530,14 +2571,15 @@ function processSchemaWriteStatus(status) {
|
|
|
2530
2571
|
this._iModel[Symbols_1._implicitTxn].deleteElement(ids);
|
|
2531
2572
|
}
|
|
2532
2573
|
/**
|
|
2533
|
-
* Delete multiple elements from the iModel.
|
|
2574
|
+
* Delete multiple elements from the iModel in a single bulk operation. See [[EditTxn.deleteElements]].
|
|
2534
2575
|
* @param ids The ids of the elements to delete. All ids must be well-formed and valid [[Id64String]]s.
|
|
2535
|
-
* @param deleteOptions
|
|
2536
|
-
* @returns A result object
|
|
2576
|
+
* @param deleteOptions Deprecated and ignored; kept for backward compatibility of the signature.
|
|
2577
|
+
* @returns A result object describing the outcome of the operation and the elements that block it (if any).
|
|
2537
2578
|
* @throws [[ITwinError]] if any of the supplied ids are not well-formed/valid [[Id64String]]s.
|
|
2538
2579
|
* @deprecated in 5.1.9 - might be removed in next major version. Use EditTxn.deleteElements instead, within an explicit EditTxn scope (or via withEditTxn). See EditTxn documentation for migration help.
|
|
2539
2580
|
* @beta
|
|
2540
2581
|
*/
|
|
2582
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
2541
2583
|
deleteElements(ids, deleteOptions) {
|
|
2542
2584
|
return this._iModel[Symbols_1._implicitTxn].deleteElements(ids, deleteOptions);
|
|
2543
2585
|
}
|
|
@@ -3351,7 +3393,8 @@ class BriefcaseDb extends IModelDb {
|
|
|
3351
3393
|
touch.sync(briefcaseDb.watchFilePathName);
|
|
3352
3394
|
// Restart default txn to trigger events when watch file is changed by some other process.
|
|
3353
3395
|
const watcher = fs.watch(briefcaseDb.watchFilePathName, { persistent: false }, () => {
|
|
3354
|
-
|
|
3396
|
+
// The other connection may have changed the schema, so drop everything prepared against the old one.
|
|
3397
|
+
briefcaseDb.clearCaches();
|
|
3355
3398
|
nativeDb.restartDefaultTxn();
|
|
3356
3399
|
briefcaseDb.changeset = briefcaseDb[Symbols_1._nativeDb].getCurrentChangeset();
|
|
3357
3400
|
});
|
|
@@ -3606,7 +3649,7 @@ class BriefcaseDb extends IModelDb {
|
|
|
3606
3649
|
await this.executeWritable(async () => {
|
|
3607
3650
|
await BriefcaseManager_1.BriefcaseManager.pullAndApplyChangesets(this, arg ?? {});
|
|
3608
3651
|
SchemaSync_1.SchemaSync.updateDbSchema(this);
|
|
3609
|
-
this.
|
|
3652
|
+
this[Symbols_1._refreshIModelProps]();
|
|
3610
3653
|
});
|
|
3611
3654
|
// If this pull enabled or disabled SchemaSync for this briefcase, its reservations must now be re-initialized
|
|
3612
3655
|
if (this.reservations.isServerBased !== SchemaSync_1.SchemaSync.isEnabled(this))
|
|
@@ -3783,7 +3826,6 @@ class BriefcaseDb extends IModelDb {
|
|
|
3783
3826
|
// pushing changes requires a writeable briefcase
|
|
3784
3827
|
await this.executeWritable(async () => {
|
|
3785
3828
|
await BriefcaseManager_1.BriefcaseManager.pullMergePush(this, arg);
|
|
3786
|
-
this.initializeIModelDb("pullMerge");
|
|
3787
3829
|
});
|
|
3788
3830
|
// If this pull enabled or disabled SchemaSync for this briefcase, its reservations must now be re-initialized
|
|
3789
3831
|
if (this.reservations.isServerBased !== SchemaSync_1.SchemaSync.isEnabled(this))
|