@grapi/server
Version:
Grapi Schema Generator For GraphQL Server
44 lines (43 loc) • 1.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.relationForeignKey = exports.findUniqueObjectsOnModel = exports.findUniqueObjectOnModel = void 0;
const __1 = require("..");
const lodash_1 = require("../lodash");
const findUniqueObjectOnModel = async (connectData, model) => {
if ((0, lodash_1.isEmpty)(connectData) === false) {
const where = (0, lodash_1.mapValues)(connectData, value => { return { [__1.Operator.eq]: value }; });
const targetItem = await model.getDataSource().findOne({ where });
if ((0, lodash_1.get)(targetItem, `id`)) {
return targetItem;
}
else {
throw new Error(`No Node for the model ${(0, lodash_1.capitalize)(model.getName())} with unique field.`);
}
}
else if ((0, lodash_1.isUndefined)(connectData) === false) {
throw new Error(`You provided an invalid argument for the where selector on ${(0, lodash_1.capitalize)(model.getName())}. Please provide exactly one unique field and value.`);
}
return undefined;
};
exports.findUniqueObjectOnModel = findUniqueObjectOnModel;
const findUniqueObjectsOnModel = async (connectData, model) => {
const connectWhere = [];
if ((0, lodash_1.isEmpty)(connectData) === false) {
for (const filter of connectData) {
const object = await findUniqueObjectOnModel(filter, model);
if (object) {
connectWhere.push(object);
}
}
}
return connectWhere;
};
exports.findUniqueObjectsOnModel = findUniqueObjectsOnModel;
const relationForeignKey = (metadata, foreignKey = '') => {
foreignKey = (0, lodash_1.get)(metadata, 'foreignKey', '');
if (foreignKey && typeof foreignKey !== 'string') {
foreignKey = foreignKey.key || '';
}
return foreignKey;
};
exports.relationForeignKey = relationForeignKey;