ottoman
Version:
Ottoman Couchbase ODM
51 lines • 2.05 kB
JavaScript
;
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