UNPKG

@itwin/presentation-backend

Version:

Backend of iTwin.js Presentation library

109 lines 3.78 kB
/** @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