sql-forge 0.5.0

Proc-macro combining compile-time SQL validation with a runtime QueryBuilder for dynamic queries using named parameters.
Documentation
use sql_forge::sql_forge;

fn main() {
    let include_org = false;
    let can_read_org_name = true;

    #[derive(sqlx::FromRow)]
    struct Row {
        field_1: i64,
        field_2: String,
    }

    let _ = sql_forge!(
        Row,
        r#"
        SELECT t1.id AS field_1, {#field_2}
        FROM users t1
        {#join_org}
        WHERE 1 = 1
        "#,
        (
            #join_org = match include_org {
                false => "",
                true => " JOIN organisations o ON o.id = t1.id ",
            },
            #field_2 = match include_org && can_read_org_name {
                true => "o.name AS field_2",
                false => "t1.name AS field_2",
            },
        ),
    );
}