async function generateSelectStatement()

in api/v1/src/datasets/views/sqlBuilder.js [89:127]


async function generateSelectStatement(view, includeFrom) {
    let source = view.source;
    const visibleColumns = source.visibleColumns;
    const hiddenColumns = source.hiddenColumns;

    let sql = "";
    if (visibleColumns && visibleColumns.length > 0) {
        // Column selects
        sql += "SELECT\n";
        let i;
        for (i = 0; i < visibleColumns.length; i++) {
            if (i !== 0) {
                // Not the last item in the collection
                sql += ",\n";
            }
            sql += `\t${visibleColumns[i]}`;
        }
    }
    else if (hiddenColumns && hiddenColumns.length > 0) {
        sql += "SELECT *";

        if (hiddenColumns.length > 0) {
            sql += " EXCEPT (";
            sql += hiddenColumns.join(", ");
            sql += ")";
        }
    }
    else {
        // Use all columns
        sql += "SELECT *";
    }

    if (includeFrom === true) {
        sql += "\n";
        sql += `FROM \`${view.projectId}.${source.datasetId}.${source.tableId}\` s`;
    }

    return sql;
}