datasources 0.1.5

Async datasource interfaces, middleware, registry, and test doubles
Documentation
pub struct Aggregate;

impl Aggregate {
    pub fn count(column: &str, alias: Option<&str>) -> String {
        sql("COUNT", column, alias)
    }

    pub fn sum(column: &str, alias: Option<&str>) -> String {
        sql("SUM", column, alias)
    }

    pub fn min(column: &str, alias: Option<&str>) -> String {
        sql("MIN", column, alias)
    }

    pub fn max(column: &str, alias: Option<&str>) -> String {
        sql("MAX", column, alias)
    }
}

fn sql(op: &str, column: &str, alias: Option<&str>) -> String {
    match alias {
        Some(name) => format!("{op}({column}) AS {name}"),
        None => format!("{op}({column})"),
    }
}