UNPKG

@loopback/repository

Version:

Define and implement a common set of interfaces for interacting with databases

170 lines (169 loc) 7.87 kB
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<Target extends Entity, TargetID, Through extends Entity> { /** * 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<Target>, options?: Options & { throughData?: DataObject<Through>; throughOptions?: Options; } & { polymorphicType?: string; }): Promise<Target>; /** * 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<Target>, options?: Options & { throughOptions?: Options & { discriminator?: string; }; } & { polymorphicType?: string | string[]; }): Promise<Target[]>; /** * 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<Target>, options?: Options & { throughOptions?: Options & { discriminator?: string; }; } & { polymorphicType?: string | string[]; }): Promise<Count>; /** * 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<Target> | { [polymorphicType: string]: DataObject<Target>; }, where?: Where<Target>, options?: Options & { throughOptions?: Options & { discriminator?: string; }; } & { isPolymorphic?: boolean; }): Promise<Count>; /** * 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<Through>; throughOptions?: Options; }): Promise<void>; /** * 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<void>; /** * Remove all association to an existing target model instance * @param options * @return A promise which resolves to void */ unlinkAll(options?: Options & { throughOptions?: Options; }): Promise<void>; } /** * 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<TargetEntity extends Entity, TargetID, TargetRepository extends EntityCrudRepository<TargetEntity, TargetID>, ThroughEntity extends Entity, ThroughID, ThroughRepository extends EntityCrudRepository<ThroughEntity, ThroughID>> implements HasManyThroughRepository<TargetEntity, TargetID, ThroughEntity> { getTargetRepository: Getter<TargetRepository> | { [repoType: string]: Getter<TargetRepository>; }; getThroughRepository: Getter<ThroughRepository>; getTargetConstraintFromThroughModels: (throughInstances: ThroughEntity[]) => DataObject<TargetEntity>; getTargetKeys: (throughInstances: ThroughEntity[]) => TargetID[]; getThroughConstraintFromSource: () => DataObject<ThroughEntity>; getTargetIds: (targetInstances: TargetEntity[]) => TargetID[]; getThroughConstraintFromTarget: (targetID: TargetID[]) => DataObject<ThroughEntity>; targetResolver: TypeResolver<Entity, typeof Entity>; throughResolver: TypeResolver<Entity, typeof Entity>; constructor(getTargetRepository: Getter<TargetRepository> | { [repoType: string]: Getter<TargetRepository>; }, getThroughRepository: Getter<ThroughRepository>, getTargetConstraintFromThroughModels: (throughInstances: ThroughEntity[]) => DataObject<TargetEntity>, getTargetKeys: (throughInstances: ThroughEntity[]) => TargetID[], getThroughConstraintFromSource: () => DataObject<ThroughEntity>, getTargetIds: (targetInstances: TargetEntity[]) => TargetID[], getThroughConstraintFromTarget: (targetID: TargetID[]) => DataObject<ThroughEntity>, targetResolver: TypeResolver<Entity, typeof Entity>, throughResolver: TypeResolver<Entity, typeof Entity>); getTargetRepositoryDict: { [repoType: string]: Getter<TargetRepository>; }; create(targetModelData: DataObject<TargetEntity>, options?: Options & { throughData?: DataObject<ThroughEntity>; throughOptions?: Options; } & { polymorphicType?: string; }): Promise<TargetEntity>; find(filter?: Filter<TargetEntity>, options?: Options & { throughOptions?: Options & { discriminator?: string; }; } & { polymorphicType?: string | string[]; }): Promise<TargetEntity[]>; delete(where?: Where<TargetEntity>, options?: Options & { throughOptions?: Options & { discriminator?: string; }; } & { polymorphicType?: string | string[]; }): Promise<Count>; patch(dataObject: DataObject<TargetEntity> | { [polymorphicType: string]: DataObject<TargetEntity>; }, where?: Where<TargetEntity>, options?: Options & { throughOptions?: Options & { discriminator?: string; }; } & { isPolymorphic?: boolean; }): Promise<Count>; link(targetId: TargetID, options?: Options & { throughData?: DataObject<ThroughEntity>; throughOptions?: Options; }): Promise<void>; unlink(targetId: TargetID, options?: Options & { throughOptions?: Options; }): Promise<void>; unlinkAll(options?: Options & { throughOptions?: Options; }): Promise<void>; }