mikro-orm-find-dataloader
Version:
Additional dataloaders for the MikroORM EntityManager find/findOne/etc methods.
61 lines (60 loc) • 2.63 kB
JavaScript
"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;