@itwin/core-backend 5.12.0-dev.1 → 5.12.0-dev.10
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 +28 -1
- package/lib/cjs/BackendHubAccess.d.ts +1 -1
- package/lib/cjs/BackendHubAccess.js +1 -1
- package/lib/cjs/BackendHubAccess.js.map +1 -1
- package/lib/cjs/ChangeSummaryManager.d.ts.map +1 -1
- package/lib/cjs/ChangeSummaryManager.js +33 -37
- package/lib/cjs/ChangeSummaryManager.js.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.d.ts.map +1 -1
- package/lib/cjs/ChangesetECAdaptor.js +4 -7
- package/lib/cjs/ChangesetECAdaptor.js.map +1 -1
- package/lib/cjs/ChangesetReader.d.ts +65 -23
- package/lib/cjs/ChangesetReader.d.ts.map +1 -1
- package/lib/cjs/ChangesetReader.js +162 -102
- package/lib/cjs/ChangesetReader.js.map +1 -1
- package/lib/cjs/ClassRegistry.d.ts +1 -1
- package/lib/cjs/ClassRegistry.js +1 -1
- package/lib/cjs/ClassRegistry.js.map +1 -1
- package/lib/cjs/ECDb.d.ts +4 -4
- package/lib/cjs/ECDb.d.ts.map +1 -1
- package/lib/cjs/ECDb.js +6 -6
- package/lib/cjs/ECDb.js.map +1 -1
- package/lib/cjs/ECSqlStatement.d.ts +6 -6
- package/lib/cjs/ECSqlStatement.d.ts.map +1 -1
- package/lib/cjs/ECSqlStatement.js +4 -4
- package/lib/cjs/ECSqlStatement.js.map +1 -1
- package/lib/cjs/Element.d.ts +1 -1
- package/lib/cjs/Element.js +1 -1
- package/lib/cjs/Element.js.map +1 -1
- package/lib/cjs/ElementAspect.d.ts +1 -1
- package/lib/cjs/ElementAspect.d.ts.map +1 -1
- package/lib/cjs/ElementAspect.js +7 -11
- package/lib/cjs/ElementAspect.js.map +1 -1
- package/lib/cjs/ElementTreeWalker.d.ts.map +1 -1
- package/lib/cjs/ElementTreeWalker.js +16 -24
- package/lib/cjs/ElementTreeWalker.js.map +1 -1
- package/lib/cjs/Entity.d.ts +1 -1
- package/lib/cjs/Entity.js +1 -1
- package/lib/cjs/Entity.js.map +1 -1
- package/lib/cjs/IModelDb.d.ts +14 -14
- package/lib/cjs/IModelDb.d.ts.map +1 -1
- package/lib/cjs/IModelDb.js +79 -99
- package/lib/cjs/IModelDb.js.map +1 -1
- package/lib/cjs/IModelElementCloneContext.d.ts +1 -1
- package/lib/cjs/IModelElementCloneContext.d.ts.map +1 -1
- package/lib/cjs/IModelElementCloneContext.js +1 -1
- package/lib/cjs/IModelElementCloneContext.js.map +1 -1
- package/lib/cjs/IModelHost.d.ts +2 -2
- package/lib/cjs/IModelHost.js +2 -2
- package/lib/cjs/IModelHost.js.map +1 -1
- package/lib/cjs/Relationship.d.ts.map +1 -1
- package/lib/cjs/Relationship.js +8 -11
- package/lib/cjs/Relationship.js.map +1 -1
- package/lib/cjs/SQLiteDb.d.ts +1 -1
- package/lib/cjs/SQLiteDb.js +1 -1
- package/lib/cjs/SQLiteDb.js.map +1 -1
- package/lib/cjs/SqliteStatement.d.ts +1 -1
- package/lib/cjs/SqliteStatement.d.ts.map +1 -1
- package/lib/cjs/SqliteStatement.js +1 -1
- package/lib/cjs/SqliteStatement.js.map +1 -1
- package/lib/cjs/ViewDefinition.d.ts.map +1 -1
- package/lib/cjs/ViewDefinition.js +8 -12
- package/lib/cjs/ViewDefinition.js.map +1 -1
- package/lib/cjs/ViewStore.d.ts.map +1 -1
- package/lib/cjs/ViewStore.js +6 -8
- package/lib/cjs/ViewStore.js.map +1 -1
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.js +8 -11
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
- package/lib/cjs/internal/ChannelAdmin.d.ts.map +1 -1
- package/lib/cjs/internal/ChannelAdmin.js +6 -10
- package/lib/cjs/internal/ChannelAdmin.js.map +1 -1
- package/lib/cjs/internal/annotations/fields.d.ts.map +1 -1
- package/lib/cjs/internal/annotations/fields.js +19 -43
- package/lib/cjs/internal/annotations/fields.js.map +1 -1
- package/lib/cjs/internal/workspace/SettingsSchemasImpl.d.ts.map +1 -1
- package/lib/cjs/internal/workspace/SettingsSchemasImpl.js +8 -7
- package/lib/cjs/internal/workspace/SettingsSchemasImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.d.ts.map +1 -1
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.js +2 -3
- package/lib/cjs/rpc-impl/IModelReadRpcImpl.js.map +1 -1
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.d.ts +2 -2
- package/lib/cjs/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.d.ts +1 -1
- package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js +1 -1
- package/lib/cjs/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
- package/lib/cjs/workspace/SettingsSchemas.d.ts +28 -2
- package/lib/cjs/workspace/SettingsSchemas.d.ts.map +1 -1
- package/lib/cjs/workspace/SettingsSchemas.js.map +1 -1
- package/lib/esm/BackendHubAccess.d.ts +1 -1
- package/lib/esm/BackendHubAccess.js +1 -1
- package/lib/esm/BackendHubAccess.js.map +1 -1
- package/lib/esm/ChangeSummaryManager.d.ts.map +1 -1
- package/lib/esm/ChangeSummaryManager.js +34 -38
- package/lib/esm/ChangeSummaryManager.js.map +1 -1
- package/lib/esm/ChangesetECAdaptor.d.ts.map +1 -1
- package/lib/esm/ChangesetECAdaptor.js +5 -8
- package/lib/esm/ChangesetECAdaptor.js.map +1 -1
- package/lib/esm/ChangesetReader.d.ts +65 -23
- package/lib/esm/ChangesetReader.d.ts.map +1 -1
- package/lib/esm/ChangesetReader.js +163 -103
- package/lib/esm/ChangesetReader.js.map +1 -1
- package/lib/esm/ClassRegistry.d.ts +1 -1
- package/lib/esm/ClassRegistry.js +1 -1
- package/lib/esm/ClassRegistry.js.map +1 -1
- package/lib/esm/ECDb.d.ts +4 -4
- package/lib/esm/ECDb.d.ts.map +1 -1
- package/lib/esm/ECDb.js +6 -6
- package/lib/esm/ECDb.js.map +1 -1
- package/lib/esm/ECSqlStatement.d.ts +6 -6
- package/lib/esm/ECSqlStatement.d.ts.map +1 -1
- package/lib/esm/ECSqlStatement.js +4 -4
- package/lib/esm/ECSqlStatement.js.map +1 -1
- package/lib/esm/Element.d.ts +1 -1
- package/lib/esm/Element.js +1 -1
- package/lib/esm/Element.js.map +1 -1
- package/lib/esm/ElementAspect.d.ts +1 -1
- package/lib/esm/ElementAspect.d.ts.map +1 -1
- package/lib/esm/ElementAspect.js +9 -13
- package/lib/esm/ElementAspect.js.map +1 -1
- package/lib/esm/ElementTreeWalker.d.ts.map +1 -1
- package/lib/esm/ElementTreeWalker.js +18 -26
- package/lib/esm/ElementTreeWalker.js.map +1 -1
- package/lib/esm/Entity.d.ts +1 -1
- package/lib/esm/Entity.js +1 -1
- package/lib/esm/Entity.js.map +1 -1
- package/lib/esm/IModelDb.d.ts +14 -14
- package/lib/esm/IModelDb.d.ts.map +1 -1
- package/lib/esm/IModelDb.js +80 -100
- package/lib/esm/IModelDb.js.map +1 -1
- package/lib/esm/IModelElementCloneContext.d.ts +1 -1
- package/lib/esm/IModelElementCloneContext.d.ts.map +1 -1
- package/lib/esm/IModelElementCloneContext.js +1 -1
- package/lib/esm/IModelElementCloneContext.js.map +1 -1
- package/lib/esm/IModelHost.d.ts +2 -2
- package/lib/esm/IModelHost.js +2 -2
- package/lib/esm/IModelHost.js.map +1 -1
- package/lib/esm/Relationship.d.ts.map +1 -1
- package/lib/esm/Relationship.js +9 -12
- package/lib/esm/Relationship.js.map +1 -1
- package/lib/esm/SQLiteDb.d.ts +1 -1
- package/lib/esm/SQLiteDb.js +1 -1
- package/lib/esm/SQLiteDb.js.map +1 -1
- package/lib/esm/SqliteStatement.d.ts +1 -1
- package/lib/esm/SqliteStatement.d.ts.map +1 -1
- package/lib/esm/SqliteStatement.js +1 -1
- package/lib/esm/SqliteStatement.js.map +1 -1
- package/lib/esm/ViewDefinition.d.ts.map +1 -1
- package/lib/esm/ViewDefinition.js +10 -14
- package/lib/esm/ViewDefinition.js.map +1 -1
- package/lib/esm/ViewStore.d.ts.map +1 -1
- package/lib/esm/ViewStore.js +7 -9
- package/lib/esm/ViewStore.js.map +1 -1
- package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts.map +1 -1
- package/lib/esm/annotations/ElementDrivesTextAnnotation.js +10 -13
- package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
- package/lib/esm/internal/ChannelAdmin.d.ts.map +1 -1
- package/lib/esm/internal/ChannelAdmin.js +7 -11
- package/lib/esm/internal/ChannelAdmin.js.map +1 -1
- package/lib/esm/internal/annotations/fields.d.ts.map +1 -1
- package/lib/esm/internal/annotations/fields.js +21 -45
- package/lib/esm/internal/annotations/fields.js.map +1 -1
- package/lib/esm/internal/workspace/SettingsSchemasImpl.d.ts.map +1 -1
- package/lib/esm/internal/workspace/SettingsSchemasImpl.js +8 -7
- package/lib/esm/internal/workspace/SettingsSchemasImpl.js.map +1 -1
- package/lib/esm/rpc-impl/IModelReadRpcImpl.d.ts.map +1 -1
- package/lib/esm/rpc-impl/IModelReadRpcImpl.js +2 -3
- package/lib/esm/rpc-impl/IModelReadRpcImpl.js.map +1 -1
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.d.ts +2 -2
- package/lib/esm/rpc-impl/RpcBriefcaseUtility.js.map +1 -1
- package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.d.ts +1 -1
- package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js +1 -1
- package/lib/esm/rpc-impl/SnapshotIModelRpcImpl.js.map +1 -1
- package/lib/esm/test/TestUtils.d.ts +1 -1
- package/lib/esm/test/TestUtils.d.ts.map +1 -1
- package/lib/esm/test/TestUtils.js +1 -1
- package/lib/esm/test/TestUtils.js.map +1 -1
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js +1 -1
- package/lib/esm/test/hubaccess/BriefcaseManager.test.js.map +1 -1
- package/lib/esm/test/imodel/IModel.test.js +9 -3
- package/lib/esm/test/imodel/IModel.test.js.map +1 -1
- package/lib/esm/test/standalone/ChangesetReader.test.js +725 -110
- package/lib/esm/test/standalone/ChangesetReader.test.js.map +1 -1
- package/lib/esm/test/standalone/SettingsSchemas.test.js +6 -0
- package/lib/esm/test/standalone/SettingsSchemas.test.js.map +1 -1
- package/lib/esm/workspace/SettingsSchemas.d.ts +28 -2
- package/lib/esm/workspace/SettingsSchemas.d.ts.map +1 -1
- package/lib/esm/workspace/SettingsSchemas.js.map +1 -1
- package/package.json +14 -14
package/lib/cjs/IModelDb.js
CHANGED
|
@@ -166,7 +166,7 @@ class IModelDb extends core_common_1.IModel {
|
|
|
166
166
|
_schemaMap;
|
|
167
167
|
_schemaContext;
|
|
168
168
|
_schemasPromise;
|
|
169
|
-
/** @deprecated in 5.0.0 -
|
|
169
|
+
/** @deprecated in 5.0.0 - might be removed in next major version. Use [[fonts]]. */
|
|
170
170
|
_fontMap; // eslint-disable-line @typescript-eslint/no-deprecated
|
|
171
171
|
_fonts = (0, IModelDbFontsImpl_1.createIModelDbFonts)(this);
|
|
172
172
|
_workspace;
|
|
@@ -241,7 +241,7 @@ class IModelDb extends core_common_1.IModel {
|
|
|
241
241
|
restartDefaultTxn() {
|
|
242
242
|
this[Symbols_1._nativeDb].restartDefaultTxn();
|
|
243
243
|
}
|
|
244
|
-
/** @deprecated in 5.0.0 -
|
|
244
|
+
/** @deprecated in 5.0.0 - might be removed in next major version. Use [[fonts]]. */
|
|
245
245
|
get fontMap() {
|
|
246
246
|
return this._fontMap ?? (this._fontMap = new core_common_1.FontMap(this[Symbols_1._nativeDb].readFontMap())); // eslint-disable-line @typescript-eslint/no-deprecated
|
|
247
247
|
}
|
|
@@ -524,7 +524,7 @@ class IModelDb extends core_common_1.IModel {
|
|
|
524
524
|
* @returns the value returned by `callback`.
|
|
525
525
|
* @see [[withStatement]]
|
|
526
526
|
* @public
|
|
527
|
-
* @deprecated in 4.11 -
|
|
527
|
+
* @deprecated in 4.11 - might be removed in next major version. Use [[createQueryReader]] instead.
|
|
528
528
|
*/
|
|
529
529
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
530
530
|
withPreparedStatement(ecsql, callback, logErrors = true) {
|
|
@@ -556,7 +556,7 @@ class IModelDb extends core_common_1.IModel {
|
|
|
556
556
|
* @returns the value returned by `callback`.
|
|
557
557
|
* @see [[withPreparedStatement]]
|
|
558
558
|
* @public
|
|
559
|
-
* @deprecated in 4.11 -
|
|
559
|
+
* @deprecated in 4.11 - might be removed in next major version. Use [[createQueryReader]] instead.
|
|
560
560
|
*/
|
|
561
561
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
562
562
|
withStatement(ecsql, callback, logErrors = true) {
|
|
@@ -593,7 +593,7 @@ class IModelDb extends core_common_1.IModel {
|
|
|
593
593
|
* */
|
|
594
594
|
createQueryReader(ecsql, params, config) {
|
|
595
595
|
if (!this[Symbols_1._nativeDb].isOpen())
|
|
596
|
-
throw new core_common_1.IModelError(core_bentley_1.DbResult.
|
|
596
|
+
throw new core_common_1.IModelError(core_bentley_1.DbResult.BE_SQLITE_ERROR_NOTOPEN, "db not open");
|
|
597
597
|
const executor = {
|
|
598
598
|
execute: async (request) => {
|
|
599
599
|
return ConcurrentQuery_1.ConcurrentQuery.executeQueryRequest(this[Symbols_1._nativeDb], request);
|
|
@@ -618,7 +618,7 @@ class IModelDb extends core_common_1.IModel {
|
|
|
618
618
|
* */
|
|
619
619
|
withQueryReader(ecsql, callback, params, config) {
|
|
620
620
|
if (!this[Symbols_1._nativeDb].isOpen())
|
|
621
|
-
throw new core_common_1.IModelError(core_bentley_1.DbResult.
|
|
621
|
+
throw new core_common_1.IModelError(core_bentley_1.DbResult.BE_SQLITE_ERROR_NOTOPEN, "db not open");
|
|
622
622
|
const executor = new ECSqlRowExecutor_1.ECSqlRowExecutor(this);
|
|
623
623
|
const reader = new ECSqlSyncReader_1.ECSqlSyncReader(executor, ecsql, params, config);
|
|
624
624
|
const release = () => executor[Symbol.dispose]();
|
|
@@ -777,19 +777,17 @@ class IModelDb extends core_common_1.IModel {
|
|
|
777
777
|
if (typeof params.offset === "number" && params.offset > 0)
|
|
778
778
|
sql += ` OFFSET ${params.offset}`;
|
|
779
779
|
const ids = new Set();
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
if (row.id !== undefined) {
|
|
786
|
-
ids.add(row.id);
|
|
780
|
+
this.withQueryReader(sql, (reader) => {
|
|
781
|
+
for (const row of reader) {
|
|
782
|
+
const id = row[0];
|
|
783
|
+
if (id !== undefined) {
|
|
784
|
+
ids.add(id);
|
|
787
785
|
if (ids.size > IModelDb.maxLimit) {
|
|
788
786
|
throw new core_common_1.IModelError(core_bentley_1.IModelStatus.BadRequest, "Max LIMIT exceeded in SELECT statement");
|
|
789
787
|
}
|
|
790
788
|
}
|
|
791
789
|
}
|
|
792
|
-
});
|
|
790
|
+
}, core_common_1.QueryBinder.from(params.bindings));
|
|
793
791
|
return ids;
|
|
794
792
|
}
|
|
795
793
|
clearCaches(params) {
|
|
@@ -878,7 +876,7 @@ class IModelDb extends core_common_1.IModel {
|
|
|
878
876
|
}
|
|
879
877
|
}
|
|
880
878
|
/** @internal
|
|
881
|
-
* @deprecated in 4.8 -
|
|
879
|
+
* @deprecated in 4.8 - might be removed in next major version. Use `txns.reverseTxns`.
|
|
882
880
|
*/
|
|
883
881
|
reverseTxns(numOperations) {
|
|
884
882
|
return this[Symbols_1._nativeDb].reverseTxns(numOperations);
|
|
@@ -1245,7 +1243,7 @@ class IModelDb extends core_common_1.IModel {
|
|
|
1245
1243
|
}
|
|
1246
1244
|
/** The registry of entity metadata for this iModel.
|
|
1247
1245
|
* @internal
|
|
1248
|
-
* @deprecated in 5.0 -
|
|
1246
|
+
* @deprecated in 5.0 - might be removed in next major version. Use `getSchemaView()` from the `iModel` instead.
|
|
1249
1247
|
*
|
|
1250
1248
|
* @example
|
|
1251
1249
|
* ```typescript
|
|
@@ -1360,7 +1358,7 @@ class IModelDb extends core_common_1.IModel {
|
|
|
1360
1358
|
* @param sql The ECSQL statement to prepare
|
|
1361
1359
|
* @param logErrors Determines if error will be logged if statement fail to prepare
|
|
1362
1360
|
* @throws [[IModelError]] if there is a problem preparing the statement.
|
|
1363
|
-
* @deprecated in 4.11 -
|
|
1361
|
+
* @deprecated in 4.11 - might be removed in next major version. Use [IModelDb.createQueryReader]($backend) or [ECDb.createQueryReader]($backend) to query.
|
|
1364
1362
|
*/
|
|
1365
1363
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
1366
1364
|
prepareStatement(sql, logErrors = true) {
|
|
@@ -1372,7 +1370,7 @@ class IModelDb extends core_common_1.IModel {
|
|
|
1372
1370
|
/** Prepare an ECSQL statement.
|
|
1373
1371
|
* @param sql The ECSQL statement to prepare
|
|
1374
1372
|
* @returns `undefined` if there is a problem preparing the statement.
|
|
1375
|
-
* @deprecated in 4.11 -
|
|
1373
|
+
* @deprecated in 4.11 - might be removed in next major version. Use [IModelDb.createQueryReader]($backend) or [ECDb.createQueryReader]($backend) to query.
|
|
1376
1374
|
*/
|
|
1377
1375
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
1378
1376
|
tryPrepareStatement(sql) {
|
|
@@ -1422,7 +1420,7 @@ class IModelDb extends core_common_1.IModel {
|
|
|
1422
1420
|
}
|
|
1423
1421
|
/** Get metadata for a class. This method will load the metadata from the iModel into the cache as a side-effect, if necessary.
|
|
1424
1422
|
* @throws [[IModelError]] if the metadata cannot be found nor loaded.
|
|
1425
|
-
* @deprecated in 5.0 -
|
|
1423
|
+
* @deprecated in 5.0 - might be removed in next major version. Use `getSchemaView()` on the iModel and call `view.findClass(...)` instead.
|
|
1426
1424
|
*
|
|
1427
1425
|
* @example
|
|
1428
1426
|
* * ```typescript
|
|
@@ -1449,7 +1447,7 @@ class IModelDb extends core_common_1.IModel {
|
|
|
1449
1447
|
return metadata;
|
|
1450
1448
|
}
|
|
1451
1449
|
/** Identical to [[getMetaData]], except it returns `undefined` instead of throwing an error if the metadata cannot be found nor loaded.
|
|
1452
|
-
* @deprecated in 5.0 -
|
|
1450
|
+
* @deprecated in 5.0 - might be removed in next major version. Use `getSchemaView()` on the iModel and call `view.findClass(...)` instead.
|
|
1453
1451
|
*
|
|
1454
1452
|
* @example
|
|
1455
1453
|
* * ```typescript
|
|
@@ -1478,7 +1476,7 @@ class IModelDb extends core_common_1.IModel {
|
|
|
1478
1476
|
* @param func The callback to be invoked on each property
|
|
1479
1477
|
* @param includeCustom If true (default), include custom-handled properties in the iteration. Otherwise, skip custom-handled properties.
|
|
1480
1478
|
* @note Custom-handled properties are core properties that have behavior enforced by C++ handlers.
|
|
1481
|
-
* @deprecated in 5.0 -
|
|
1479
|
+
* @deprecated in 5.0 - might be removed in next major version. Use `getSchemaView()` on the iModel and iterate `view.findClass(classFullName)?.getProperties()` instead.
|
|
1482
1480
|
*
|
|
1483
1481
|
* @example
|
|
1484
1482
|
* ```typescript
|
|
@@ -1505,7 +1503,7 @@ class IModelDb extends core_common_1.IModel {
|
|
|
1505
1503
|
* @param func The callback to be invoked on each property
|
|
1506
1504
|
* @param includeCustom If true (default), include custom-handled properties in the iteration. Otherwise, skip custom-handled properties.
|
|
1507
1505
|
* @note Custom-handled properties are core properties that have behavior enforced by C++ handlers.
|
|
1508
|
-
* @deprecated in 5.0 -
|
|
1506
|
+
* @deprecated in 5.0 - might be removed in next major version. Use `getSchemaView()` on the iModel and iterate `view.findClass(classFullName)?.getProperties()` instead.
|
|
1509
1507
|
*
|
|
1510
1508
|
* @example
|
|
1511
1509
|
* ```typescript
|
|
@@ -1536,7 +1534,7 @@ class IModelDb extends core_common_1.IModel {
|
|
|
1536
1534
|
}
|
|
1537
1535
|
/**
|
|
1538
1536
|
* @internal
|
|
1539
|
-
* @deprecated in 5.0 -
|
|
1537
|
+
* @deprecated in 5.0 - might be removed in next major version. Please use `schemaContext` from `iModel` instead to get metadata.
|
|
1540
1538
|
*/
|
|
1541
1539
|
loadMetaData(classFullName) {
|
|
1542
1540
|
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
@@ -1588,17 +1586,15 @@ class IModelDb extends core_common_1.IModel {
|
|
|
1588
1586
|
*/
|
|
1589
1587
|
querySchemaVersionNumbers(schemaName) {
|
|
1590
1588
|
const sql = `SELECT VersionMajor,VersionWrite,VersionMinor FROM ECDbMeta.ECSchemaDef WHERE Name=:schemaName LIMIT 1`;
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
const
|
|
1596
|
-
const write = statement.getValue(1).getInteger(); // ECSchemaDef.VersionWrite --> semver.minor
|
|
1597
|
-
const minor = statement.getValue(2).getInteger(); // ECSchemaDef.VersionMinor --> semver.patch
|
|
1589
|
+
return this.withQueryReader(sql, (reader) => {
|
|
1590
|
+
if (reader.step()) {
|
|
1591
|
+
const read = reader.current[0]; // ECSchemaDef.VersionMajor --> semver.major
|
|
1592
|
+
const write = reader.current[1]; // ECSchemaDef.VersionWrite --> semver.minor
|
|
1593
|
+
const minor = reader.current[2]; // ECSchemaDef.VersionMinor --> semver.patch
|
|
1598
1594
|
return new ecschema_metadata_1.ECVersion(read, write, minor);
|
|
1599
1595
|
}
|
|
1600
1596
|
return undefined;
|
|
1601
|
-
});
|
|
1597
|
+
}, new core_common_1.QueryBinder().bindString("schemaName", schemaName));
|
|
1602
1598
|
}
|
|
1603
1599
|
/** Returns true if the specified schema exists in the iModel and is no older than the specified minimum version.
|
|
1604
1600
|
* @beta
|
|
@@ -2054,14 +2050,12 @@ function processSchemaWriteStatus(status) {
|
|
|
2054
2050
|
*/
|
|
2055
2051
|
queryLastModifiedTime(modelId) {
|
|
2056
2052
|
const sql = `SELECT LastMod FROM ${Model_1.Model.classFullName} WHERE ECInstanceId=:modelId`;
|
|
2057
|
-
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
if (core_bentley_1.DbResult.BE_SQLITE_ROW === statement.step()) {
|
|
2061
|
-
return statement.getValue(0).getDateTime();
|
|
2053
|
+
return this._iModel.withQueryReader(sql, (reader) => {
|
|
2054
|
+
if (reader.step()) {
|
|
2055
|
+
return reader.current[0];
|
|
2062
2056
|
}
|
|
2063
2057
|
throw new core_common_1.IModelError(core_bentley_1.IModelStatus.InvalidId, `Can't get lastMod time for Model ${modelId}`);
|
|
2064
|
-
});
|
|
2058
|
+
}, new core_common_1.QueryBinder().bindId("modelId", modelId));
|
|
2065
2059
|
}
|
|
2066
2060
|
/** Get the Model with the specified identifier.
|
|
2067
2061
|
* @param modelId The Model identifier.
|
|
@@ -2389,13 +2383,11 @@ function processSchemaWriteStatus(status) {
|
|
|
2389
2383
|
*/
|
|
2390
2384
|
queryLastModifiedTime(elementId) {
|
|
2391
2385
|
const sql = "SELECT LastMod FROM BisCore:Element WHERE ECInstanceId=:elementId";
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
if (core_bentley_1.DbResult.BE_SQLITE_ROW === statement.step())
|
|
2396
|
-
return statement.getValue(0).getDateTime();
|
|
2386
|
+
return this._iModel.withQueryReader(sql, (reader) => {
|
|
2387
|
+
if (reader.step())
|
|
2388
|
+
return reader.current[0];
|
|
2397
2389
|
throw new core_common_1.IModelError(core_bentley_1.IModelStatus.InvalidId, `Can't get lastMod time for Element ${elementId}`);
|
|
2398
|
-
});
|
|
2390
|
+
}, new core_common_1.QueryBinder().bindId("elementId", elementId));
|
|
2399
2391
|
}
|
|
2400
2392
|
/** Create a new instance of an element.
|
|
2401
2393
|
* @param elProps The properties of the new element.
|
|
@@ -2470,15 +2462,13 @@ function processSchemaWriteStatus(status) {
|
|
|
2470
2462
|
*/
|
|
2471
2463
|
queryChildren(elementId) {
|
|
2472
2464
|
const sql = "SELECT ECInstanceId FROM BisCore:Element WHERE Parent.Id=:elementId";
|
|
2473
|
-
|
|
2474
|
-
return this._iModel.withPreparedStatement(sql, (statement) => {
|
|
2475
|
-
statement.bindId("elementId", elementId);
|
|
2465
|
+
return this._iModel.withQueryReader(sql, (reader) => {
|
|
2476
2466
|
const childIds = [];
|
|
2477
|
-
|
|
2478
|
-
childIds.push(
|
|
2467
|
+
for (const row of reader) {
|
|
2468
|
+
childIds.push(row[0]);
|
|
2479
2469
|
}
|
|
2480
2470
|
return childIds;
|
|
2481
|
-
});
|
|
2471
|
+
}, new core_common_1.QueryBinder().bindId("elementId", elementId));
|
|
2482
2472
|
}
|
|
2483
2473
|
/** Query for the parent of the specified element.
|
|
2484
2474
|
* @param elementId The element to check for a parent
|
|
@@ -2486,14 +2476,12 @@ function processSchemaWriteStatus(status) {
|
|
|
2486
2476
|
* @throws [[IModelError]] if the element does not exist
|
|
2487
2477
|
*/
|
|
2488
2478
|
queryParent(elementId) {
|
|
2489
|
-
|
|
2490
|
-
|
|
2491
|
-
stmt.bindId(1, elementId);
|
|
2492
|
-
if (stmt.step() !== core_bentley_1.DbResult.BE_SQLITE_ROW)
|
|
2479
|
+
return this._iModel.withQueryReader(`select parent.id from ${Element_1.Element.classFullName} where ecinstanceid=?`, (reader) => {
|
|
2480
|
+
if (!reader.step())
|
|
2493
2481
|
throw new core_common_1.IModelError(core_bentley_1.IModelStatus.NotFound, `Element=${elementId}`);
|
|
2494
|
-
const value =
|
|
2495
|
-
return value
|
|
2496
|
-
});
|
|
2482
|
+
const value = reader.current[0];
|
|
2483
|
+
return value ?? undefined;
|
|
2484
|
+
}, new core_common_1.QueryBinder().bindId(1, elementId));
|
|
2497
2485
|
}
|
|
2498
2486
|
/** Returns true if the specified Element has a sub-model.
|
|
2499
2487
|
* @see [[IModelDb.Models.getSubModel]]
|
|
@@ -2503,11 +2491,9 @@ function processSchemaWriteStatus(status) {
|
|
|
2503
2491
|
return false; // Special case since the RepositoryModel does not sub-model the root Subject
|
|
2504
2492
|
// A sub-model will have the same Id value as the element it is describing
|
|
2505
2493
|
const sql = "SELECT ECInstanceId FROM BisCore:Model WHERE ECInstanceId=:elementId";
|
|
2506
|
-
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
return core_bentley_1.DbResult.BE_SQLITE_ROW === statement.step();
|
|
2510
|
-
});
|
|
2494
|
+
return this._iModel.withQueryReader(sql, (reader) => {
|
|
2495
|
+
return reader.step();
|
|
2496
|
+
}, new core_common_1.QueryBinder().bindId("elementId", elementId));
|
|
2511
2497
|
}
|
|
2512
2498
|
/** Get the root subject element. */
|
|
2513
2499
|
getRootSubject() { return this.getElement(core_common_1.IModel.rootSubjectId); }
|
|
@@ -2517,37 +2503,33 @@ function processSchemaWriteStatus(status) {
|
|
|
2517
2503
|
* @internal
|
|
2518
2504
|
*/
|
|
2519
2505
|
_queryAspects(elementId, fromClassFullName, excludedClassFullNames) {
|
|
2520
|
-
const sql = `SELECT ECInstanceId,ECClassId FROM ${fromClassFullName} WHERE Element.Id=:elementId ORDER BY ECClassId,ECInstanceId`; // ORDER BY to maximize statement reuse
|
|
2521
|
-
|
|
2522
|
-
return this._iModel.withPreparedStatement(sql, (statement) => {
|
|
2523
|
-
statement.bindId("elementId", elementId);
|
|
2506
|
+
const sql = `SELECT ECInstanceId, ec_classname(ECClassId, 's:c') FROM ${fromClassFullName} WHERE Element.Id=:elementId ORDER BY ECClassId,ECInstanceId`; // ORDER BY to maximize statement reuse
|
|
2507
|
+
return this._iModel.withQueryReader(sql, (reader) => {
|
|
2524
2508
|
const aspects = [];
|
|
2525
|
-
|
|
2526
|
-
const aspectInstanceId =
|
|
2527
|
-
const aspectClassFullName =
|
|
2509
|
+
for (const row of reader) {
|
|
2510
|
+
const aspectInstanceId = row[0];
|
|
2511
|
+
const aspectClassFullName = row[1];
|
|
2528
2512
|
if ((undefined === excludedClassFullNames) || (!excludedClassFullNames.has(aspectClassFullName))) {
|
|
2529
2513
|
aspects.push(this._queryAspect(aspectInstanceId, aspectClassFullName));
|
|
2530
2514
|
}
|
|
2531
2515
|
}
|
|
2532
2516
|
return aspects;
|
|
2533
|
-
});
|
|
2517
|
+
}, new core_common_1.QueryBinder().bindId("elementId", elementId));
|
|
2534
2518
|
}
|
|
2535
2519
|
/** Query for aspect by ECInstanceId
|
|
2536
2520
|
* @throws [[IModelError]]
|
|
2537
2521
|
*/
|
|
2538
2522
|
_queryAspect(aspectInstanceId, aspectClassName) {
|
|
2539
|
-
const sql = `SELECT
|
|
2540
|
-
|
|
2541
|
-
|
|
2542
|
-
|
|
2543
|
-
|
|
2544
|
-
const aspectProps = statement.getRow(); // start with everything that SELECT * returned
|
|
2545
|
-
aspectProps.classFullName = aspectProps.className.replace(".", ":"); // add in property required by EntityProps
|
|
2546
|
-
aspectProps.className = undefined; // clear property from SELECT * that we don't want in the final instance
|
|
2523
|
+
const sql = `SELECT *, ec_classname(ECClassId, 's:c') classFullName FROM ${aspectClassName} WHERE ECInstanceId=:aspectInstanceId`;
|
|
2524
|
+
const aspect = this._iModel.withQueryReader(sql, (reader) => {
|
|
2525
|
+
if (reader.step()) {
|
|
2526
|
+
const aspectProps = { ...reader.current.toRow() }; // start with everything that SELECT * returned; classFullName is supplied by the ec_classname alias
|
|
2527
|
+
aspectProps.className = undefined; // clear the raw ECClassId-derived property from SELECT * that we don't want in the final instance
|
|
2547
2528
|
return aspectProps;
|
|
2548
2529
|
}
|
|
2549
2530
|
return undefined;
|
|
2550
|
-
|
|
2531
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
2532
|
+
}, new core_common_1.QueryBinder().bindId("aspectInstanceId", aspectInstanceId), { rowFormat: core_common_1.QueryRowFormat.UseJsPropertyNames });
|
|
2551
2533
|
if (undefined === aspect) {
|
|
2552
2534
|
throw new core_common_1.IModelError(core_bentley_1.IModelStatus.NotFound, `ElementAspect not found ${aspectInstanceId}, ${aspectClassName}`);
|
|
2553
2535
|
}
|
|
@@ -2557,12 +2539,10 @@ function processSchemaWriteStatus(status) {
|
|
|
2557
2539
|
* @throws [[IModelError]]
|
|
2558
2540
|
*/
|
|
2559
2541
|
getAspect(aspectInstanceId) {
|
|
2560
|
-
const sql = "SELECT ECClassId FROM BisCore:ElementAspect WHERE ECInstanceId=:aspectInstanceId";
|
|
2561
|
-
|
|
2562
|
-
|
|
2563
|
-
|
|
2564
|
-
return (core_bentley_1.DbResult.BE_SQLITE_ROW === statement.step()) ? statement.getValue(0).getClassNameForClassId().replace(".", ":") : undefined;
|
|
2565
|
-
});
|
|
2542
|
+
const sql = "SELECT ec_classname(ECClassId, 's:c') FROM BisCore:ElementAspect WHERE ECInstanceId=:aspectInstanceId";
|
|
2543
|
+
const aspectClassFullName = this._iModel.withQueryReader(sql, (reader) => {
|
|
2544
|
+
return reader.step() ? reader.current[0] : undefined;
|
|
2545
|
+
}, new core_common_1.QueryBinder().bindId("aspectInstanceId", aspectInstanceId));
|
|
2566
2546
|
if (undefined === aspectClassFullName) {
|
|
2567
2547
|
throw new core_common_1.IModelError(core_bentley_1.IModelStatus.NotFound, `ElementAspect not found ${aspectInstanceId}`);
|
|
2568
2548
|
}
|
|
@@ -2570,13 +2550,12 @@ function processSchemaWriteStatus(status) {
|
|
|
2570
2550
|
}
|
|
2571
2551
|
static classMap = new Map();
|
|
2572
2552
|
runInstanceQuery(sql, elementId, excludedClassFullNames) {
|
|
2573
|
-
|
|
2574
|
-
return this._iModel.withPreparedStatement(sql, (statement) => {
|
|
2575
|
-
statement.bindId("elementId", elementId);
|
|
2553
|
+
return this._iModel.withQueryReader(sql, (reader) => {
|
|
2576
2554
|
const aspects = [];
|
|
2577
|
-
|
|
2555
|
+
for (const queryRow of reader) {
|
|
2578
2556
|
const row = {};
|
|
2579
|
-
const
|
|
2557
|
+
const rawInstance = queryRow[0];
|
|
2558
|
+
const parsedRow = typeof rawInstance === "string" ? JSON.parse(rawInstance) : rawInstance;
|
|
2580
2559
|
// eslint-disable-next-line guard-for-in
|
|
2581
2560
|
for (const key in parsedRow) {
|
|
2582
2561
|
const jsName = core_common_1.ECJsNames.toJsName(key[0].toUpperCase() + key.substring(1));
|
|
@@ -2589,7 +2568,7 @@ function processSchemaWriteStatus(status) {
|
|
|
2589
2568
|
aspects.push(this._iModel.constructEntity(aspectProps));
|
|
2590
2569
|
}
|
|
2591
2570
|
return aspects;
|
|
2592
|
-
});
|
|
2571
|
+
}, new core_common_1.QueryBinder().bindId("elementId", elementId));
|
|
2593
2572
|
}
|
|
2594
2573
|
/** Get the ElementAspect instances that are owned by the specified element.
|
|
2595
2574
|
* @param elementId Get ElementAspects associated with this Element
|
|
@@ -2620,14 +2599,15 @@ function processSchemaWriteStatus(status) {
|
|
|
2620
2599
|
let classIdList = IModelDb.Elements.classMap.get(aspectClassFullName);
|
|
2621
2600
|
if (classIdList === undefined) {
|
|
2622
2601
|
const classIds = [];
|
|
2623
|
-
|
|
2624
|
-
|
|
2625
|
-
|
|
2626
|
-
|
|
2627
|
-
|
|
2628
|
-
|
|
2629
|
-
|
|
2630
|
-
|
|
2602
|
+
const sql = `select SourceECInstanceId from meta.ClassHasAllBaseClasses where TargetECInstanceId = (select ECInstanceId from meta.ECClassDef where Name=:className
|
|
2603
|
+
and Schema.Id = (select ECInstanceId from meta.ECSchemaDef where Name=:schemaName)) and SourceECInstanceId != TargetECInstanceId`;
|
|
2604
|
+
this._iModel.withQueryReader(sql, (reader) => {
|
|
2605
|
+
for (const row of reader) {
|
|
2606
|
+
classIds.push(row[0]);
|
|
2607
|
+
}
|
|
2608
|
+
}, new core_common_1.QueryBinder()
|
|
2609
|
+
.bindString("className", fullClassName[1])
|
|
2610
|
+
.bindString("schemaName", fullClassName[0]));
|
|
2631
2611
|
if (classIds.length > 0) {
|
|
2632
2612
|
classIdList = classIds.join(",");
|
|
2633
2613
|
IModelDb.Elements.classMap.set(aspectClassFullName, classIdList);
|
|
@@ -2879,7 +2859,7 @@ function processSchemaWriteStatus(status) {
|
|
|
2879
2859
|
}
|
|
2880
2860
|
/** Set the default view property the iModel.
|
|
2881
2861
|
* @param viewId The Id of the ViewDefinition to use as the default
|
|
2882
|
-
* @deprecated in 4.2.0 -
|
|
2862
|
+
* @deprecated in 4.2.0 - might be removed in next major version. Avoid setting this property - it is not practical for one single view to serve the needs of the many applications
|
|
2883
2863
|
* that might wish to view the contents of the iModel.
|
|
2884
2864
|
*/
|
|
2885
2865
|
setDefaultViewId(viewId) {
|