Update sql gen. Add support for raw sql in joins select and regular select sections
This commit is contained in:
parent
a57a063f67
commit
a4aa20baa4
8
dist/types/index.d.ts
vendored
8
dist/types/index.d.ts
vendored
@ -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.
|
||||
|
||||
10
dist/utils/sql-generator.js
vendored
10
dist/utils/sql-generator.js
vendored
@ -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,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",
|
||||
|
||||
@ -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;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@ -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") {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user