Update sql gen. Add support for raw sql in joins select and regular select sections

This commit is contained in:
2026-04-12 14:15:57 +01:00
parent a57a063f67
commit a4aa20baa4
5 changed files with 31 additions and 5 deletions
+8
View File
@@ -640,6 +640,10 @@ export type ServerQueryParam<T extends {
group?: keyof T | ServerQueryParamGroupBy<T> | (keyof T | ServerQueryParamGroupBy<T>)[];
countSubQueries?: ServerQueryParamsCount[];
fullTextSearch?: ServerQueryParamFullTextSearch<T>;
/**
* Raw SQL to use as select
*/
select_sql?: string;
[key: string]: any;
};
/**
@@ -801,6 +805,10 @@ export type ServerQueryParamsJoin<Table extends string = string, Field extends o
count?: boolean;
})[];
operator?: (typeof ServerQueryOperators)[number];
/**
* Raw SQL to use as join select
*/
select_sql?: string;
};
/**
* Defines how a root-table field maps to a join-table field in an `ON` clause.
+8 -2
View File
@@ -141,7 +141,10 @@ export default function sqlGenerator({ tableName, genObject, dbFullName, count }
: undefined;
let queryString = (() => {
let str = "SELECT";
if (genObject?.selectFields?.[0]) {
if (genObject?.select_sql) {
str += ` ${genObject.select_sql}`;
}
else if (genObject?.selectFields?.[0]) {
if (genObject.join) {
str += ` ${genObject.selectFields
?.map((fld) => typeof fld == "object"
@@ -212,7 +215,10 @@ export default function sqlGenerator({ tableName, genObject, dbFullName, count }
if (existingJoinTableNames.includes(joinTableName))
return null;
existingJoinTableNames.push(joinTableName);
if (joinObj.selectFields) {
if (joinObj.select_sql) {
return joinObj.select_sql;
}
else if (joinObj.selectFields) {
return joinObj.selectFields
.map((selectField) => {
if (typeof selectField == "string") {