#sql-query #sqlx #conditional #macro #sqlx-conditional-queries #templating #layering

sqlx-conditional-queries-layering

sqlx-conditional-queries的查询模板

11次发布

0.1.10 2024年7月9日
0.1.9 2024年6月20日
0.1.2 2024年5月31日

1447数据库接口

每月23次下载

MIT 许可证

7KB
82

sqlx_conditional_queries_layering

此库提供了一个宏,用于与sqlx_conditional_queries库结合处理查询模板。它简化了具有条件参数的SQL查询的创建。

基本示例

let keehee = [Keehee::OwO, Keehee::UmU, Keehee::UwU]
    .choose(&mut rand::thread_rng())
    .cloned()
    .unwrap_or_default();

create_conditional_query_as!(
    $keehee_query,
    #keehee = match keehee {
        Keehee::OwO => "owo",
        Keehee::UmU => "umu",
        Keehee::UwU => "uwu"
    }
);

这将生成一个keehee_query宏。

使用生成的查询

keehee_query是一个模板。您可以使用它来执行sqlx查询

keehee_query!(BigID, "DO YOUR QUERY", #hey=match {...})
    .fetch_one(&pool)
    .await;

我们可以使用宏supply_sql_variables_to_query_as进一步扩展模板,添加额外的变量。

supply_sql_variables_to_query_as!(
    $keehee_query as some_query,
    #name = match Fall::Through {
        _ => "{keehee_name}",
    }
);

在这个例子中,我们创建了一个some_query,这是一个具有与keehee_query相同的模板变量的另一个宏,并添加了#name

但这还没有结束!

我们可以通过以下方式将两个查询合并为一个:

merge_sql_query_as!($(a, b) as argsception);

这将合并ab的所有模板变量,形成一个单独的argsception查询!

注意

此宏依赖于来自sqlx_conditional_queries的其他宏。

依赖项

您需要启用macro_metavar_expr功能才能使用此库

#![feature(macro_metavar_expr)]

您还需要将以下依赖项添加到Cargo.tomlsqlx_conditional_queriespaste。您可以通过以下方式轻松完成此操作:

cargo add sqlx_conditional_queries
cargo add paste

另请参阅

无运行时依赖项