@itwin/presentation-backend
Version:
Backend of iTwin.js Presentation library
109 lines • 3.78 kB
TypeScript
/** @packageDocumentation
* @module Core
*/
import { Entity, IModelDb } from "@itwin/core-backend";
import { Id64String } from "@itwin/core-bentley";
import { Ruleset } from "@itwin/presentation-common";
/**
* Interface for callbacks which will be called before and after Element/Model updates
* @public
*/
interface UpdateCallbacks {
onBeforeUpdate: (props: Entity) => Promise<void>;
onAfterUpdate: (props: Entity) => Promise<void>;
}
/**
* Interface for callbacks which will be called before and after Element/Model is inserted
* @public
*/
interface InsertCallbacks {
onBeforeInsert: (props: Entity) => Promise<void>;
onAfterInsert: (props: Entity) => Promise<void>;
}
/**
* Options for [[RulesetEmbedder.insertRuleset]] operation.
* @public
*/
export interface RulesetInsertOptions {
/**
* When should insertion be skipped:
* - `same-id` - if iModel already contains a ruleset with the same id and **any** version
* - `same-id-and-version-eq` - if iModel already contains a ruleset with same id and version
* - `same-id-and-version-gte` - if iModel already contains a ruleset with same id and
* version greater or equal to version of the inserted ruleset.
*
* Defaults to `same-id-and-version-eq`.
*/
skip?: "never" | "same-id" | "same-id-and-version-eq" | "same-id-and-version-gte";
/**
* Which existing versions of rulesets with same id should be replaced when we insert a new one:
* - `all` - replace all rulesets with same id.
* - `all-lower` - replace rulesets with same id and version lower than the version of inserted ruleset.
* - `exact` - replace only the ruleset whose id and version matches the inserted ruleset.
*
* Defaults to `exact`.
*/
replaceVersions?: "all" | "all-lower" | "exact";
/**
* Callbacks that will be called before and after `Entity` updates
*/
onEntityUpdate?: UpdateCallbacks;
/**
* Callbacks that will be called before and after `Entity` is inserted
*/
onEntityInsert?: InsertCallbacks;
}
/**
* Properties for creating a `RulesetEmbedder` instance.
* @public
*/
export interface RulesetEmbedderProps {
/** iModel to embed rulesets to */
imodel: IModelDb;
/**
* An ID of existing subject under which presentation ruleset will be located or created.
* Defaults to 'IModel.rootSubjectId'.
*/
parentSubjectId?: Id64String;
}
/**
* An API for embedding presentation rulesets into iModels.
* @public
*/
export declare class RulesetEmbedder {
private _imodel;
private _parentSubjectId;
private readonly _schemaPath;
private readonly _rulesetModelName;
private readonly _rulesetSubjectName;
/**
* Constructs RulesetEmbedder
*/
constructor(props: RulesetEmbedderProps);
/**
* Inserts a ruleset into iModel.
* @param ruleset Ruleset to insert.
* @param options Options for inserting a ruleset.
* @returns ID of inserted ruleset element or, if insertion was skipped, ID of existing ruleset with the same ID and highest version.
*/
insertRuleset(ruleset: Ruleset, options?: RulesetInsertOptions): Promise<Id64String>;
private updateRuleset;
private insertNewRuleset;
/**
* Get all rulesets embedded in the iModel.
*/
getRulesets(): Promise<Ruleset[]>;
private getOrCreateRulesetModel;
private queryRulesetModel;
private queryDefinitionPartition;
private querySubject;
private insertDefinitionModel;
private insertDefinitionPartition;
private insertSubject;
private handleElementOperationPrerequisites;
private insertElement;
private insertModel;
private updateElement;
}
export {};
//# sourceMappingURL=RulesetEmbedder.d.ts.map