@itwin/core-backend 4.6.0-dev.3 → 4.6.0-dev.5
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/lib/cjs/BackendHubAccess.js.map +1 -1
- package/lib/cjs/BackendLoggerCategory.js.map +1 -1
- package/lib/cjs/BisCoreSchema.js.map +1 -1
- package/lib/cjs/BlobContainerService.js.map +1 -1
- package/lib/cjs/BriefcaseManager.js.map +1 -1
- package/lib/cjs/Category.js.map +1 -1
- package/lib/cjs/ChangeSummaryManager.js +2 -2
- package/lib/cjs/ChangeSummaryManager.js.map +1 -1
- package/lib/cjs/ChangedElementsDb.js.map +1 -1
- package/lib/cjs/ChangedElementsManager.js.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.js +237 -237
- package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
- package/lib/cjs/ChannelControl.js.map +1 -1
- package/lib/cjs/CheckpointManager.js.map +1 -1
- package/lib/cjs/ClassRegistry.js +5 -5
- package/lib/cjs/ClassRegistry.js.map +1 -1
- package/lib/cjs/CloudSqlite.js.map +1 -1
- package/lib/cjs/CodeService.js.map +1 -1
- package/lib/cjs/CodeSpecs.js.map +1 -1
- package/lib/cjs/ConcurrentQuery.js.map +1 -1
- package/lib/cjs/CustomViewState3dCreator.js.map +1 -1
- package/lib/cjs/DevTools.js.map +1 -1
- package/lib/cjs/DisplayStyle.js.map +1 -1
- package/lib/cjs/ECDb.js.map +1 -1
- package/lib/cjs/ECSchemaXmlContext.js.map +1 -1
- package/lib/cjs/ECSqlStatement.js.map +1 -1
- package/lib/cjs/Element.js.map +1 -1
- package/lib/cjs/ElementAspect.js.map +1 -1
- package/lib/cjs/ElementGraphics.js.map +1 -1
- package/lib/cjs/ElementTreeWalker.js.map +1 -1
- package/lib/cjs/Entity.js.map +1 -1
- package/lib/cjs/EntityReferences.js.map +1 -1
- package/lib/cjs/ExportGraphics.js.map +1 -1
- package/lib/cjs/ExternalSource.js.map +1 -1
- package/lib/cjs/GeoCoordConfig.js.map +1 -1
- package/lib/cjs/GeometrySummary.js +47 -47
- package/lib/cjs/GeometrySummary.js.map +1 -1
- package/lib/cjs/HubMock.js.map +1 -1
- package/lib/cjs/IModelCloneContext.js.map +1 -1
- package/lib/cjs/IModelDb.d.ts +7 -3
- package/lib/cjs/IModelDb.d.ts.map +1 -1
- package/lib/cjs/IModelDb.js +43 -15
- package/lib/cjs/IModelDb.js.map +1 -1
- package/lib/cjs/IModelElementCloneContext.js.map +1 -1
- package/lib/cjs/IModelHost.js.map +1 -1
- package/lib/cjs/IModelJsFs.js.map +1 -1
- package/lib/cjs/IpcHost.js.map +1 -1
- package/lib/cjs/LineStyle.js.map +1 -1
- package/lib/cjs/LocalHub.js +1 -1
- package/lib/cjs/LocalHub.js.map +1 -1
- package/lib/cjs/LocalhostIpcHost.js.map +1 -1
- package/lib/cjs/Material.js.map +1 -1
- package/lib/cjs/Model.js.map +1 -1
- package/lib/cjs/NativeAppStorage.js.map +1 -1
- package/lib/cjs/NativeHost.js.map +1 -1
- package/lib/cjs/NavigationRelationship.js.map +1 -1
- package/lib/cjs/PromiseMemoizer.js.map +1 -1
- package/lib/cjs/PropertyStore.js.map +1 -1
- package/lib/cjs/Relationship.js.map +1 -1
- package/lib/cjs/RpcBackend.js.map +1 -1
- package/lib/cjs/SQLiteDb.js.map +1 -1
- package/lib/cjs/Schema.js.map +1 -1
- package/lib/cjs/SchemaSync.js.map +1 -1
- package/lib/cjs/SchemaUtils.js.map +1 -1
- package/lib/cjs/ServerBasedLocks.js.map +1 -1
- package/lib/cjs/SqliteChangesetReader.js.map +1 -1
- package/lib/cjs/SqliteStatement.js.map +1 -1
- package/lib/cjs/Texture.js.map +1 -1
- package/lib/cjs/TileStorage.js.map +1 -1
- package/lib/cjs/TxnManager.js.map +1 -1
- package/lib/cjs/ViewDefinition.js.map +1 -1
- package/lib/cjs/ViewStateHydrator.js.map +1 -1
- package/lib/cjs/ViewStore.js.map +1 -1
- package/lib/cjs/assets/IModelChange.02.00.00.ecschema.xml +90 -90
- package/lib/cjs/assets/Settings/Schemas/Cloud.Schema.json +44 -44
- package/lib/cjs/assets/Settings/Schemas/Gcs.schema.json +31 -31
- package/lib/cjs/assets/Settings/Schemas/Workspace.Schema.json +52 -52
- package/lib/cjs/assets/Settings/backend.setting.json5 +132 -132
- package/lib/cjs/core-backend.js.map +1 -1
- package/lib/cjs/domains/FunctionalElements.js.map +1 -1
- package/lib/cjs/domains/FunctionalSchema.js.map +1 -1
- package/lib/cjs/domains/GenericElements.js.map +1 -1
- package/lib/cjs/domains/GenericSchema.js.map +1 -1
- package/lib/cjs/rpc/multipart.js.map +1 -1
- package/lib/cjs/rpc/tracing.js.map +1 -1
- package/lib/cjs/rpc/web/logging.js.map +1 -1
- package/lib/cjs/rpc/web/request.js.map +1 -1
- package/lib/cjs/rpc/web/response.js.map +1 -1
- package/lib/cjs/rpc-impl/DevToolsRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/IModelTileRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/WipRpcImpl.js.map +1 -1
- package/lib/cjs/workspace/Settings.js.map +1 -1
- package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
- package/lib/cjs/workspace/Workspace.js.map +1 -1
- package/package.json +13 -13
package/lib/cjs/IModelDb.js
CHANGED
|
@@ -1561,11 +1561,15 @@ exports.IModelDb = IModelDb;
|
|
|
1561
1561
|
throw err;
|
|
1562
1562
|
}
|
|
1563
1563
|
}
|
|
1564
|
-
/**
|
|
1564
|
+
/**
|
|
1565
|
+
* Update some properties of an existing element.
|
|
1566
|
+
* All parts of `elProps` are optional *other than* `id`. If id is missing, an exception is thrown.
|
|
1567
|
+
*
|
|
1565
1568
|
* To support clearing a property value, every property name that is present in the `elProps` object will be updated even if the value is `undefined`.
|
|
1566
1569
|
* To keep an individual element property unchanged, it should either be excluded from the `elProps` parameter or set to its current value.
|
|
1567
1570
|
* @param elProps the properties of the element to update.
|
|
1568
|
-
* @note
|
|
1571
|
+
* @note The values of `classFullName` and `model` *may not be changed* by this method. Further, it will permute the `elProps` object by adding or
|
|
1572
|
+
* overwriting their values to the correct values.
|
|
1569
1573
|
* @throws [[IModelError]] if unable to update the element.
|
|
1570
1574
|
*/
|
|
1571
1575
|
updateElement(elProps) {
|
|
@@ -1798,9 +1802,9 @@ exports.IModelDb = IModelDb;
|
|
|
1798
1802
|
*/
|
|
1799
1803
|
getAspects(elementId, aspectClassFullName, excludedClassFullNames) {
|
|
1800
1804
|
if (aspectClassFullName === undefined) {
|
|
1801
|
-
const allAspects = this.runInstanceQuery(`SELECT $ FROM (
|
|
1802
|
-
SELECT ECInstanceId, ECClassId FROM Bis.ElementMultiAspect WHERE Element.Id = :elementId
|
|
1803
|
-
UNION ALL
|
|
1805
|
+
const allAspects = this.runInstanceQuery(`SELECT $ FROM (
|
|
1806
|
+
SELECT ECInstanceId, ECClassId FROM Bis.ElementMultiAspect WHERE Element.Id = :elementId
|
|
1807
|
+
UNION ALL
|
|
1804
1808
|
SELECT ECInstanceId, ECClassId FROM Bis.ElementUniqueAspect WHERE Element.Id = :elementId) OPTIONS USE_JS_PROP_NAMES DO_NOT_TRUNCATE_BLOB`, elementId, excludedClassFullNames);
|
|
1805
1809
|
if (allAspects.length === 0)
|
|
1806
1810
|
core_bentley_1.Logger.logError(BackendLoggerCategory_1.BackendLoggerCategory.ECDb, `No aspects found for class ${aspectClassFullName} and element ${elementId}`);
|
|
@@ -1818,7 +1822,7 @@ exports.IModelDb = IModelDb;
|
|
|
1818
1822
|
let classIdList = IModelDb.Elements.classMap.get(aspectClassFullName);
|
|
1819
1823
|
if (classIdList === undefined) {
|
|
1820
1824
|
const classIds = [];
|
|
1821
|
-
this._iModel.withPreparedStatement(`select SourceECInstanceId from meta.ClassHasAllBaseClasses where TargetECInstanceId = (select ECInstanceId from meta.ECClassDef where Name='${fullClassName[1]}'
|
|
1825
|
+
this._iModel.withPreparedStatement(`select SourceECInstanceId from meta.ClassHasAllBaseClasses where TargetECInstanceId = (select ECInstanceId from meta.ECClassDef where Name='${fullClassName[1]}'
|
|
1822
1826
|
and Schema.Id = (select ECInstanceId from meta.ECSchemaDef where Name='${fullClassName[0]}')) and SourceECInstanceId != TargetECInstanceId`, (statement) => {
|
|
1823
1827
|
while (statement.step() === core_bentley_1.DbResult.BE_SQLITE_ROW)
|
|
1824
1828
|
classIds.push(statement.getValue(0).getId());
|
|
@@ -1833,10 +1837,10 @@ exports.IModelDb = IModelDb;
|
|
|
1833
1837
|
return [];
|
|
1834
1838
|
}
|
|
1835
1839
|
// Execute an instance query to retrieve all aspects from all the derived classes
|
|
1836
|
-
const aspects = this.runInstanceQuery(`SELECT $ FROM (
|
|
1837
|
-
SELECT ECInstanceId, ECClassId FROM Bis.ElementMultiAspect WHERE Element.Id = :elementId AND ECClassId IN (${classIdList})
|
|
1838
|
-
UNION ALL
|
|
1839
|
-
SELECT ECInstanceId, ECClassId FROM Bis.ElementUniqueAspect WHERE Element.Id = :elementId AND ECClassId IN (${classIdList})
|
|
1840
|
+
const aspects = this.runInstanceQuery(`SELECT $ FROM (
|
|
1841
|
+
SELECT ECInstanceId, ECClassId FROM Bis.ElementMultiAspect WHERE Element.Id = :elementId AND ECClassId IN (${classIdList})
|
|
1842
|
+
UNION ALL
|
|
1843
|
+
SELECT ECInstanceId, ECClassId FROM Bis.ElementUniqueAspect WHERE Element.Id = :elementId AND ECClassId IN (${classIdList})
|
|
1840
1844
|
) OPTIONS USE_JS_PROP_NAMES DO_NOT_TRUNCATE_BLOB`, elementId, excludedClassFullNames);
|
|
1841
1845
|
if (aspects.length === 0)
|
|
1842
1846
|
core_bentley_1.Logger.logError(BackendLoggerCategory_1.BackendLoggerCategory.ECDb, `No aspects found for class ${aspectClassFullName} and element ${elementId}`);
|
|
@@ -2235,13 +2239,37 @@ class BriefcaseDb extends IModelDb {
|
|
|
2235
2239
|
// - push changes
|
|
2236
2240
|
// - release schema lock
|
|
2237
2241
|
// good thing computers are fast. Fortunately upgrading should be rare (and the push time will dominate anyway.) Don't try to optimize any of this away.
|
|
2238
|
-
await withBriefcaseDb(briefcase, async (db) => db.acquireSchemaLock()); // may not really acquire lock if iModel uses "noLocks" mode.
|
|
2239
2242
|
try {
|
|
2240
|
-
await this.doUpgrade(briefcase, { profile: core_common_1.ProfileOptions.Upgrade
|
|
2241
|
-
await this.doUpgrade(briefcase, { domain: core_common_1.DomainOptions.Upgrade, schemaLockHeld: true }, "Upgraded domain schemas");
|
|
2243
|
+
await this.doUpgrade(briefcase, { profile: core_common_1.ProfileOptions.Upgrade }, "Upgraded profile");
|
|
2242
2244
|
}
|
|
2243
|
-
|
|
2244
|
-
|
|
2245
|
+
catch (error) {
|
|
2246
|
+
if (error.errorNumber === core_bentley_1.DbResult.BE_SQLITE_ERROR_DataTransformRequired) {
|
|
2247
|
+
core_bentley_1.Logger.logInfo(loggerCategory, `Profile upgrade contains data transform. Retrying upgrade with a schema lock.`);
|
|
2248
|
+
try {
|
|
2249
|
+
await withBriefcaseDb(briefcase, async (db) => db.acquireSchemaLock()); // may not really acquire lock if iModel uses "noLocks" mode.
|
|
2250
|
+
await this.doUpgrade(briefcase, { profile: core_common_1.ProfileOptions.Upgrade, schemaLockHeld: true }, "Upgraded profile");
|
|
2251
|
+
await this.doUpgrade(briefcase, { domain: core_common_1.DomainOptions.Upgrade, schemaLockHeld: true }, "Upgraded domain schemas");
|
|
2252
|
+
}
|
|
2253
|
+
finally {
|
|
2254
|
+
await withBriefcaseDb(briefcase, async (db) => db.locks.releaseAllLocks());
|
|
2255
|
+
}
|
|
2256
|
+
return;
|
|
2257
|
+
}
|
|
2258
|
+
}
|
|
2259
|
+
try {
|
|
2260
|
+
await this.doUpgrade(briefcase, { domain: core_common_1.DomainOptions.Upgrade }, "Upgraded domain schemas");
|
|
2261
|
+
}
|
|
2262
|
+
catch (error) {
|
|
2263
|
+
if (error.errorNumber === core_bentley_1.DbResult.BE_SQLITE_ERROR_DataTransformRequired) {
|
|
2264
|
+
core_bentley_1.Logger.logInfo(loggerCategory, `Domain schema upgrade contains data transform. Retrying upgrade with a schema lock.`);
|
|
2265
|
+
try {
|
|
2266
|
+
await withBriefcaseDb(briefcase, async (db) => db.acquireSchemaLock()); // may not really acquire lock if iModel uses "noLocks" mode.
|
|
2267
|
+
await this.doUpgrade(briefcase, { domain: core_common_1.DomainOptions.Upgrade, schemaLockHeld: true }, "Upgraded domain schemas");
|
|
2268
|
+
}
|
|
2269
|
+
finally {
|
|
2270
|
+
await withBriefcaseDb(briefcase, async (db) => db.locks.releaseAllLocks());
|
|
2271
|
+
}
|
|
2272
|
+
}
|
|
2245
2273
|
}
|
|
2246
2274
|
}
|
|
2247
2275
|
/** Open a briefcase file and return a new BriefcaseDb to interact with it.
|