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") {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@moduletrace/bun-sqlite",
"version": "1.0.34",
"version": "1.0.35",
"description": "SQLite manager for Bun",
"author": "Benjamin Toby",
"main": "dist/index.js",
+8
View File
@@ -711,6 +711,10 @@ export type ServerQueryParam<
| (keyof T | ServerQueryParamGroupBy<T>)[];
countSubQueries?: ServerQueryParamsCount[];
fullTextSearch?: ServerQueryParamFullTextSearch<T>;
/**
* Raw SQL to use as select
*/
select_sql?: string;
[key: string]: any;
};
@@ -894,6 +898,10 @@ export type ServerQueryParamsJoin<
}
)[];
operator?: (typeof ServerQueryOperators)[number];
/**
* Raw SQL to use as join select
*/
select_sql?: string;
};
/**
+6 -2
View File
@@ -221,7 +221,9 @@ export default function sqlGenerator<
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) =>
@@ -310,7 +312,9 @@ export default function sqlGenerator<
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") {