UNPKG

ottoman

Version:
51 lines 2.05 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.extractPopulateFieldsFromObject = exports.getSchemaType = exports.extractSchemaReferencesFromGivenFields = exports.extractSchemaReferencesFields = void 0; const extract_populate_1 = require("./query/extract-populate"); const extractSchemaReferencesFields = (schema) => { const { fields } = schema; const populableFields = {}; for (const fieldName in fields) { if (fields.hasOwnProperty(fieldName)) { const field = (0, exports.getSchemaType)(fieldName, schema); if (field.refModel) { populableFields[fieldName] = field; } } } return populableFields; }; exports.extractSchemaReferencesFields = extractSchemaReferencesFields; const extractSchemaReferencesFromGivenFields = (fields, schema) => { const toPopulate = (0, extract_populate_1.extractPopulate)(fields); const fieldsToPopulate = {}; for (const fieldName of toPopulate) { fieldsToPopulate[fieldName] = (0, exports.getSchemaType)(fieldName, schema); } return fieldsToPopulate; }; exports.extractSchemaReferencesFromGivenFields = extractSchemaReferencesFromGivenFields; const getSchemaType = (fieldName, schema) => { let field = schema.path(fieldName); if (field.typeName === 'Array') { field = field.itemType; } return field; }; exports.getSchemaType = getSchemaType; const extractPopulateFieldsFromObject = ({ select, populate }) => { let toPopulate = (0, extract_populate_1.extractPopulate)(select); if (populate) { toPopulate = [ ...new Set([ ...toPopulate, ...(typeof populate === 'object' && !Array.isArray(populate) ? Object.keys(populate) : (0, extract_populate_1.extractPopulate)(populate)), ]), ]; } return toPopulate; }; exports.extractPopulateFieldsFromObject = extractPopulateFieldsFromObject; //# sourceMappingURL=schema.utils.js.map