@itwin/core-backend 5.16.0-dev.5 → 5.16.0-dev.6
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 +6 -1
- package/lib/cjs/EditTxn.d.ts +56 -19
- package/lib/cjs/EditTxn.d.ts.map +1 -1
- package/lib/cjs/EditTxn.js +54 -19
- package/lib/cjs/EditTxn.js.map +1 -1
- package/lib/cjs/IModelDb.d.ts +3 -3
- package/lib/cjs/IModelDb.d.ts.map +1 -1
- package/lib/cjs/IModelDb.js +4 -3
- package/lib/cjs/IModelDb.js.map +1 -1
- package/lib/cjs/TxnManager.d.ts.map +1 -1
- package/lib/cjs/TxnManager.js +11 -6
- package/lib/cjs/TxnManager.js.map +1 -1
- package/lib/cjs/internal/ChangesetConflictArgs.d.ts +4 -0
- package/lib/cjs/internal/ChangesetConflictArgs.d.ts.map +1 -1
- package/lib/cjs/internal/ChangesetConflictArgs.js +1 -0
- package/lib/cjs/internal/ChangesetConflictArgs.js.map +1 -1
- package/lib/esm/EditTxn.d.ts +56 -19
- package/lib/esm/EditTxn.d.ts.map +1 -1
- package/lib/esm/EditTxn.js +53 -18
- package/lib/esm/EditTxn.js.map +1 -1
- package/lib/esm/IModelDb.d.ts +3 -3
- package/lib/esm/IModelDb.d.ts.map +1 -1
- package/lib/esm/IModelDb.js +4 -3
- package/lib/esm/IModelDb.js.map +1 -1
- package/lib/esm/TxnManager.d.ts.map +1 -1
- package/lib/esm/TxnManager.js +12 -7
- package/lib/esm/TxnManager.js.map +1 -1
- package/lib/esm/internal/ChangesetConflictArgs.d.ts +4 -0
- package/lib/esm/internal/ChangesetConflictArgs.d.ts.map +1 -1
- package/lib/esm/internal/ChangesetConflictArgs.js +1 -0
- package/lib/esm/internal/ChangesetConflictArgs.js.map +1 -1
- 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/standalone/ChangeMerge.test.js +71 -1
- package/lib/esm/test/standalone/ChangeMerge.test.js.map +1 -1
- 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/MergeConflict.test.js +15 -0
- package/lib/esm/test/standalone/MergeConflict.test.js.map +1 -1
- package/package.json +15 -15
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
import { DbChangeStage, DbConflictCause, DbOpcode, DbValueType, Id64String } from "@itwin/core-bentley";
|
|
5
5
|
import { SqliteChangeOp, SqliteChangesetReader, SqliteValueStage } from "../SqliteChangesetReader";
|
|
6
6
|
import { IModelDb } from "../IModelDb";
|
|
7
|
+
/** The conflict passed by native code to a changeset conflict handler.
|
|
8
|
+
* Each conflict gets its own object. Its functions must be called on that object and only work during the handler call.
|
|
9
|
+
*/
|
|
7
10
|
export interface DbChangesetConflictArgs {
|
|
8
11
|
cause: DbConflictCause;
|
|
9
12
|
opcode: DbOpcode;
|
|
@@ -35,6 +38,7 @@ export interface DbRebaseChangesetConflictArgs extends DbChangesetConflictArgs {
|
|
|
35
38
|
txn: TxnArgs;
|
|
36
39
|
}
|
|
37
40
|
export type SqliteConflictCause = "Conflict" | "Data" | "Constraint" | "ForeignKey" | "NotFound";
|
|
41
|
+
/** A conflict found while rebasing local changes. Only valid during the conflict handler call. */
|
|
38
42
|
export declare class RebaseChangesetConflictArgs {
|
|
39
43
|
private _dbConflictArg;
|
|
40
44
|
private _iModel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChangesetConflictArgs.d.ts","sourceRoot":"","sources":["../../../src/internal/ChangesetConflictArgs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ChangesetConflictArgs.d.ts","sourceRoot":"","sources":["../../../src/internal/ChangesetConflictArgs.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ exports.RebaseChangesetConflictArgs = void 0;
|
|
|
10
10
|
*/
|
|
11
11
|
const core_bentley_1 = require("@itwin/core-bentley");
|
|
12
12
|
const SqliteChangesetReader_1 = require("../SqliteChangesetReader");
|
|
13
|
+
/** A conflict found while rebasing local changes. Only valid during the conflict handler call. */
|
|
13
14
|
class RebaseChangesetConflictArgs {
|
|
14
15
|
_dbConflictArg;
|
|
15
16
|
_iModel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChangesetConflictArgs.js","sourceRoot":"","sources":["../../../src/internal/ChangesetConflictArgs.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module iModels\r\n */\r\n\r\nimport { DbChangeStage, DbConflictCause, DbOpcode, DbValueType, Id64String } from \"@itwin/core-bentley\";\r\nimport { SqliteChangeOp, SqliteChangesetReader, SqliteValueStage } from \"../SqliteChangesetReader\";\r\nimport { IModelDb } from \"../IModelDb\";\r\n\r\nexport interface DbChangesetConflictArgs {\r\n cause: DbConflictCause;\r\n opcode: DbOpcode;\r\n indirect: boolean;\r\n tableName: string;\r\n columnCount: number;\r\n getForeignKeyConflicts: () => number;\r\n dump: () => void;\r\n setLastError: (message: string) => void;\r\n getPrimaryKeyColumns: () => number[];\r\n getValueType: (columnIndex: number, stage: DbChangeStage) => DbValueType | null | undefined;\r\n getValueBinary: (columnIndex: number, stage: DbChangeStage) => Uint8Array | null | undefined;\r\n getValueId: (columnIndex: number, stage: DbChangeStage) => Id64String | null | undefined;\r\n getValueText: (columnIndex: number, stage: DbChangeStage) => string | null | undefined;\r\n getValueInteger: (columnIndex: number, stage: DbChangeStage) => number | null | undefined;\r\n getValueDouble: (columnIndex: number, stage: DbChangeStage) => number | null | undefined;\r\n isValueNull: (columnIndex: number, stage: DbChangeStage) => boolean | undefined;\r\n getColumnNames(): string[];\r\n}\r\n\r\nexport interface DbMergeChangesetConflictArgs extends DbChangesetConflictArgs {\r\n changesetFile?: string;\r\n}\r\n\r\nexport interface TxnArgs {\r\n id: Id64String;\r\n type: \"Data\" | \"Schema\";\r\n descr: string;\r\n}\r\n\r\nexport interface DbRebaseChangesetConflictArgs extends DbChangesetConflictArgs {\r\n txn: TxnArgs;\r\n}\r\n\r\nexport type SqliteConflictCause = \"Conflict\" | \"Data\" | \"Constraint\" | \"ForeignKey\" | \"NotFound\";\r\n\r\nexport class RebaseChangesetConflictArgs {\r\n constructor(private _dbConflictArg: DbRebaseChangesetConflictArgs, private _iModel: IModelDb){}\r\n public get cause() : SqliteConflictCause {\r\n switch (this._dbConflictArg.cause) {\r\n case DbConflictCause.Conflict: return \"Conflict\";\r\n case DbConflictCause.Data: return \"Data\";\r\n case DbConflictCause.Constraint: return \"Constraint\";\r\n case DbConflictCause.ForeignKey: return \"ForeignKey\";\r\n case DbConflictCause.NotFound: return \"NotFound\";\r\n }\r\n throw new Error(\"Invalid value for cause\");\r\n }\r\n public get opcode(): SqliteChangeOp | undefined {\r\n switch (this._dbConflictArg.opcode) {\r\n case DbOpcode.Insert: return \"Inserted\";\r\n case DbOpcode.Update: return \"Updated\";\r\n case DbOpcode.Delete: return \"Deleted\";\r\n }\r\n }\r\n public openTxn(): SqliteChangesetReader {\r\n return SqliteChangesetReader.openTxn({txnId: this._dbConflictArg.txn.id, db: this._iModel});\r\n }\r\n public get indirect(): boolean {\r\n return this._dbConflictArg.indirect;\r\n }\r\n public get tableName(): string {\r\n return this._dbConflictArg.tableName;\r\n }\r\n public get columnCount(): number {\r\n return this._dbConflictArg.columnCount;\r\n }\r\n public getForeignKeyConflicts(): number {\r\n return this._dbConflictArg.getForeignKeyConflicts();\r\n }\r\n public setLastError(message: string): void {\r\n this._dbConflictArg.setLastError(message);\r\n }\r\n public getPrimaryKeyColumns(): number[] {\r\n return this._dbConflictArg.getPrimaryKeyColumns();\r\n }\r\n public getValueType(columnIndex: number, stage: SqliteValueStage): DbValueType | null | undefined {\r\n return this._dbConflictArg.getValueType(columnIndex, stage=== \"New\" ? DbChangeStage.New : DbChangeStage.Old);\r\n }\r\n public getValueBinary(columnIndex: number, stage: SqliteValueStage): Uint8Array | null | undefined {\r\n return this._dbConflictArg.getValueBinary(columnIndex, stage=== \"New\" ? DbChangeStage.New : DbChangeStage.Old);\r\n }\r\n public getValueId(columnIndex: number, stage: SqliteValueStage): Id64String | null | undefined {\r\n return this._dbConflictArg.getValueId(columnIndex, stage=== \"New\" ? DbChangeStage.New : DbChangeStage.Old);\r\n }\r\n public getValueText(columnIndex: number, stage: SqliteValueStage): string | null | undefined {\r\n return this._dbConflictArg.getValueText(columnIndex, stage=== \"New\" ? DbChangeStage.New : DbChangeStage.Old);\r\n }\r\n public getValueInteger(columnIndex: number, stage: SqliteValueStage): number | null | undefined {\r\n return this._dbConflictArg.getValueInteger(columnIndex, stage=== \"New\" ? DbChangeStage.New : DbChangeStage.Old);\r\n }\r\n public getValueDouble(columnIndex: number, stage: SqliteValueStage): number | null | undefined {\r\n return this._dbConflictArg.getValueDouble(columnIndex, stage=== \"New\" ? DbChangeStage.New : DbChangeStage.Old);\r\n }\r\n public isValueNull(columnIndex: number, stage: SqliteValueStage): boolean | undefined {\r\n return this._dbConflictArg.isValueNull(columnIndex, stage=== \"New\" ? DbChangeStage.New : DbChangeStage.Old);\r\n }\r\n public getColumnNames(): string[] {\r\n return this._dbConflictArg.getColumnNames();\r\n }\r\n public getPrimaryKeyValues() {\r\n const pkv: (Uint8Array | number | string | null | undefined)[] = [];\r\n if (this.opcode === undefined)\r\n return pkv;\r\n\r\n const stage = this._dbConflictArg.opcode === DbOpcode.Insert ? DbChangeStage.New : DbChangeStage.Old;\r\n for (const pk of this._dbConflictArg.getPrimaryKeyColumns()) {\r\n const type = this._dbConflictArg.getValueType(pk, stage);\r\n if (type === DbValueType.IntegerVal)\r\n pkv.push(this._dbConflictArg.getValueId(pk, stage));\r\n else if (type === DbValueType.TextVal)\r\n pkv.push(this._dbConflictArg.getValueText(pk, stage));\r\n else if (type === DbValueType.FloatVal)\r\n pkv.push(this._dbConflictArg.getValueDouble(pk, stage));\r\n else if (type === DbValueType.BlobVal)\r\n pkv.push(this._dbConflictArg.getValueBinary(pk, stage));\r\n else\r\n pkv.push(null);\r\n }\r\n return pkv;\r\n };\r\n public get txn() {\r\n return this._dbConflictArg.txn;\r\n }\r\n}\r\n\r\n"]}
|
|
1
|
+
{"version":3,"file":"ChangesetConflictArgs.js","sourceRoot":"","sources":["../../../src/internal/ChangesetConflictArgs.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n\r\n/** @packageDocumentation\r\n * @module iModels\r\n */\r\n\r\nimport { DbChangeStage, DbConflictCause, DbOpcode, DbValueType, Id64String } from \"@itwin/core-bentley\";\r\nimport { SqliteChangeOp, SqliteChangesetReader, SqliteValueStage } from \"../SqliteChangesetReader\";\r\nimport { IModelDb } from \"../IModelDb\";\r\n\r\n/** The conflict passed by native code to a changeset conflict handler.\r\n * Each conflict gets its own object. Its functions must be called on that object and only work during the handler call.\r\n */\r\nexport interface DbChangesetConflictArgs {\r\n cause: DbConflictCause;\r\n opcode: DbOpcode;\r\n indirect: boolean;\r\n tableName: string;\r\n columnCount: number;\r\n getForeignKeyConflicts: () => number;\r\n dump: () => void;\r\n setLastError: (message: string) => void;\r\n getPrimaryKeyColumns: () => number[];\r\n getValueType: (columnIndex: number, stage: DbChangeStage) => DbValueType | null | undefined;\r\n getValueBinary: (columnIndex: number, stage: DbChangeStage) => Uint8Array | null | undefined;\r\n getValueId: (columnIndex: number, stage: DbChangeStage) => Id64String | null | undefined;\r\n getValueText: (columnIndex: number, stage: DbChangeStage) => string | null | undefined;\r\n getValueInteger: (columnIndex: number, stage: DbChangeStage) => number | null | undefined;\r\n getValueDouble: (columnIndex: number, stage: DbChangeStage) => number | null | undefined;\r\n isValueNull: (columnIndex: number, stage: DbChangeStage) => boolean | undefined;\r\n getColumnNames(): string[];\r\n}\r\n\r\nexport interface DbMergeChangesetConflictArgs extends DbChangesetConflictArgs {\r\n changesetFile?: string;\r\n}\r\n\r\nexport interface TxnArgs {\r\n id: Id64String;\r\n type: \"Data\" | \"Schema\";\r\n descr: string;\r\n}\r\n\r\nexport interface DbRebaseChangesetConflictArgs extends DbChangesetConflictArgs {\r\n txn: TxnArgs;\r\n}\r\n\r\nexport type SqliteConflictCause = \"Conflict\" | \"Data\" | \"Constraint\" | \"ForeignKey\" | \"NotFound\";\r\n\r\n/** A conflict found while rebasing local changes. Only valid during the conflict handler call. */\r\nexport class RebaseChangesetConflictArgs {\r\n constructor(private _dbConflictArg: DbRebaseChangesetConflictArgs, private _iModel: IModelDb){}\r\n public get cause() : SqliteConflictCause {\r\n switch (this._dbConflictArg.cause) {\r\n case DbConflictCause.Conflict: return \"Conflict\";\r\n case DbConflictCause.Data: return \"Data\";\r\n case DbConflictCause.Constraint: return \"Constraint\";\r\n case DbConflictCause.ForeignKey: return \"ForeignKey\";\r\n case DbConflictCause.NotFound: return \"NotFound\";\r\n }\r\n throw new Error(\"Invalid value for cause\");\r\n }\r\n public get opcode(): SqliteChangeOp | undefined {\r\n switch (this._dbConflictArg.opcode) {\r\n case DbOpcode.Insert: return \"Inserted\";\r\n case DbOpcode.Update: return \"Updated\";\r\n case DbOpcode.Delete: return \"Deleted\";\r\n }\r\n }\r\n public openTxn(): SqliteChangesetReader {\r\n return SqliteChangesetReader.openTxn({txnId: this._dbConflictArg.txn.id, db: this._iModel});\r\n }\r\n public get indirect(): boolean {\r\n return this._dbConflictArg.indirect;\r\n }\r\n public get tableName(): string {\r\n return this._dbConflictArg.tableName;\r\n }\r\n public get columnCount(): number {\r\n return this._dbConflictArg.columnCount;\r\n }\r\n public getForeignKeyConflicts(): number {\r\n return this._dbConflictArg.getForeignKeyConflicts();\r\n }\r\n public setLastError(message: string): void {\r\n this._dbConflictArg.setLastError(message);\r\n }\r\n public getPrimaryKeyColumns(): number[] {\r\n return this._dbConflictArg.getPrimaryKeyColumns();\r\n }\r\n public getValueType(columnIndex: number, stage: SqliteValueStage): DbValueType | null | undefined {\r\n return this._dbConflictArg.getValueType(columnIndex, stage=== \"New\" ? DbChangeStage.New : DbChangeStage.Old);\r\n }\r\n public getValueBinary(columnIndex: number, stage: SqliteValueStage): Uint8Array | null | undefined {\r\n return this._dbConflictArg.getValueBinary(columnIndex, stage=== \"New\" ? DbChangeStage.New : DbChangeStage.Old);\r\n }\r\n public getValueId(columnIndex: number, stage: SqliteValueStage): Id64String | null | undefined {\r\n return this._dbConflictArg.getValueId(columnIndex, stage=== \"New\" ? DbChangeStage.New : DbChangeStage.Old);\r\n }\r\n public getValueText(columnIndex: number, stage: SqliteValueStage): string | null | undefined {\r\n return this._dbConflictArg.getValueText(columnIndex, stage=== \"New\" ? DbChangeStage.New : DbChangeStage.Old);\r\n }\r\n public getValueInteger(columnIndex: number, stage: SqliteValueStage): number | null | undefined {\r\n return this._dbConflictArg.getValueInteger(columnIndex, stage=== \"New\" ? DbChangeStage.New : DbChangeStage.Old);\r\n }\r\n public getValueDouble(columnIndex: number, stage: SqliteValueStage): number | null | undefined {\r\n return this._dbConflictArg.getValueDouble(columnIndex, stage=== \"New\" ? DbChangeStage.New : DbChangeStage.Old);\r\n }\r\n public isValueNull(columnIndex: number, stage: SqliteValueStage): boolean | undefined {\r\n return this._dbConflictArg.isValueNull(columnIndex, stage=== \"New\" ? DbChangeStage.New : DbChangeStage.Old);\r\n }\r\n public getColumnNames(): string[] {\r\n return this._dbConflictArg.getColumnNames();\r\n }\r\n public getPrimaryKeyValues() {\r\n const pkv: (Uint8Array | number | string | null | undefined)[] = [];\r\n if (this.opcode === undefined)\r\n return pkv;\r\n\r\n const stage = this._dbConflictArg.opcode === DbOpcode.Insert ? DbChangeStage.New : DbChangeStage.Old;\r\n for (const pk of this._dbConflictArg.getPrimaryKeyColumns()) {\r\n const type = this._dbConflictArg.getValueType(pk, stage);\r\n if (type === DbValueType.IntegerVal)\r\n pkv.push(this._dbConflictArg.getValueId(pk, stage));\r\n else if (type === DbValueType.TextVal)\r\n pkv.push(this._dbConflictArg.getValueText(pk, stage));\r\n else if (type === DbValueType.FloatVal)\r\n pkv.push(this._dbConflictArg.getValueDouble(pk, stage));\r\n else if (type === DbValueType.BlobVal)\r\n pkv.push(this._dbConflictArg.getValueBinary(pk, stage));\r\n else\r\n pkv.push(null);\r\n }\r\n return pkv;\r\n };\r\n public get txn() {\r\n return this._dbConflictArg.txn;\r\n }\r\n}\r\n\r\n"]}
|
package/lib/esm/EditTxn.d.ts
CHANGED
|
@@ -10,34 +10,62 @@ import type { ChangeElementModelProps, ChangeElementParentProps, IModelDb, Inser
|
|
|
10
10
|
import type { SettingsContainer } from "./workspace/Settings";
|
|
11
11
|
/** Options for bulk deleting elements from an iModelDb.
|
|
12
12
|
* @beta
|
|
13
|
+
* @deprecated Options are no longer used and [[EditTxn.deleteElements]] ignores this argument.
|
|
13
14
|
*/
|
|
14
15
|
export interface BulkDeleteElementsArgs {
|
|
15
16
|
/**
|
|
16
|
-
*
|
|
17
|
-
* This will improve performance, but if the user supplies elements which have FK constraint violations, it will result in the delete failing and an eventual rollback.
|
|
17
|
+
* @deprecated Skipping FK constraint validation is no longer supported.
|
|
18
18
|
*/
|
|
19
19
|
skipFKConstraintValidations?: boolean;
|
|
20
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Why an element could not be deleted by [[EditTxn.deleteElements]].
|
|
23
|
+
* @beta
|
|
24
|
+
*/
|
|
25
|
+
export declare enum BulkDeleteFailureReason {
|
|
26
|
+
/** A row outside the delete set references it via a NO ACTION / RESTRICT / SET DEFAULT FK. */
|
|
27
|
+
ReferencedByForeignKey = 0,
|
|
28
|
+
/** It is a DefinitionElement still used by elements outside the delete set. */
|
|
29
|
+
DefinitionInUse = 1,
|
|
30
|
+
/** It is one of the elements every iModel must keep: the root Subject, the DictionaryModel partition or the RealityDataSources partition. */
|
|
31
|
+
ProtectedElement = 2,
|
|
32
|
+
/** Its handler belongs to a read-only DgnDomain. */
|
|
33
|
+
ReadOnlyDomain = 3
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* One element that could not be deleted by [[EditTxn.deleteElements]], and why.
|
|
37
|
+
* @beta
|
|
38
|
+
*/
|
|
39
|
+
export interface BulkDeleteFailure {
|
|
40
|
+
/** The id of the element that could not be deleted. */
|
|
41
|
+
elementId: Id64String;
|
|
42
|
+
/** Why the element could not be deleted. */
|
|
43
|
+
reason: BulkDeleteFailureReason;
|
|
44
|
+
}
|
|
21
45
|
/**
|
|
22
46
|
* Result of a bulk element delete operation.
|
|
23
47
|
* @beta
|
|
24
48
|
*/
|
|
25
49
|
export interface BulkDeleteElementsResult {
|
|
26
|
-
/**
|
|
27
|
-
* Overall status of the bulk delete operation.
|
|
28
|
-
* - `Success`: All elements were deleted successfully. `failedIds` will be empty.
|
|
29
|
-
* - `PartialSuccess`: Some elements were deleted, but others failed. `failedIds` contains the ids that could not be deleted.
|
|
30
|
-
* - `DeletionFailed`: The delete operation failed entirely (e.g. due to an FK constraint violation). `failedIds` contains the ids that could not be deleted.
|
|
31
|
-
*/
|
|
50
|
+
/** Overall status of the bulk delete operation. See [[BulkDeleteElementsStatus]]. */
|
|
32
51
|
status: BulkDeleteElementsStatus;
|
|
52
|
+
/** The raw SQLite result code from the underlying SQL DELETE. Only meaningful when `status === DeletionFailed`. */
|
|
53
|
+
sqlDeleteStatus: DbResult;
|
|
33
54
|
/**
|
|
34
|
-
*
|
|
35
|
-
*
|
|
55
|
+
* One entry per element that blocks the deletion, with the reason. Only populated on `ConstraintViolation`.
|
|
56
|
+
* Empty on `Success` and `DeletionFailed`.
|
|
57
|
+
* Because the whole expanded delete set is validated, a reported element may be a child or sub-model member
|
|
58
|
+
* that was not in the requested ids; its requested ancestor is not listed separately.
|
|
36
59
|
*/
|
|
37
|
-
|
|
60
|
+
failures: BulkDeleteFailure[];
|
|
38
61
|
/**
|
|
39
62
|
* The set of element ids that could not be deleted.
|
|
40
|
-
*
|
|
63
|
+
* - On `ConstraintViolation`: the unique element ids appearing in `failures`. May include cascaded descendants
|
|
64
|
+
* that were not in the requested ids, so this is not guaranteed to be a subset of the input. Never empty.
|
|
65
|
+
* Nothing was deleted, including requested ids that are not listed.
|
|
66
|
+
* - On `DeletionFailed`: every requested id (the iModel may be partially modified; abandon the current txn).
|
|
67
|
+
* - On `Success`: empty.
|
|
68
|
+
* @deprecated Use `failures` for a more detailed failure report.
|
|
41
69
|
*/
|
|
42
70
|
failedIds: Id64Set;
|
|
43
71
|
}
|
|
@@ -48,9 +76,9 @@ export interface BulkDeleteElementsResult {
|
|
|
48
76
|
export declare enum BulkDeleteElementsStatus {
|
|
49
77
|
/** All supplied elements were deleted successfully. */
|
|
50
78
|
Success = 0,
|
|
51
|
-
/**
|
|
52
|
-
|
|
53
|
-
/**
|
|
79
|
+
/** Nothing was deleted because some elements in the (expanded) delete set are still referenced from outside the set; see `failures` for the violators. */
|
|
80
|
+
ConstraintViolation = 1,
|
|
81
|
+
/** An internal error occurred. The iModel may be partially modified; the caller must abandon the current txn. `failures` will be empty. */
|
|
54
82
|
DeletionFailed = 2
|
|
55
83
|
}
|
|
56
84
|
/**
|
|
@@ -201,14 +229,23 @@ export declare class EditTxn {
|
|
|
201
229
|
*/
|
|
202
230
|
private collectSubtreeIds;
|
|
203
231
|
/**
|
|
204
|
-
* Delete multiple elements from the iModel.
|
|
232
|
+
* Delete multiple elements from the iModel in a single bulk operation.
|
|
233
|
+
*
|
|
234
|
+
* Child elements and sub-model contents of the requested elements are deleted along with them.
|
|
235
|
+
*
|
|
236
|
+
* The operation is all-or-nothing:
|
|
237
|
+
* - On `Success`, all elements (and their children / sub-model contents) were deleted.
|
|
238
|
+
* - On `ConstraintViolation`, nothing was deleted and [[BulkDeleteElementsResult.failures]] lists every element in the
|
|
239
|
+
* expanded delete set that is still referenced from outside the set, and why. Fix or include those referencing elements and retry.
|
|
240
|
+
* - On `DeletionFailed` (an unexpected SQLite error) the iModel may be partially modified and the caller must abandon the current txn.
|
|
241
|
+
*
|
|
205
242
|
* @param ids The ids of the elements to delete. All ids must be well-formed and valid [[Id64String]]s.
|
|
206
|
-
* @param
|
|
207
|
-
* @returns A result object
|
|
243
|
+
* @param _deleteOptions Deprecated and ignored; kept for backward compatibility of the signature.
|
|
244
|
+
* @returns A result object describing the outcome of the operation and the elements that block it (if any).
|
|
208
245
|
* @throws [[ITwinError]] if any of the supplied ids are not well-formed/valid [[Id64String]]s.
|
|
209
246
|
* @beta
|
|
210
247
|
*/
|
|
211
|
-
deleteElements(ids: Id64Array,
|
|
248
|
+
deleteElements(ids: Id64Array, _deleteOptions?: BulkDeleteElementsArgs): BulkDeleteElementsResult;
|
|
212
249
|
/** Insert a new aspect into the iModel.
|
|
213
250
|
* @param aspectProps The properties of the new aspect.
|
|
214
251
|
* @returns The newly inserted aspect Id.
|
package/lib/esm/EditTxn.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditTxn.d.ts","sourceRoot":"","sources":["../../src/EditTxn.ts"],"names":[],"mappings":"AAKA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAQ,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAA8C,MAAM,qBAAqB,CAAC;AAC1I,OAAO,EAAgB,iBAAiB,EAAgB,kBAAkB,EAAgB,YAAY,EAAE,iBAAiB,EAAe,UAAU,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACnN,OAAO,EAAW,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,KAAK,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,QAAQ,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACxI,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAI9D
|
|
1
|
+
{"version":3,"file":"EditTxn.d.ts","sourceRoot":"","sources":["../../src/EditTxn.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/EditTxn.js
CHANGED
|
@@ -10,6 +10,21 @@ import { EcefLocation, EditTxnError, ElementError, IModelError } from "@itwin/co
|
|
|
10
10
|
import { Range3d } from "@itwin/core-geometry";
|
|
11
11
|
import { BackendLoggerCategory } from "./BackendLoggerCategory";
|
|
12
12
|
import { _activeTxn, _cache, _instanceKeyCache, _nativeDb, _refreshGeographicCoordinateSystem, _updateIModelProps, _verifyChannel, _verifyTxnWrite } from "./internal/Symbols";
|
|
13
|
+
/**
|
|
14
|
+
* Why an element could not be deleted by [[EditTxn.deleteElements]].
|
|
15
|
+
* @beta
|
|
16
|
+
*/
|
|
17
|
+
export var BulkDeleteFailureReason;
|
|
18
|
+
(function (BulkDeleteFailureReason) {
|
|
19
|
+
/** A row outside the delete set references it via a NO ACTION / RESTRICT / SET DEFAULT FK. */
|
|
20
|
+
BulkDeleteFailureReason[BulkDeleteFailureReason["ReferencedByForeignKey"] = 0] = "ReferencedByForeignKey";
|
|
21
|
+
/** It is a DefinitionElement still used by elements outside the delete set. */
|
|
22
|
+
BulkDeleteFailureReason[BulkDeleteFailureReason["DefinitionInUse"] = 1] = "DefinitionInUse";
|
|
23
|
+
/** It is one of the elements every iModel must keep: the root Subject, the DictionaryModel partition or the RealityDataSources partition. */
|
|
24
|
+
BulkDeleteFailureReason[BulkDeleteFailureReason["ProtectedElement"] = 2] = "ProtectedElement";
|
|
25
|
+
/** Its handler belongs to a read-only DgnDomain. */
|
|
26
|
+
BulkDeleteFailureReason[BulkDeleteFailureReason["ReadOnlyDomain"] = 3] = "ReadOnlyDomain";
|
|
27
|
+
})(BulkDeleteFailureReason || (BulkDeleteFailureReason = {}));
|
|
13
28
|
/**
|
|
14
29
|
* Status of a bulk element delete operation, mirroring the C++ `BulkDeleteStatus` enum.
|
|
15
30
|
* @beta
|
|
@@ -18,9 +33,9 @@ export var BulkDeleteElementsStatus;
|
|
|
18
33
|
(function (BulkDeleteElementsStatus) {
|
|
19
34
|
/** All supplied elements were deleted successfully. */
|
|
20
35
|
BulkDeleteElementsStatus[BulkDeleteElementsStatus["Success"] = 0] = "Success";
|
|
21
|
-
/**
|
|
22
|
-
BulkDeleteElementsStatus[BulkDeleteElementsStatus["
|
|
23
|
-
/**
|
|
36
|
+
/** Nothing was deleted because some elements in the (expanded) delete set are still referenced from outside the set; see `failures` for the violators. */
|
|
37
|
+
BulkDeleteElementsStatus[BulkDeleteElementsStatus["ConstraintViolation"] = 1] = "ConstraintViolation";
|
|
38
|
+
/** An internal error occurred. The iModel may be partially modified; the caller must abandon the current txn. `failures` will be empty. */
|
|
24
39
|
BulkDeleteElementsStatus[BulkDeleteElementsStatus["DeletionFailed"] = 2] = "DeletionFailed";
|
|
25
40
|
})(BulkDeleteElementsStatus || (BulkDeleteElementsStatus = {}));
|
|
26
41
|
/**
|
|
@@ -357,14 +372,24 @@ export class EditTxn {
|
|
|
357
372
|
return ids;
|
|
358
373
|
}
|
|
359
374
|
/**
|
|
360
|
-
* Delete multiple elements from the iModel.
|
|
375
|
+
* Delete multiple elements from the iModel in a single bulk operation.
|
|
376
|
+
*
|
|
377
|
+
* Child elements and sub-model contents of the requested elements are deleted along with them.
|
|
378
|
+
*
|
|
379
|
+
* The operation is all-or-nothing:
|
|
380
|
+
* - On `Success`, all elements (and their children / sub-model contents) were deleted.
|
|
381
|
+
* - On `ConstraintViolation`, nothing was deleted and [[BulkDeleteElementsResult.failures]] lists every element in the
|
|
382
|
+
* expanded delete set that is still referenced from outside the set, and why. Fix or include those referencing elements and retry.
|
|
383
|
+
* - On `DeletionFailed` (an unexpected SQLite error) the iModel may be partially modified and the caller must abandon the current txn.
|
|
384
|
+
*
|
|
361
385
|
* @param ids The ids of the elements to delete. All ids must be well-formed and valid [[Id64String]]s.
|
|
362
|
-
* @param
|
|
363
|
-
* @returns A result object
|
|
386
|
+
* @param _deleteOptions Deprecated and ignored; kept for backward compatibility of the signature.
|
|
387
|
+
* @returns A result object describing the outcome of the operation and the elements that block it (if any).
|
|
364
388
|
* @throws [[ITwinError]] if any of the supplied ids are not well-formed/valid [[Id64String]]s.
|
|
365
389
|
* @beta
|
|
366
390
|
*/
|
|
367
|
-
|
|
391
|
+
// eslint-disable-next-line @typescript-eslint/no-deprecated
|
|
392
|
+
deleteElements(ids, _deleteOptions) {
|
|
368
393
|
this.verifyWriteable();
|
|
369
394
|
const invalidIds = new Set();
|
|
370
395
|
for (const id of ids) {
|
|
@@ -373,17 +398,27 @@ export class EditTxn {
|
|
|
373
398
|
}
|
|
374
399
|
if (invalidIds.size > 0)
|
|
375
400
|
ITwinError.throwError({ message: `Invalid element ids: ${Array.from(invalidIds).join(", ")}`, iTwinErrorId: { scope: "imodel", key: "invalid-arguments" } });
|
|
376
|
-
const
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
401
|
+
const nativeResult = this.iModel[_nativeDb].deleteElements(ids);
|
|
402
|
+
// When deletion fails with `DeletionFailed`, all requested ids are returned to maintain backward compatibilty.
|
|
403
|
+
// Once `failedIds` is deprecated, we will change this to throw instead as this is a SQLite failure.
|
|
404
|
+
const failedIds = nativeResult.status === BulkDeleteElementsStatus.DeletionFailed
|
|
405
|
+
? new Set(ids)
|
|
406
|
+
: new Set(nativeResult.failures.map((failure) => failure.elementId));
|
|
407
|
+
const result = {
|
|
408
|
+
status: nativeResult.status,
|
|
409
|
+
sqlDeleteStatus: nativeResult.sqlDeleteStatus,
|
|
410
|
+
failures: nativeResult.failures,
|
|
411
|
+
// `failedIds` is deprecated. `failures` provides a more comprehensive error report.
|
|
412
|
+
// We still need to return the deprecated `failedIds` to maintain backward compatibility.
|
|
413
|
+
failedIds,
|
|
414
|
+
};
|
|
415
|
+
// Nothing was deleted on ConstraintViolation; on DeletionFailed the caller must abandon the txn, which restores the cached state.
|
|
416
|
+
if (result.status !== BulkDeleteElementsStatus.Success)
|
|
417
|
+
return result;
|
|
418
|
+
// Native deletion also nulls logical navigation properties on surviving elements that referenced the deleted ones,
|
|
419
|
+
// so evicting only the requested ids would leave stale cached referrers. Clear all instance caches.
|
|
420
|
+
this.iModel.clearCaches({ instanceCachesOnly: true });
|
|
421
|
+
return result;
|
|
387
422
|
}
|
|
388
423
|
/** Insert a new aspect into the iModel.
|
|
389
424
|
* @param aspectProps The properties of the new aspect.
|