Files
bun-sqlite/dist/utils/sql-generator-grab-select-field-sql.js
T

56 lines
1.8 KiB
JavaScript

import sqlGenGrabConcatStr from "./sql-generator-grab-concat-str";
import { sqlField, sqlIdent } from "./sql-safe";
export default function sqlGenGrabSelectFieldSQL({ selectFields, append_table_names, table_name }) {
let str = "";
str += ` ${selectFields
?.map((fld) => {
if (typeof fld != "object") {
return sqlField(fld);
}
const fld_name = sqlField(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 || fld_name,
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 ${sqlIdent(alias, "alias")}`;
}
return fld_str;
})
.join(",")}`;
return str;
}