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