Files
bun-sqlite/dist/utils/sql-generator-grab-select-field-sql.js
T
tbenandClaude Opus 5.5 938a1da71d Add queue tables, quote SQL identifiers (v1.3.0)
- isQueue table option adds queue columns and a (status, available_at)
  index; BunSQLite.queue exposes add, claim, complete, fail and
  release_stale with atomic claims
- Set busy_timeout on connections so workers in separate processes wait
  instead of failing with SQLITE_BUSY
- Quote table and column names with backticks in generated SQL, so
  reserved words (to, order, group) work and unknown columns error
  instead of matching as string literals
- Tests for queue ops, multi-process claims and reserved-word names

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-18 16:29:14 +01:00

56 lines
1.8 KiB
JavaScript

import sqlGenGrabConcatStr from "./sql-generator-grab-concat-str";
import { sqlColumn, sqlName } from "./sql-safe";
export default function sqlGenGrabSelectFieldSQL({ selectFields, append_table_names, table_name }) {
let str = "";
str += ` ${selectFields
?.map((fld) => {
if (typeof fld != "object") {
return sqlColumn(fld);
}
const fld_name = sqlColumn(fld.fieldName);
const final_fld_name = append_table_names && !fld_name.includes(".")
? `${table_name}.${fld_name}`
: fld_name;
if (fld.group_concat) {
return sqlGenGrabConcatStr({
field: final_fld_name,
alias: fld.group_concat.alias || fld.alias || String(fld.fieldName),
separator: fld.group_concat.separator,
distinct: fld.group_concat.distinct,
});
}
let fld_str = ``;
let alias = fld.alias;
if (fld.count) {
fld_str += `COUNT(${final_fld_name})`;
if (!alias && typeof fld.count == "object") {
alias = fld.count.alias;
}
}
else if (fld.sum) {
fld_str += `SUM(${final_fld_name})`;
}
else if (fld.average) {
fld_str += `AVG(${final_fld_name})`;
}
else if (fld.max) {
fld_str += `MAX(${final_fld_name})`;
}
else if (fld.min) {
fld_str += `MIN(${final_fld_name})`;
}
else if (fld.distinct) {
fld_str += `DISTINCT ${final_fld_name}`;
}
else {
fld_str += final_fld_name;
}
if (alias) {
fld_str += ` AS ${sqlName(alias, "alias")}`;
}
return fld_str;
})
.join(",")}`;
return str;
}