Update joins parser. Enforce selectFields unless instructed otherwise

This commit is contained in:
2026-04-19 09:48:38 +01:00
parent 64a6d78506
commit 95d567d4dd
4 changed files with 25 additions and 5 deletions
+2 -1
View File
@@ -1,6 +1,7 @@
import type { BunSQLiteQueryFieldValues, ServerQueryParam } from "../types";
type Params<Q extends Record<string, any> = Record<string, any>> = {
query: ServerQueryParam<Q>;
ignore_select_fields?: boolean;
};
export default function grabJoinFieldsFromQueryObject<Q extends Record<string, any> = Record<string, any>, F extends string = string, T extends string = string>({ query }: Params<Q>): BunSQLiteQueryFieldValues<F, T>[];
export default function grabJoinFieldsFromQueryObject<Q extends Record<string, any> = Record<string, any>, F extends string = string, T extends string = string>({ query, ignore_select_fields, }: Params<Q>): BunSQLiteQueryFieldValues<F, T>[];
export {};
+7 -2
View File
@@ -1,5 +1,5 @@
import _ from "lodash";
export default function grabJoinFieldsFromQueryObject({ query }) {
export default function grabJoinFieldsFromQueryObject({ query, ignore_select_fields, }) {
const fields_values = [];
const new_query = _.cloneDeep(query);
if (new_query.join) {
@@ -12,21 +12,26 @@ export default function grabJoinFieldsFromQueryObject({ query }) {
const single_join = join[i];
fields_values.push(...grabSingleJoinData({
join: single_join,
ignore_select_fields,
}));
}
}
else {
fields_values.push(...grabSingleJoinData({
join: join,
ignore_select_fields,
}));
}
}
}
return fields_values;
}
function grabSingleJoinData({ join, }) {
function grabSingleJoinData({ join, ignore_select_fields, }) {
let values = [];
const join_select_fields = join?.selectFields;
if (!join_select_fields?.[0] && !ignore_select_fields) {
throw new Error(`\`selectFields\` required in joins. To ignore this error, pass the \`ignore_select_fields\` parameter`);
}
if (join_select_fields?.[0]) {
for (let i = 0; i < join_select_fields.length; i++) {
const select_field = join_select_fields[i];