graphql-compose-mongoose
Version:
Plugin for `graphql-compose` which derive a graphql types from a mongoose model.
46 lines • 2.13 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getDataLoader = getDataLoader;
const dataloader_1 = __importDefault(require("dataloader"));
function getDataLoader(context, info, batchLoadFn) {
if (!context._gqlDataLoaders)
context._gqlDataLoaders = new WeakMap();
const { _gqlDataLoaders } = context;
const dlKey = info.fieldNodes;
let dl = _gqlDataLoaders.get(dlKey);
if (!dl) {
const dataLoaderOptions = {
cacheKeyFn: (k) => {
if (k === null || k === void 0 ? void 0 : k.equals) {
return k.toString();
}
return k;
},
};
dl = new dataloader_1.default((ids) => __awaiter(this, void 0, void 0, function* () {
const result = yield batchLoadFn(ids);
return ids.map((id) => result.find((doc) => {
var _a;
if ((_a = doc === null || doc === void 0 ? void 0 : doc._id) === null || _a === void 0 ? void 0 : _a.equals) {
return doc._id.equals(id);
}
return doc._id === id;
}));
}), dataLoaderOptions);
_gqlDataLoaders.set(dlKey, dl);
}
return dl;
}
//# sourceMappingURL=dataLoaderHelper.js.map