46 lines
1.4 KiB
JavaScript
46 lines
1.4 KiB
JavaScript
import _ from "lodash";
|
|
export default function grabJoinFieldsFromQueryObject({ query }) {
|
|
const fields_values = [];
|
|
const new_query = _.cloneDeep(query);
|
|
if (new_query.join) {
|
|
for (let i = 0; i < new_query.join.length; i++) {
|
|
const join = new_query.join[i];
|
|
if (!join)
|
|
continue;
|
|
if (Array.isArray(join)) {
|
|
for (let i = 0; i < join.length; i++) {
|
|
const single_join = join[i];
|
|
fields_values.push(...grabSingleJoinData({
|
|
join: single_join,
|
|
}));
|
|
}
|
|
}
|
|
else {
|
|
fields_values.push(...grabSingleJoinData({
|
|
join: join,
|
|
}));
|
|
}
|
|
}
|
|
}
|
|
return fields_values;
|
|
}
|
|
function grabSingleJoinData({ join, }) {
|
|
let values = [];
|
|
const join_select_fields = join?.selectFields;
|
|
if (join_select_fields) {
|
|
for (let i = 0; i < join_select_fields.length; i++) {
|
|
const select_field = join_select_fields[i];
|
|
if (select_field) {
|
|
const value = join.match;
|
|
values.push({
|
|
field: typeof select_field == "object"
|
|
? String(select_field.field)
|
|
: String(select_field),
|
|
table: join.tableName,
|
|
});
|
|
}
|
|
}
|
|
}
|
|
return values;
|
|
}
|