Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
349a25d
Added new bulk element deletion api and quite a few tests
RohitPtnkr1996 Mar 3, 2026
97a43bc
Added performance tests and updated API args
RohitPtnkr1996 Mar 3, 2026
6e7fb53
Added changelog and updated api signatures
RohitPtnkr1996 Mar 3, 2026
0c6485e
Added an options object instead of a boolean arg
RohitPtnkr1996 Mar 5, 2026
e995302
Updated performance reporter message
RohitPtnkr1996 Mar 5, 2026
14481f4
Removed experimental flag
RohitPtnkr1996 Mar 5, 2026
5fc2204
Removed tests for the experiment
RohitPtnkr1996 Mar 5, 2026
a24de6d
Merge branch 'master' into rohitptnkr/bulk-element-deletion
RohitPtnkr1996 Mar 5, 2026
7c43d8e
Removed unused imports (linting error)
RohitPtnkr1996 Mar 5, 2026
1489a77
Merge branch 'rohitptnkr/bulk-element-deletion' of https://github.com…
RohitPtnkr1996 Mar 5, 2026
c6d017d
Made function comment clearer
RohitPtnkr1996 Mar 6, 2026
cda3f3d
Merge branch 'master' into rohitptnkr/bulk-element-deletion
RohitPtnkr1996 Mar 9, 2026
06f1c1f
Merge branch 'master' into rohitptnkr/bulk-element-deletion
RohitPtnkr1996 Mar 10, 2026
263a9bd
Added tests to cover sub model hierarchies
RohitPtnkr1996 Mar 13, 2026
c1d464f
Bug fixes, added even more tests
RohitPtnkr1996 Mar 17, 2026
36f2dfa
Merge branch 'master' into rohitptnkr/bulk-element-deletion
RohitPtnkr1996 Mar 17, 2026
e6bc3d7
Merge branch 'master' into rohitptnkr/bulk-element-deletion
RohitPtnkr1996 Mar 20, 2026
3bfcd81
Final minor changes and added new tests
RohitPtnkr1996 Mar 30, 2026
cc2ef93
Final minor optimization
RohitPtnkr1996 Apr 1, 2026
a97d8b2
Updated API signatures
RohitPtnkr1996 Apr 1, 2026
ee310b2
Merge branch 'master' into rohitptnkr/bulk-element-deletion
RohitPtnkr1996 Apr 1, 2026
9fce743
Merge branch 'master' into rohitptnkr/bulk-element-deletion
RohitPtnkr1996 Apr 6, 2026
86783da
Added docs for bulk element deletion
RohitPtnkr1996 Apr 6, 2026
4caaa8a
Merge branch 'rohitptnkr/bulk-element-deletion' of https://github.com…
RohitPtnkr1996 Apr 6, 2026
587124b
@bentley/imodeljs-native 5.9.4
imodeljs-admin Apr 6, 2026
9cdda21
Merge branch 'master' into rohitptnkr/bulk-element-deletion
RohitPtnkr1996 Apr 8, 2026
49c7929
Merge branch 'master' into rohitptnkr/bulk-element-deletion
RohitPtnkr1996 Apr 8, 2026
6cf4d6d
Updated tests to use EditTxns
RohitPtnkr1996 Apr 9, 2026
fca54b4
Merge branch 'master' into rohitptnkr/bulk-element-deletion
RohitPtnkr1996 Apr 9, 2026
1669ad3
Update docs/learning/backend/BulkElementDeletion.md
RohitPtnkr1996 Apr 9, 2026
3246683
Ran extract-api
RohitPtnkr1996 Apr 9, 2026
e521e2c
Merge branch 'rohitptnkr/bulk-element-deletion' of https://github.com…
RohitPtnkr1996 Apr 9, 2026
3bec958
Removed unused import
RohitPtnkr1996 Apr 9, 2026
6bd5833
Updated docs
RohitPtnkr1996 Apr 9, 2026
60788ea
Merge branch 'rohitptnkr/bulk-element-deletion' of https://github.com…
RohitPtnkr1996 Apr 9, 2026
ecc6daf
Merge branch 'master' into rohitptnkr/bulk-element-deletion
RohitPtnkr1996 Apr 18, 2026
cf6442d
Addressed PR comments
RohitPtnkr1996 Apr 20, 2026
4ed2b35
Merge branch 'master' into rohitptnkr/bulk-element-deletion
RohitPtnkr1996 Apr 20, 2026
261a5fb
Fixed failing test
RohitPtnkr1996 Apr 20, 2026
0ebfaa7
Merge branch 'rohitptnkr/bulk-element-deletion' of https://github.com…
RohitPtnkr1996 Apr 20, 2026
428d19e
Fixed docs to use EditTxns instead of IModelDb.Elements
RohitPtnkr1996 Apr 20, 2026
fc0affa
Merge branch 'master' into rohitptnkr/bulk-element-deletion
RohitPtnkr1996 Apr 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions common/api/core-backend.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -3868,6 +3868,8 @@ export namespace IModelDb {
// @beta
deleteDefinitionElements(definitionElementIds: Id64Array): Id64Set;
deleteElement(ids: Id64Arg): void;
// @beta
deleteElements(ids: Id64Array, skipHandlerCallbacks?: boolean): Id64Set;
getAspect(aspectInstanceId: Id64String): ElementAspect;
getAspects(elementId: Id64String, aspectClassFullName?: string, excludedClassFullNames?: Set<string>): ElementAspect[];
getElement<T extends Element_2>(elementId: Id64String | GuidString | Code | ElementLoadProps, elementClass?: EntityClassType<Element_2>): T;
Expand All @@ -3880,6 +3882,8 @@ export namespace IModelDb {
hasSubModel(elementId: Id64String): boolean;
insertAspect(aspectProps: ElementAspectProps): Id64String;
insertElement(elProps: ElementProps, options?: InsertElementOptions): Id64String;
// @beta
purgeDefinitionElements(definitionElementIds: Id64Array): Id64Set;
// @internal
_queryAspects(elementId: Id64String, fromClassFullName: string, excludedClassFullNames?: Set<string>): ElementAspect[];
queryChildren(elementId: Id64String): Id64String[];
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"changes": [
{
"packageName": "@itwin/core-backend",
"comment": "Added native apis to bulk delete definition and non-definition elements",
Comment thread
hl662 marked this conversation as resolved.
Outdated
"type": "none"
}
],
"packageName": "@itwin/core-backend"
}
23 changes: 23 additions & 0 deletions core/backend/src/IModelDb.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2851,6 +2851,17 @@ export namespace IModelDb {
});
}

/**
* Delete multiple elements from the model.
* @param ids The identifiers of the elements to delete.
* @returns A set of identifiers for any elements that could not be deleted.
* @beta
*/
public deleteElements(ids: Id64Array, skipHandlerCallbacks: boolean = false): Id64Set {
Comment thread
ben-polinsky marked this conversation as resolved.
Outdated
const failedToDelete = this._iModel[_nativeDb].deleteElements(ids, skipHandlerCallbacks);
return failedToDelete ? Id64.toIdSet(failedToDelete) : new Set<Id64String>();
}

/** DefinitionElements can only be deleted if it can be determined that they are not referenced by other Elements.
* This *usage query* can be expensive since it may involve scanning the GeometryStreams of all GeometricElements.
* Since [[deleteElement]] does not perform these additional checks, it fails in order to prevent potentially referenced DefinitionElements from being deleted.
Expand Down Expand Up @@ -2933,6 +2944,18 @@ export namespace IModelDb {
return usedIdSet;
}

/**
* Purge the specified DefinitionElements from the model.
* Unlike deleteDefinitionElements, this method handles parent-child hierarchies and intra set code scope conflicts without failing, at the expense of a marginal performance hit.
* @param definitionElementIds The identifiers of the DefinitionElements to purge.
* @returns A set of identifiers for any DefinitionElements that could not be deleted.
* @beta
*/
public purgeDefinitionElements(definitionElementIds: Id64Array): Id64Set {
const failedToDelete = this._iModel[_nativeDb].deleteDefinitionElements(definitionElementIds);
return failedToDelete ? Id64.toIdSet(failedToDelete) : new Set<Id64String>();
}

/** Query for the child elements of the specified element.
* @returns Returns an array of child element identifiers.
* @throws [[IModelError]]
Expand Down
Loading
Loading