@medusajs/utils
Version:
Medusa utilities functions shared by Medusa core and Modules
52 lines • 2.02 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSelectsAndRelationsFromObjectArray = getSelectsAndRelationsFromObjectArray;
const deduplicate_1 = require("./deduplicate");
const is_object_1 = require("./is-object");
const KEYS_THAT_ARE_NOT_RELATIONS = ["metadata"];
function getSelectsAndRelationsFromObjectArray(dataArray, options, prefix) {
const selects = [];
const relations = [];
const { objectFields, requiredFields } = options ?? {};
for (const data of dataArray) {
for (const [key, value] of Object.entries(data)) {
if ((0, is_object_1.isObject)(value) && !objectFields?.includes(key)) {
const res = getSelectsAndRelationsFromObjectArray([value], options, setKey(key, prefix));
selects.push(...res.selects);
if (!KEYS_THAT_ARE_NOT_RELATIONS.includes(key)) {
relations.push(setKey(key, prefix));
relations.push(...res.relations);
}
}
else if (Array.isArray(value)) {
const res = getSelectsAndRelationsFromObjectArray(value, options, setKey(key, prefix));
selects.push(...res.selects);
if (!KEYS_THAT_ARE_NOT_RELATIONS.includes(key)) {
relations.push(setKey(key, prefix));
relations.push(...res.relations);
}
}
else {
selects.push(setKey(key, prefix));
}
}
}
const uniqueSelects = (0, deduplicate_1.deduplicate)([
...selects,
...(requiredFields ?? []),
]);
const uniqueRelations = (0, deduplicate_1.deduplicate)(relations);
return {
selects: uniqueSelects,
relations: uniqueRelations,
};
}
function setKey(key, prefix) {
if (prefix) {
return `${prefix}.${key}`;
}
else {
return key;
}
}
//# sourceMappingURL=get-selects-and-relations-from-object-array.js.map
;