Skip to content

Commit 22eac7b

Browse files
refactor: reference data nested fields now accessible #87700 (#1021)
1 parent c6975da commit 22eac7b

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

src/schema/query/referenceDataAggregation.query.ts

+28-1
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,33 @@ const procPipelineStep = (pipelineStep, data, sourceFields) => {
226226
data = groupBy(data, (item) =>
227227
keysToGroupBy.map((key) => get(item, key))
228228
);
229+
// Mapping between new group keys and data path
230+
const mapping: Record<string, string> = {};
231+
for (const key of keysToGroupBy) {
232+
// Check if the key contains a '.'
233+
if (key.includes('.')) {
234+
// Split the key by '.' and extract the last part
235+
const newKey = key.split('.').pop();
236+
mapping[newKey] = key;
237+
} else {
238+
mapping[key] = key;
239+
}
240+
}
241+
242+
/**
243+
* Transform object, using mapping object
244+
*
245+
* @param obj Object to transform
246+
* @returns Transformed object
247+
*/
248+
const transformObject = (obj: Record<string, any>) => {
249+
const newObj: Record<string, any> = {};
250+
for (const [key, path] of Object.entries(mapping)) {
251+
newObj[key] = get(obj, path);
252+
}
253+
return newObj;
254+
};
255+
229256
for (const key in data) {
230257
let supplementaryFields: any;
231258
for (const operator of operators) {
@@ -245,7 +272,7 @@ const procPipelineStep = (pipelineStep, data, sourceFields) => {
245272
data[key],
246273
operators.map((operator) => operator.operator)
247274
),
248-
...pick(data[key].initialData[0], keysToGroupBy),
275+
...transformObject(data[key].initialData[0]),
249276
});
250277
}
251278
return dataToKeep;

0 commit comments

Comments
 (0)