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; }