import { EntityReference } from "../models"; import { SortingType } from "./common"; import { EntitiesExportInput, EntitiesExportResult, EntitiesSampleDownloadOptions, EntitiesSampleDownloadResult } from "./export"; import { EntitiesImportInput, EntitiesImportResult } from "./import"; import { EntitiesParseInput, EntitiesParseResult } from "./parse"; import { IEntitySearchParameters, ISearchFilters, ISearchSorting } from "./searchParameters"; import { EntityVersionOperation } from "./versioning"; export interface IEntityCreateCommand { execute(input: TEntityCreateData): Promise>; } export interface IEntityUpdateCommand { execute(id: TEntityId, data: TEntityUpdateData): Promise>; } export interface IEntityUpsertCommand { execute(id: TEntityId, data: TEntityUpdateData): Promise>; } export interface IEntityDeleteCommand { execute(id: TEntityId): Promise; } export type EntityVersionCommandInput = { operation: EntityVersionOperation; id: TEntityId; entity?: TEntity; }; export interface IEntityVersionCommand { execute(input: EntityVersionCommandInput): Promise; } export interface IEntitiesDeleteParameters { filters?: ISearchFilters; sorting?: ISearchSorting; } export interface IEntitiesDeleteResult { deletedCount: number; } export interface IEntitiesDeleteCommand, TSorting> { execute(params: TEntitiesDeleteParameters): Promise; } export interface IEntitiesExportCommand, TSorting extends SortingType, TCursor> { execute(input: EntitiesExportInput): Promise; } export interface IEntitiesImportCommand { execute(input: EntitiesImportInput): Promise; } export interface IEntitiesParseCommand { execute(input: EntitiesParseInput): Promise>; } export interface IEntitiesSampleDownloadCommand { execute(input: EntitiesSampleDownloadOptions): Promise; } export interface IEntityUpsertByParameters { filter: TEntityFilters; data: Partial; } export interface IEntityUpsertByResult { id: string; } export interface IEntityUpsertByCommand { execute(params: IEntityUpsertByParameters): Promise; }