UNPKG

mikro-orm-find-dataloader

Version:

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

61 lines (60 loc) 2.63 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getFindDataloaderEntityRepository = void 0; /* eslint-disable @typescript-eslint/method-signature-style */ const core_1 = require("@mikro-orm/core"); const dataloader_1 = __importDefault(require("dataloader")); const findDataloader_1 = require("./findDataloader"); function getFindDataloaderEntityRepository(defaultEnabled) { class FindDataloaderEntityRepository extends core_1.EntityRepository { dataloader = defaultEnabled; findLoader = new dataloader_1.default((0, findDataloader_1.getFindBatchLoadFn)(this.em, this.entityName)); async find(where, options) { const entityName = core_1.Utils.className(this.entityName); const res = await ((options?.dataloader ?? this.dataloader) ? this.findLoader.load({ entityName, meta: this.em.getMetadata().get(entityName), filter: where, options, many: true, }) : this.em.find(this.entityName, where, options)); return res; } async findOne(where, options) { const entityName = core_1.Utils.className(this.entityName); const res = await ((options?.dataloader ?? this.dataloader) ? this.findLoader.load({ entityName, meta: this.em.getMetadata().get(entityName), filter: where, options, many: false, }) : this.em.findOne(this.entityName, where, options)); return res; } async findOneOrFail(where, options) { const entityName = core_1.Utils.className(this.entityName); const res = await ((options?.dataloader ?? this.dataloader) ? this.findLoader.load({ entityName, meta: this.em.getMetadata().get(entityName), filter: where, options, many: false, }) : this.em.findOneOrFail(this.entityName, where, options)); if (res == null) { throw new Error("Cannot find result"); } return res; } } return FindDataloaderEntityRepository; } exports.getFindDataloaderEntityRepository = getFindDataloaderEntityRepository;