UNPKG

@grapi/server

Version:

Grapi Schema Generator For GraphQL Server

44 lines (43 loc) 1.89 kB
"use strict"; 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;