11次发布
0.1.10 | 2024年7月9日 |
---|---|
0.1.9 | 2024年6月20日 |
0.1.2 | 2024年5月31日 |
1447 在 数据库接口 中
每月23次下载
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);
这将合并a
和b
的所有模板变量,形成一个单独的argsception
查询!
注意
此宏依赖于来自sqlx_conditional_queries
的其他宏。
依赖项
您需要启用macro_metavar_expr
功能才能使用此库
#![feature(macro_metavar_expr)]
您还需要将以下依赖项添加到Cargo.toml
:sqlx_conditional_queries
、paste
。您可以通过以下方式轻松完成此操作:
cargo add sqlx_conditional_queries
cargo add paste