From cefd377020f28d904ea78f8967acbd5d95d2a567 Mon Sep 17 00:00:00 2001 From: timmythetiny Date: Sat, 8 Feb 2020 15:24:20 -0800 Subject: [PATCH] Fix #105, allow trailing commas in query macros --- src/macros.rs | 28 ++++++++++++++++++++++++++++ tests/postgres-macros.rs | 4 ++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/macros.rs b/src/macros.rs index 35f911fd..b99dde0d 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -100,6 +100,13 @@ macro_rules! query ( $crate::sqlx_macros::query!($query, $($args),*); } macro_result!($($args),*) + }); + ($query:literal, $($args:expr),*,) => ({ + #[macro_use] + mod _macro_result { + $crate::sqlx_macros::query!($query, $($args),*); + } + macro_result!($($args),*) }) ); @@ -161,6 +168,13 @@ macro_rules! query_file ( $crate::sqlx_macros::query_file!($query, $($args),*); } macro_result!($($args),*) + }); + ($query:literal, $($args:expr),*,) => (#[allow(dead_code)]{ + #[macro_use] + mod _macro_result { + $crate::sqlx_macros::query_file!($query, $($args),*); + } + macro_result!($($args),*) }) ); @@ -227,6 +241,13 @@ macro_rules! query_as ( $crate::sqlx_macros::query_as!($out_struct, $query, $($args),*); } macro_result!($($args),*) + }); + ($out_struct:path, $query:literal, $($args:expr),*,) => (#[allow(dead_code)] { + #[macro_use] + mod _macro_result { + $crate::sqlx_macros::query_as!($out_struct, $query, $($args),*); + } + macro_result!($($args),*) }) ); @@ -278,5 +299,12 @@ macro_rules! query_file_as ( $crate::sqlx_macros::query_file_as!($out_struct, $query, $($args),*); } macro_result!($($args),*) + }); + ($out_struct:path, $query:literal, $($args:expr),*,) => (#[allow(dead_code)] { + #[macro_use] + mod _macro_result { + $crate::sqlx_macros::query_file_as!($out_struct, $query, $($args),*); + } + macro_result!($($args),*) }) ); diff --git a/tests/postgres-macros.rs b/tests/postgres-macros.rs index 82378a5a..fa5d6e5f 100644 --- a/tests/postgres-macros.rs +++ b/tests/postgres-macros.rs @@ -7,7 +7,7 @@ async fn test_query() -> anyhow::Result<()> { let account = sqlx::query!( "SELECT * from (VALUES (1, 'Herp Derpinson')) accounts(id, name) where id = $1", - 1i32 + 1i32, ) .fetch_one(&mut conn) .await?; @@ -56,7 +56,7 @@ async fn test_query_as() -> anyhow::Result<()> { let account = sqlx::query_as!( Account, - "SELECT * from (VALUES (1, null)) accounts(id, name)" + "SELECT * from (VALUES (1, null)) accounts(id, name)", ) .fetch_one(&mut conn) .await?;