@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/esm/IModelDb.js
CHANGED
|
@@ -9,7 +9,7 @@ import * as fs from "fs";
|
|
|
9
9
|
import { join } from "path";
|
|
10
10
|
import * as touch from "touch";
|
|
11
11
|
import { assert, BeEvent, BentleyStatus, ChangeSetStatus, DbChangeStage, DbConflictCause, DbConflictResolution, DbOpcode, DbResult, Guid, Id64, IModelStatus, JsonUtils, Logger, LogLevel, LRUMap, OpenMode } from "@itwin/core-bentley";
|
|
12
|
-
import { Base64EncodedString, BriefcaseIdValue, Code, DomainOptions, ECJsNames, ECSqlReader, EditTxnError, EntityMetaData, FontMap, IModel, IModelError, IModelNotFoundResponse, ProfileOptions, QueryBinder, QueryRowFormat, resolveNavPropId, SchemaState, ViewStoreError, ViewStoreRpc } from "@itwin/core-common";
|
|
12
|
+
import { Base64EncodedString, BriefcaseIdValue, Code, DomainOptions, ECJsNames, ECSqlReader, EditTxnError, EntityMetaData, FontMap, GeographicCRS, IModel, IModelError, IModelNotFoundResponse, ProfileOptions, QueryBinder, QueryRowFormat, resolveNavPropId, SchemaState, ViewStoreError, ViewStoreRpc } from "@itwin/core-common";
|
|
13
13
|
import { Range2d, Range3d } from "@itwin/core-geometry";
|
|
14
14
|
import { BackendLoggerCategory } from "./BackendLoggerCategory";
|
|
15
15
|
import { BriefcaseManager } from "./BriefcaseManager";
|
|
@@ -48,7 +48,8 @@ import { createNoOpLockControl } from "./internal/NoLocks";
|
|
|
48
48
|
import { createNoOpReservations } from "./internal/NoReservations";
|
|
49
49
|
import { createIModelDbFonts } from "./internal/IModelDbFontsImpl";
|
|
50
50
|
import { createSchemaSyncReservations } from "./internal/SchemaSyncReservations";
|
|
51
|
-
import { _activeTxn, _cache, _close, _hubAccess, _implicitTxn, _instanceKeyCache, _nativeDb, _releaseAllLocks, _resetIModelDb } from "./internal/Symbols";
|
|
51
|
+
import { _activeTxn, _cache, _close, _hubAccess, _implicitTxn, _instanceKeyCache, _nativeDb, _refreshGeographicCoordinateSystem, _refreshIModelProps, _releaseAllLocks, _resetIModelDb, _updateIModelProps, _verifyTxnWrite } from "./internal/Symbols";
|
|
52
|
+
import { QueryMetadataCache } from "./internal/QueryMetadataCache";
|
|
52
53
|
import { ECVersion, SchemaContext, SchemaJsonLocater, SchemaManifest, SchemaViewManager } from "@itwin/ecschema-metadata";
|
|
53
54
|
import { SchemaMap } from "./Schema";
|
|
54
55
|
import { ElementLRUCache, InstanceKeyLRUCache } from "./internal/ElementLRUCache";
|
|
@@ -75,6 +76,7 @@ class ImplicitWriteTxn extends EditTxn {
|
|
|
75
76
|
throw new Error("ImplicitWriteTxn cannot be ended");
|
|
76
77
|
}
|
|
77
78
|
verifyWriteable() {
|
|
79
|
+
this.iModel[_verifyTxnWrite]();
|
|
78
80
|
const enforcement = EditTxn.implicitWriteEnforcement;
|
|
79
81
|
if (enforcement === "allow")
|
|
80
82
|
return;
|
|
@@ -145,6 +147,7 @@ export var DataTransformationStrategy;
|
|
|
145
147
|
*/
|
|
146
148
|
export class IModelDb extends IModel {
|
|
147
149
|
_initialized = false;
|
|
150
|
+
_lastUpdatedGeographicCoordinateSystem;
|
|
148
151
|
/** Keep track of open imodels to support `tryFind` for RPC purposes */
|
|
149
152
|
static _openDbs = new Map();
|
|
150
153
|
static defaultLimit = 1000; // default limit for batching queries
|
|
@@ -159,6 +162,7 @@ export class IModelDb extends IModel {
|
|
|
159
162
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
160
163
|
_statementCache = new StatementCache();
|
|
161
164
|
_sqliteStatementCache = new StatementCache();
|
|
165
|
+
_queryMetadataCache = new QueryMetadataCache();
|
|
162
166
|
_codeSpecs;
|
|
163
167
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
164
168
|
_classMetaDataRegistry;
|
|
@@ -402,8 +406,10 @@ export class IModelDb extends IModel {
|
|
|
402
406
|
abandonSchemaChanges() {
|
|
403
407
|
if (!this[_nativeDb].hasUnsavedChanges())
|
|
404
408
|
return;
|
|
405
|
-
|
|
409
|
+
// Unsaved changes here can include schema changes, e.g. after a failed schema import.
|
|
410
|
+
this.clearCaches();
|
|
406
411
|
this[_nativeDb].abandonChanges();
|
|
412
|
+
this[_refreshGeographicCoordinateSystem]();
|
|
407
413
|
}
|
|
408
414
|
/** Optimize this iModel by vacuuming, and analyzing.
|
|
409
415
|
*
|
|
@@ -510,6 +516,7 @@ export class IModelDb extends IModel {
|
|
|
510
516
|
/** @internal */
|
|
511
517
|
initializeIModelDb(when) {
|
|
512
518
|
const props = this[_nativeDb].getIModelProps(when);
|
|
519
|
+
this._lastUpdatedGeographicCoordinateSystem = props.geographicCoordinateSystem ? new GeographicCRS(props.geographicCoordinateSystem) : undefined;
|
|
513
520
|
super.initialize(props.rootSubject.name, props);
|
|
514
521
|
if (this._initialized)
|
|
515
522
|
return;
|
|
@@ -524,6 +531,40 @@ export class IModelDb extends IModel {
|
|
|
524
531
|
db.onEcefLocationChanged.addListener(() => IpcHost.notifyTxns(db, "notifyEcefLocationChanged", db.ecefLocation?.toJSON()));
|
|
525
532
|
db.onGeographicCoordinateSystemChanged.addListener(() => IpcHost.notifyTxns(db, "notifyGeographicCoordinateSystemChanged", db.geographicCoordinateSystem?.toJSON()));
|
|
526
533
|
}
|
|
534
|
+
/** Reload the cached iModel properties (extents, geolocation, name, etc.) from the database, e.g. after changesets were merged.
|
|
535
|
+
* @internal
|
|
536
|
+
*/
|
|
537
|
+
[_refreshIModelProps]() {
|
|
538
|
+
this.initializeIModelDb("pullMerge");
|
|
539
|
+
}
|
|
540
|
+
/** @internal */
|
|
541
|
+
[_refreshGeographicCoordinateSystem]() {
|
|
542
|
+
const wasRefreshing = this._isRefreshingGeographicCoordinateSystem;
|
|
543
|
+
this._isRefreshingGeographicCoordinateSystem = true;
|
|
544
|
+
try {
|
|
545
|
+
const props = this[_nativeDb].getIModelProps().geographicCoordinateSystem;
|
|
546
|
+
this._lastUpdatedGeographicCoordinateSystem = props ? new GeographicCRS(props) : undefined;
|
|
547
|
+
this.geographicCoordinateSystem = props ? new GeographicCRS(props) : undefined;
|
|
548
|
+
}
|
|
549
|
+
finally {
|
|
550
|
+
this._isRefreshingGeographicCoordinateSystem = wasRefreshing;
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
_isRefreshingGeographicCoordinateSystem = false;
|
|
554
|
+
/** @internal */
|
|
555
|
+
[_verifyTxnWrite]() {
|
|
556
|
+
if (this._isRefreshingGeographicCoordinateSystem)
|
|
557
|
+
throw new IModelError(IModelStatus.BadRequest, "Cannot write while restoring the geographic coordinate system");
|
|
558
|
+
}
|
|
559
|
+
/** @internal */
|
|
560
|
+
[_updateIModelProps]() {
|
|
561
|
+
const { geographicCoordinateSystem, ...props } = this.toJSON();
|
|
562
|
+
const gcs = geographicCoordinateSystem ? new GeographicCRS(geographicCoordinateSystem) : undefined;
|
|
563
|
+
const gcsChanged = gcs !== undefined && !this._lastUpdatedGeographicCoordinateSystem?.equals(gcs);
|
|
564
|
+
this[_nativeDb].updateIModelProps(gcsChanged ? { ...props, geographicCoordinateSystem } : props);
|
|
565
|
+
if (gcsChanged)
|
|
566
|
+
this._lastUpdatedGeographicCoordinateSystem = gcs;
|
|
567
|
+
}
|
|
527
568
|
/** Returns true if this is a BriefcaseDb
|
|
528
569
|
* @see [[BriefcaseDb.open]]
|
|
529
570
|
*/
|
|
@@ -634,7 +675,7 @@ export class IModelDb extends IModel {
|
|
|
634
675
|
throw new IModelError(DbResult.BE_SQLITE_ERROR_NOTOPEN, "db not open");
|
|
635
676
|
const executor = {
|
|
636
677
|
execute: async (request) => {
|
|
637
|
-
return ConcurrentQuery.executeQueryRequest(this[_nativeDb],
|
|
678
|
+
return this._queryMetadataCache.executeCachedQueryRequest(request, async (req) => ConcurrentQuery.executeQueryRequest(this[_nativeDb], req));
|
|
638
679
|
},
|
|
639
680
|
};
|
|
640
681
|
return new ECSqlReader(executor, ecsql, params, config);
|
|
@@ -836,6 +877,7 @@ export class IModelDb extends IModel {
|
|
|
836
877
|
clearCaches(params) {
|
|
837
878
|
if (!params?.instanceCachesOnly) {
|
|
838
879
|
this._statementCache.clear();
|
|
880
|
+
this._queryMetadataCache.clear();
|
|
839
881
|
this._sqliteStatementCache.clear();
|
|
840
882
|
this._classMetaDataRegistry = undefined;
|
|
841
883
|
this._jsClassMap = undefined;
|
|
@@ -1127,6 +1169,7 @@ export class IModelDb extends IModel {
|
|
|
1127
1169
|
const status = this[_nativeDb].cancelTo(txnBeforeAdopt, true);
|
|
1128
1170
|
if (IModelStatus.Success !== status)
|
|
1129
1171
|
Logger.logError(loggerCategory, `Failed to roll back the adopted schema rows after a failed import: ${IModelStatus[status] ?? status}`);
|
|
1172
|
+
this.clearCaches();
|
|
1130
1173
|
}
|
|
1131
1174
|
throw err;
|
|
1132
1175
|
}
|
|
@@ -2189,8 +2232,6 @@ function processSchemaWriteStatus(status) {
|
|
|
2189
2232
|
}
|
|
2190
2233
|
else if (modelIdArg.code) {
|
|
2191
2234
|
const modelId = this._iModel.elements.getElementProps({ code: modelIdArg.code }).id;
|
|
2192
|
-
if (!modelId)
|
|
2193
|
-
throw new IModelError(IModelStatus.NotFound, `Model not found with code: [spec:${modelIdArg.code.spec}, scope:${modelIdArg.code.scope}, value:${modelIdArg.code.value}])`);
|
|
2194
2235
|
args = { partialKey: { id: modelId, baseClassName } };
|
|
2195
2236
|
}
|
|
2196
2237
|
else {
|
|
@@ -2216,7 +2257,7 @@ function processSchemaWriteStatus(status) {
|
|
|
2216
2257
|
*/
|
|
2217
2258
|
getSubModel(modeledElementId, modelClass) {
|
|
2218
2259
|
const modeledElementProps = this._iModel.elements.getElementProps(modeledElementId);
|
|
2219
|
-
if (
|
|
2260
|
+
if (modeledElementProps.id === IModel.rootSubjectId)
|
|
2220
2261
|
throw new IModelError(IModelStatus.NotFound, "Root subject does not have a sub-model");
|
|
2221
2262
|
return this.getModel(modeledElementProps.id, modelClass);
|
|
2222
2263
|
}
|
|
@@ -2229,7 +2270,7 @@ function processSchemaWriteStatus(status) {
|
|
|
2229
2270
|
*/
|
|
2230
2271
|
tryGetSubModel(modeledElementId, modelClass) {
|
|
2231
2272
|
const modeledElementProps = this._iModel.elements.tryGetElementProps(modeledElementId);
|
|
2232
|
-
if (undefined === modeledElementProps
|
|
2273
|
+
if (undefined === modeledElementProps || IModel.rootSubjectId === modeledElementProps.id)
|
|
2233
2274
|
return undefined;
|
|
2234
2275
|
return this.tryGetModel(modeledElementProps.id, modelClass);
|
|
2235
2276
|
}
|
|
@@ -2526,14 +2567,15 @@ function processSchemaWriteStatus(status) {
|
|
|
2526
2567
|
this._iModel[_implicitTxn].deleteElement(ids);
|
|
2527
2568
|
}
|
|
2528
2569
|
/**
|
|
2529
|
-
* Delete multiple elements from the iModel.
|
|
2570
|
+
* Delete multiple elements from the iModel in a single bulk operation. See [[EditTxn.deleteElements]].
|
|
2530
2571
|
* @param ids The ids of the elements to delete. All ids must be well-formed and valid [[Id64String]]s.
|
|
2531
|
-
* @param deleteOptions
|
|
2532
|
-
* @returns A result object
|
|
2572
|
+
* @param deleteOptions Deprecated and ignored; kept for backward compatibility of the signature.
|
|
2573
|
+
* @returns A result object describing the outcome of the operation and the elements that block it (if any).
|
|
2533
2574
|
* @throws [[ITwinError]] if any of the supplied ids are not well-formed/valid [[Id64String]]s.
|
|
2534
2575
|
* @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.
|
|
2535
2576
|
* @beta
|
|
2536
2577
|
*/
|
|
2578
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
2537
2579
|
deleteElements(ids, deleteOptions) {
|
|
2538
2580
|
return this._iModel[_implicitTxn].deleteElements(ids, deleteOptions);
|
|
2539
2581
|
}
|
|
@@ -3347,7 +3389,8 @@ export class BriefcaseDb extends IModelDb {
|
|
|
3347
3389
|
touch.sync(briefcaseDb.watchFilePathName);
|
|
3348
3390
|
// Restart default txn to trigger events when watch file is changed by some other process.
|
|
3349
3391
|
const watcher = fs.watch(briefcaseDb.watchFilePathName, { persistent: false }, () => {
|
|
3350
|
-
|
|
3392
|
+
// The other connection may have changed the schema, so drop everything prepared against the old one.
|
|
3393
|
+
briefcaseDb.clearCaches();
|
|
3351
3394
|
nativeDb.restartDefaultTxn();
|
|
3352
3395
|
briefcaseDb.changeset = briefcaseDb[_nativeDb].getCurrentChangeset();
|
|
3353
3396
|
});
|
|
@@ -3602,7 +3645,7 @@ export class BriefcaseDb extends IModelDb {
|
|
|
3602
3645
|
await this.executeWritable(async () => {
|
|
3603
3646
|
await BriefcaseManager.pullAndApplyChangesets(this, arg ?? {});
|
|
3604
3647
|
SchemaSync.updateDbSchema(this);
|
|
3605
|
-
this
|
|
3648
|
+
this[_refreshIModelProps]();
|
|
3606
3649
|
});
|
|
3607
3650
|
// If this pull enabled or disabled SchemaSync for this briefcase, its reservations must now be re-initialized
|
|
3608
3651
|
if (this.reservations.isServerBased !== SchemaSync.isEnabled(this))
|
|
@@ -3779,7 +3822,6 @@ export class BriefcaseDb extends IModelDb {
|
|
|
3779
3822
|
// pushing changes requires a writeable briefcase
|
|
3780
3823
|
await this.executeWritable(async () => {
|
|
3781
3824
|
await BriefcaseManager.pullMergePush(this, arg);
|
|
3782
|
-
this.initializeIModelDb("pullMerge");
|
|
3783
3825
|
});
|
|
3784
3826
|
// If this pull enabled or disabled SchemaSync for this briefcase, its reservations must now be re-initialized
|
|
3785
3827
|
if (this.reservations.isServerBased !== SchemaSync.isEnabled(this))
|