UNPKG

mikro-orm-find-dataloader

Version:

Additional dataloaders for the MikroORM EntityManager find/findOne/etc methods.

35 lines (34 loc) 3.92 kB
import { EntityRepository, type EntityManager, type FindOptions, type Loaded, type EntityName, type FilterQuery, type FindOneOptions, type FindOneOrFailOptions } from "@mikro-orm/core"; import { type FilterQueryDataloader } from "./findDataloader"; export interface IFindDataloaderEntityRepository<Entity extends object, D extends boolean> extends EntityRepository<Entity> { readonly dataloader: D; find<Hint extends string = never, Fields extends string = "*", Excludes extends string = never>(where: FilterQuery<Entity>, options?: { dataloader: false; } & FindOptions<Entity, Hint, Fields, Excludes>): Promise<Array<Loaded<Entity, Hint, Fields, Excludes>>>; find<Hint extends string = never, Fields extends string = "*", Excludes extends string = never>(where: FilterQueryDataloader<Entity>, options?: { dataloader: boolean; } & Pick<FindOptions<Entity, Hint, Fields, Excludes>, "populate">): Promise<Array<Loaded<Entity, Hint, Fields, Excludes>>>; find<Hint extends string = never, Fields extends string = "*", Excludes extends string = never>(where: D extends true ? FilterQueryDataloader<Entity> : FilterQueryDataloader<Entity> | FilterQuery<Entity>, options?: { dataloader?: undefined; } & (D extends true ? Pick<FindOptions<Entity, Hint, Fields, Excludes>, "populate"> : FindOptions<Entity, Hint, Fields, Excludes>)): Promise<Array<Loaded<Entity, Hint, Fields, Excludes>>>; findOne<Hint extends string = never, Fields extends string = "*", Excludes extends string = never>(where: FilterQuery<Entity>, options?: { dataloader: false; } & FindOneOptions<Entity, Hint, Fields, Excludes>): Promise<Loaded<Entity, Hint, Fields, Excludes> | null>; findOne<Hint extends string = never, Fields extends string = "*", Excludes extends string = never>(where: FilterQueryDataloader<Entity>, options?: { dataloader: boolean; } & Pick<FindOneOptions<Entity, Hint, Fields, Excludes>, "populate">): Promise<Loaded<Entity, Hint, Fields, Excludes> | null>; findOne<Hint extends string = never, Fields extends string = "*", Excludes extends string = never>(where: D extends true ? FilterQueryDataloader<Entity> : FilterQueryDataloader<Entity> | FilterQuery<Entity>, options?: { dataloader?: undefined; } & (D extends true ? Pick<FindOneOptions<Entity, Hint, Fields, Excludes>, "populate"> : FindOneOptions<Entity, Hint, Fields, Excludes>)): Promise<Loaded<Entity, Hint, Fields, Excludes> | null>; findOneOrFail<Hint extends string = never, Fields extends string = "*", Excludes extends string = never>(where: FilterQuery<Entity>, options?: { dataloader: false; } & FindOneOrFailOptions<Entity, Hint, Fields, Excludes>): Promise<Loaded<Entity, Hint, Fields, Excludes>>; findOneOrFail<Hint extends string = never, Fields extends string = "*", Excludes extends string = never>(where: FilterQueryDataloader<Entity>, options?: { dataloader: boolean; } & Pick<FindOneOrFailOptions<Entity, Hint, Fields, Excludes>, "populate">): Promise<Loaded<Entity, Hint, Fields, Excludes>>; findOneOrFail<Hint extends string = never, Fields extends string = "*", Excludes extends string = never>(where: D extends true ? FilterQueryDataloader<Entity> : FilterQueryDataloader<Entity> | FilterQuery<Entity>, options?: { dataloader?: undefined; } & (D extends true ? Pick<FindOneOrFailOptions<Entity, Hint, Fields, Excludes>, "populate"> : FindOneOrFailOptions<Entity, Hint, Fields, Excludes>)): Promise<Loaded<Entity, Hint, Fields, Excludes>>; } export type FindDataloaderEntityRepositoryCtor<Entity extends object, D extends boolean> = new (em: EntityManager, entityName: EntityName<Entity>) => IFindDataloaderEntityRepository<Entity, D>; export declare function getFindDataloaderEntityRepository<Entity extends object, D extends boolean>(defaultEnabled: D): FindDataloaderEntityRepositoryCtor<Entity, D>;