This commit is contained in:
Benjamin Toby 2026-04-16 15:05:35 +01:00
parent af6b44ffbe
commit ea8a2eab6b
5 changed files with 31 additions and 9 deletions

13
dist/types/index.d.ts vendored
View File

@ -643,7 +643,6 @@ export type ServerQueryParam<T extends {
/** /**
* Raw SQL to use as select * Raw SQL to use as select
*/ */
select_sql?: string;
[key: string]: any; [key: string]: any;
}; };
/** /**
@ -808,7 +807,17 @@ export type ServerQueryParamsJoin<Table extends string = string, Field extends o
/** /**
* Raw SQL to use as join select * Raw SQL to use as join select
*/ */
select_sql?: string; /**
* Concatenate multiple matches from another table
*/
group_concat?: {
field: string;
alias: string;
/**
* Separator. Default `,`
*/
separator?: string;
};
}; };
/** /**
* Defines how a root-table field maps to a join-table field in an `ON` clause. * Defines how a root-table field maps to a join-table field in an `ON` clause.

View File

@ -215,8 +215,9 @@ export default function sqlGenerator({ tableName, genObject, dbFullName, count }
if (existingJoinTableNames.includes(joinTableName)) if (existingJoinTableNames.includes(joinTableName))
return null; return null;
existingJoinTableNames.push(joinTableName); existingJoinTableNames.push(joinTableName);
if (joinObj.select_sql) { if (joinObj.group_concat) {
return joinObj.select_sql; let group_concat = `GROUP_CONCAT(${joinTableName}.${joinObj.group_concat.field}, ${joinObj.group_concat.separator || ","}) AS ${joinObj.group_concat.alias}`;
return group_concat;
} }
else if (joinObj.selectFields) { else if (joinObj.selectFields) {
return joinObj.selectFields return joinObj.selectFields

View File

@ -1,6 +1,6 @@
{ {
"name": "@moduletrace/bun-sqlite", "name": "@moduletrace/bun-sqlite",
"version": "1.0.37", "version": "1.0.38",
"description": "SQLite manager for Bun", "description": "SQLite manager for Bun",
"author": "Benjamin Toby", "author": "Benjamin Toby",
"main": "dist/index.js", "main": "dist/index.js",

View File

@ -715,7 +715,7 @@ export type ServerQueryParam<
/** /**
* Raw SQL to use as select * Raw SQL to use as select
*/ */
select_sql?: string; // select_sql?: string;
[key: string]: any; [key: string]: any;
}; };
@ -902,7 +902,18 @@ export type ServerQueryParamsJoin<
/** /**
* Raw SQL to use as join select * Raw SQL to use as join select
*/ */
select_sql?: string; // select_sql?: string;
/**
* Concatenate multiple matches from another table
*/
group_concat?: {
field: string;
alias: string;
/**
* Separator. Default `,`
*/
separator?: string;
};
}; };
/** /**

View File

@ -312,8 +312,9 @@ export default function sqlGenerator<
return null; return null;
existingJoinTableNames.push(joinTableName); existingJoinTableNames.push(joinTableName);
if (joinObj.select_sql) { if (joinObj.group_concat) {
return joinObj.select_sql; let group_concat = `GROUP_CONCAT(${joinTableName}.${joinObj.group_concat.field}, ${joinObj.group_concat.separator || ","}) AS ${joinObj.group_concat.alias}`;
return group_concat;
} else if (joinObj.selectFields) { } else if (joinObj.selectFields) {
return joinObj.selectFields return joinObj.selectFields
.map((selectField) => { .map((selectField) => {