mikro-orm-find-dataloader
Version:
Additional dataloaders for the MikroORM EntityManager find/findOne/etc methods.
35 lines (34 loc) • 3.43 kB
TypeScript
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 = never>(where: FilterQuery<Entity>, options?: {
dataloader: false;
} & FindOptions<Entity, Hint, Fields>): Promise<Array<Loaded<Entity, Hint, Fields>>>;
find<Hint extends string = never, Fields extends string = never>(where: FilterQueryDataloader<Entity>, options?: {
dataloader: boolean;
} & Pick<FindOptions<Entity, Hint, Fields>, "populate">): Promise<Array<Loaded<Entity, Hint, Fields>>>;
find<Hint extends string = never, Fields extends string = never>(where: D extends true ? FilterQueryDataloader<Entity> : FilterQueryDataloader<Entity> | FilterQuery<Entity>, options?: {
dataloader?: undefined;
} & (D extends true ? Pick<FindOptions<Entity, Hint, Fields>, "populate"> : FindOptions<Entity, Hint, Fields>)): Promise<Array<Loaded<Entity, Hint, Fields>>>;
findOne<Hint extends string = never, Fields extends string = never>(where: FilterQuery<Entity>, options?: {
dataloader: false;
} & FindOneOptions<Entity, Hint, Fields>): Promise<Loaded<Entity, Hint, Fields> | null>;
findOne<Hint extends string = never, Fields extends string = never>(where: FilterQueryDataloader<Entity>, options?: {
dataloader: boolean;
} & Pick<FindOneOptions<Entity, Hint, Fields>, "populate">): Promise<Loaded<Entity, Hint, Fields> | null>;
findOne<Hint extends string = never, Fields extends string = never>(where: D extends true ? FilterQueryDataloader<Entity> : FilterQueryDataloader<Entity> | FilterQuery<Entity>, options?: {
dataloader?: undefined;
} & (D extends true ? Pick<FindOneOptions<Entity, Hint, Fields>, "populate"> : FindOneOptions<Entity, Hint, Fields>)): Promise<Loaded<Entity, Hint, Fields> | null>;
findOneOrFail<Hint extends string = never, Fields extends string = never>(where: FilterQuery<Entity>, options?: {
dataloader: false;
} & FindOneOrFailOptions<Entity, Hint, Fields>): Promise<Loaded<Entity, Hint, Fields>>;
findOneOrFail<Hint extends string = never, Fields extends string = never>(where: FilterQueryDataloader<Entity>, options?: {
dataloader: boolean;
} & Pick<FindOneOrFailOptions<Entity, Hint, Fields>, "populate">): Promise<Loaded<Entity, Hint, Fields>>;
findOneOrFail<Hint extends string = never, Fields extends string = never>(where: D extends true ? FilterQueryDataloader<Entity> : FilterQueryDataloader<Entity> | FilterQuery<Entity>, options?: {
dataloader?: undefined;
} & (D extends true ? Pick<FindOneOrFailOptions<Entity, Hint, Fields>, "populate"> : FindOneOrFailOptions<Entity, Hint, Fields>)): Promise<Loaded<Entity, Hint, Fields>>;
}
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>;