@goatlab/fluent
Version:
Readable query Interface & API generator for TS and Node
40 lines • 1.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.nestQueryResults = void 0;
const js_utils_1 = require("@goatlab/js-utils");
const nestQueryResults = (results, keyToNestedKeyMap) => {
const nestableObject = {};
let currentLevel = 0;
// For each of the keys that we need to map
for (const key of Object.keys(keyToNestedKeyMap)) {
if (!key.endsWith('_id')) {
continue;
}
const currentLevelMetadata = keyToNestedKeyMap[key];
currentLevel = currentLevelMetadata.level;
// We only group by Ids of the current level
const grouped = js_utils_1.Arrays.groupBy(results, r => r[key]);
const _resultCount = Object.keys(grouped)?.length || 0;
// ForEach Id of the grouped results
for (const [index, k] of Object.keys(grouped).entries()) {
const prefixindex = currentLevelMetadata.nestableKey.lastIndexOf('.');
const prefix = currentLevelMetadata.nestableKey.substring(0, prefixindex);
const currentIndex = `${prefix}.${index}.${currentLevelMetadata.keyName}`;
const results = grouped[k];
console.log(currentLevelMetadata);
// Get current level values
if (currentLevelMetadata.level === currentLevel) {
// Get value of the id
nestableObject[`${currentIndex}`] = k;
}
// TODO: Process results when implementation is needed
for (const _result of results) {
// Implementation pending
}
}
// currentLevel = currentLevelMetadata.level
}
return results;
};
exports.nestQueryResults = nestQueryResults;
//# sourceMappingURL=nestQueryResults.js.map