feat: introduce IntoArguments, query_with, query_as_with, and query_scalar_with

This commit is contained in:
Ryan Leckey
2020-05-27 19:53:23 -07:00
parent 88532ffc28
commit 9d2a0141cb
21 changed files with 345 additions and 106 deletions

View File

@@ -18,7 +18,7 @@ pub fn quote_args<DB: DatabaseExt>(
if input.arg_names.is_empty() {
return Ok(quote! {
let query_args = <#db_path as sqlx::Database>::Arguments::default();
let query_args = <#db_path as sqlx::database::HasArguments>::Arguments::default();
});
}
@@ -88,7 +88,7 @@ pub fn quote_args<DB: DatabaseExt>(
// bind as a local expression, by-ref
#(let #arg_name = &$#arg_name;)*
let mut query_args = <#db_path as sqlx::Database>::Arguments::default();
let mut query_args = <#db_path as sqlx::database::HasArguments>::Arguments::default();
query_args.reserve(
#args_count,
0 #(+ sqlx::encode::Encode::<#db_path>::size_hint(#arg_name))*

View File

@@ -119,7 +119,7 @@ pub fn quote_query_as<DB: DatabaseExt>(
let sql = &input.src;
quote! {
sqlx::query::<#db_path>(#sql).bind_all(#bind_args).try_map(|row: #row_path| {
sqlx::query_with::<#db_path>(#sql, #bind_args).try_map(|row: #row_path| {
use sqlx::Row as _;
use sqlx::result_ext::ResultExt as _;