import { Count, DataObject, Entity, EntityCrudRepository, Filter, Getter, Options, TypeResolver, Where } from '../..'; /** * CRUD operations for a target repository of a HasManyThrough relation * * EXPERIMENTAL: This interface is not stable and may change in the near future. * Backwards-incompatible changes may be introduced in semver-minor versions. */ export interface HasManyThroughRepository { /** * Create a target model instance * @param targetModelData - The target model data * @param options - Options for the operation * options.polymorphicType a string or a string array of polymorphic type names * specify of which concrete model the created instance should be * @returns A promise which resolves to the newly created target model instance */ create(targetModelData: DataObject, options?: Options & { throughData?: DataObject; throughOptions?: Options; } & { polymorphicType?: string; }): Promise; /** * Find target model instance(s) * @param filter - A filter object for where, order, limit, etc. * @param options - Options for the operation * options.throughOptions.discriminator - target discriminator field on through * options.polymorphicType a string or a string array of polymorphic type names * to specify which repositories should are expected to be searched * It is highly recommended to contain this param especially for * datasources using deplicated ids across tables * @returns A promise which resolves with the found target instance(s) */ find(filter?: Filter, options?: Options & { throughOptions?: Options & { discriminator?: string; }; } & { polymorphicType?: string | string[]; }): Promise; /** * Delete multiple target model instances * @param where - Instances within the where scope are deleted * @param options * options.throughOptions.discriminator - target discriminator field on through * options.polymorphicType a string or a string array of polymorphic type names * to specify which repositories should are expected to be searched * It is highly recommended to contain this param especially for * datasources using deplicated ids across tables * @returns A promise which resolves the deleted target model instances */ delete(where?: Where, options?: Options & { throughOptions?: Options & { discriminator?: string; }; } & { polymorphicType?: string | string[]; }): Promise; /** * Patch multiple target model instances * @param dataObject - The fields and their new values to patch * @param where - Instances within the where scope are patched * @param options * options.throughOptions.discriminator - target discriminator field on through * options.isPolymorphic - whether dataObject is a dictionary * @returns A promise which resolves the patched target model instances */ patch(dataObject: DataObject | { [polymorphicType: string]: DataObject; }, where?: Where, options?: Options & { throughOptions?: Options & { discriminator?: string; }; } & { isPolymorphic?: boolean; }): Promise; /** * Creates a new many-to-many association to an existing target model instance * @param targetModelId - The target model ID to link * @param options * @returns A promise which resolves to the linked target model instance */ link(targetModelId: TargetID, options?: Options & { throughData?: DataObject; throughOptions?: Options; }): Promise; /** * Removes an association to an existing target model instance * @param targetModelId - The target model to unlink * @param options * @returns A promise which resolves to null */ unlink(targetModelId: TargetID, options?: Options & { throughOptions?: Options; }): Promise; /** * Remove all association to an existing target model instance * @param options * @return A promise which resolves to void */ unlinkAll(options?: Options & { throughOptions?: Options; }): Promise; } /** * a class for CRUD operations for hasManyThrough relation. * * Warning: The hasManyThrough interface is experimental and is subject to change. * If backwards-incompatible changes are made, a new major version may not be * released. */ export declare class DefaultHasManyThroughRepository, ThroughEntity extends Entity, ThroughID, ThroughRepository extends EntityCrudRepository> implements HasManyThroughRepository { getTargetRepository: Getter | { [repoType: string]: Getter; }; getThroughRepository: Getter; getTargetConstraintFromThroughModels: (throughInstances: ThroughEntity[]) => DataObject; getTargetKeys: (throughInstances: ThroughEntity[]) => TargetID[]; getThroughConstraintFromSource: () => DataObject; getTargetIds: (targetInstances: TargetEntity[]) => TargetID[]; getThroughConstraintFromTarget: (targetID: TargetID[]) => DataObject; targetResolver: TypeResolver; throughResolver: TypeResolver; constructor(getTargetRepository: Getter | { [repoType: string]: Getter; }, getThroughRepository: Getter, getTargetConstraintFromThroughModels: (throughInstances: ThroughEntity[]) => DataObject, getTargetKeys: (throughInstances: ThroughEntity[]) => TargetID[], getThroughConstraintFromSource: () => DataObject, getTargetIds: (targetInstances: TargetEntity[]) => TargetID[], getThroughConstraintFromTarget: (targetID: TargetID[]) => DataObject, targetResolver: TypeResolver, throughResolver: TypeResolver); getTargetRepositoryDict: { [repoType: string]: Getter; }; create(targetModelData: DataObject, options?: Options & { throughData?: DataObject; throughOptions?: Options; } & { polymorphicType?: string; }): Promise; find(filter?: Filter, options?: Options & { throughOptions?: Options & { discriminator?: string; }; } & { polymorphicType?: string | string[]; }): Promise; delete(where?: Where, options?: Options & { throughOptions?: Options & { discriminator?: string; }; } & { polymorphicType?: string | string[]; }): Promise; patch(dataObject: DataObject | { [polymorphicType: string]: DataObject; }, where?: Where, options?: Options & { throughOptions?: Options & { discriminator?: string; }; } & { isPolymorphic?: boolean; }): Promise; link(targetId: TargetID, options?: Options & { throughData?: DataObject; throughOptions?: Options; }): Promise; unlink(targetId: TargetID, options?: Options & { throughOptions?: Options; }): Promise; unlinkAll(options?: Options & { throughOptions?: Options; }): Promise; }