@wepublish/api
Version:
API core for we.publish.
37 lines • 1.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PrimeDataLoader = void 0;
const tslib_1 = require("tslib");
const common_1 = require("@nestjs/common");
function PrimeDataLoader(dataloader) {
const decoratorFactory = (target, propertyKey, descriptor) => {
const origin = descriptor.value;
const injectDataloader = (0, common_1.Inject)(dataloader);
injectDataloader(target, `__DATALOADER__${dataloader.name}`);
descriptor.value = function (...args) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const resultItem = yield origin.apply(this, args);
if (!resultItem) {
return resultItem;
}
const results = Array.isArray(resultItem)
? resultItem
: Array.isArray(resultItem.nodes)
? resultItem.nodes
: [resultItem];
for (const result of results) {
if ('id' in result) {
const that = this;
const loader = that[`__DATALOADER__${dataloader.name}`];
loader.prime(result.id, result);
}
}
return resultItem;
});
};
};
decoratorFactory.KEY = `PrimeDataLoader_${dataloader.name}`;
return decoratorFactory;
}
exports.PrimeDataLoader = PrimeDataLoader;
//# sourceMappingURL=prime-dataloaders.decorator.js.map