Skip to content

Commit 04da2f6

Browse files
authored
Remove macro use from expanded code (#12)
1 parent c8a30c6 commit 04da2f6

File tree

4 files changed

+34
-118
lines changed

4 files changed

+34
-118
lines changed

src/lib.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ pub fn store(args: TokenStream, item: TokenStream) -> TokenStream {
8888
let name = format!("{ident}");
8989
load_checks.push(quote! {
9090
if #ident.is_empty() {
91-
anyhow::bail!(#name.to_string() + "must be specified");
91+
return Err(anyhow::Error::msg(#name.to_string() + "must be specified"));
9292
}
9393
});
9494
load_where.push(format!("{ident} = ANY(${bind})"));
@@ -136,6 +136,8 @@ pub fn store(args: TokenStream, item: TokenStream) -> TokenStream {
136136
let load_params = tokens(load_params);
137137
let load_fields = tokens(load_fields);
138138
let delete_fields = tokens(delete_fields);
139+
let load_sql = format!("SELECT * FROM {table_name} WHERE {load_where}");
140+
let delete_sql = format!("DELETE FROM {table_name} WHERE {load_where} RETURNING *");
139141

140142
// decompress
141143
let mut decompress_fields = Vec::new();
@@ -258,6 +260,7 @@ pub fn store(args: TokenStream, item: TokenStream) -> TokenStream {
258260
} else {
259261
quote! {}
260262
};
263+
let store_sql = format!("COPY {table_name} ({store_fields}) FROM STDIN BINARY");
261264

262265
quote! {
263266
#item
@@ -274,7 +277,7 @@ pub fn store(args: TokenStream, item: TokenStream) -> TokenStream {
274277
/// rows outside the requested time range.
275278
pub async fn load(db: &deadpool_postgres::Object, #load_filters) -> anyhow::Result<Vec<#packed_name>> {
276279
#load_checks
277-
let sql = format!("SELECT * FROM {} WHERE {}", #table_name, #load_where);
280+
let sql = #load_sql;
278281
let mut results = Vec::new();
279282
for row in db.query(&db.prepare_cached(&sql).await?, &[#load_params]).await? {
280283
results.push(#packed_name { #load_fields });
@@ -288,7 +291,7 @@ pub fn store(args: TokenStream, item: TokenStream) -> TokenStream {
288291
/// rows outside the requested time range.
289292
pub async fn delete(db: &deadpool_postgres::Object, #load_filters) -> anyhow::Result<Vec<#packed_name>> {
290293
#load_checks
291-
let sql = format!("DELETE FROM {} WHERE {} RETURNING *", #table_name, #load_where);
294+
let sql = #delete_sql;
292295
let mut results = Vec::new();
293296
for row in db.query(&db.prepare_cached(&sql).await?, &[#load_params]).await? {
294297
results.push(#packed_name { #delete_fields });
@@ -319,7 +322,7 @@ pub fn store(args: TokenStream, item: TokenStream) -> TokenStream {
319322
for row in rows {
320323
grouped_rows.entry((#store_group)).or_default().push(row);
321324
}
322-
let sql = format!("COPY {} ({}) FROM STDIN BINARY", #table_name, #store_fields);
325+
let sql = #store_sql;
323326
let types = &[#store_types];
324327
let stmt = db.copy_in(&db.prepare_cached(&sql).await?).await?;
325328
let writer = tokio_postgres::binary_copy::BinaryCopyInWriter::new(stmt, types);

tests/expand/boolean.expanded.rs

Lines changed: 9 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,11 @@ impl CompressedQueryStats {
1919
database_id: &[i64],
2020
) -> anyhow::Result<Vec<CompressedQueryStats>> {
2121
if database_id.is_empty() {
22-
return ::anyhow::__private::Err({
23-
use ::anyhow::__private::kind::*;
24-
let error = match "database_id".to_string() + "must be specified" {
25-
error => (&error).anyhow_kind().new(error),
26-
};
27-
error
28-
});
22+
return Err(
23+
anyhow::Error::msg("database_id".to_string() + "must be specified"),
24+
);
2925
}
30-
let sql = ::alloc::__export::must_use({
31-
::alloc::fmt::format(
32-
format_args!(
33-
"SELECT * FROM {0} WHERE {1}", "query_stats",
34-
"database_id = ANY($1)",
35-
),
36-
)
37-
});
26+
let sql = "SELECT * FROM query_stats WHERE database_id = ANY($1)";
3827
let mut results = Vec::new();
3928
for row in db.query(&db.prepare_cached(&sql).await?, &[&database_id]).await? {
4029
results
@@ -55,22 +44,11 @@ impl CompressedQueryStats {
5544
database_id: &[i64],
5645
) -> anyhow::Result<Vec<CompressedQueryStats>> {
5746
if database_id.is_empty() {
58-
return ::anyhow::__private::Err({
59-
use ::anyhow::__private::kind::*;
60-
let error = match "database_id".to_string() + "must be specified" {
61-
error => (&error).anyhow_kind().new(error),
62-
};
63-
error
64-
});
47+
return Err(
48+
anyhow::Error::msg("database_id".to_string() + "must be specified"),
49+
);
6550
}
66-
let sql = ::alloc::__export::must_use({
67-
::alloc::fmt::format(
68-
format_args!(
69-
"DELETE FROM {0} WHERE {1} RETURNING *", "query_stats",
70-
"database_id = ANY($1)",
71-
),
72-
)
73-
});
51+
let sql = "DELETE FROM query_stats WHERE database_id = ANY($1) RETURNING *";
7452
let mut results = Vec::new();
7553
for row in db.query(&db.prepare_cached(&sql).await?, &[&database_id]).await? {
7654
results
@@ -120,14 +98,7 @@ impl CompressedQueryStats {
12098
for row in rows {
12199
grouped_rows.entry((row.database_id,)).or_default().push(row);
122100
}
123-
let sql = ::alloc::__export::must_use({
124-
::alloc::fmt::format(
125-
format_args!(
126-
"COPY {0} ({1}) FROM STDIN BINARY", "query_stats",
127-
"database_id, toplevel, calls",
128-
),
129-
)
130-
});
101+
let sql = "COPY query_stats (database_id, toplevel, calls) FROM STDIN BINARY";
131102
let types = &[
132103
tokio_postgres::types::Type::INT8,
133104
tokio_postgres::types::Type::BYTEA,

tests/expand/float_round.expanded.rs

Lines changed: 9 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,11 @@ impl CompressedQueryStats {
1919
database_id: &[i64],
2020
) -> anyhow::Result<Vec<CompressedQueryStats>> {
2121
if database_id.is_empty() {
22-
return ::anyhow::__private::Err({
23-
use ::anyhow::__private::kind::*;
24-
let error = match "database_id".to_string() + "must be specified" {
25-
error => (&error).anyhow_kind().new(error),
26-
};
27-
error
28-
});
22+
return Err(
23+
anyhow::Error::msg("database_id".to_string() + "must be specified"),
24+
);
2925
}
30-
let sql = ::alloc::__export::must_use({
31-
::alloc::fmt::format(
32-
format_args!(
33-
"SELECT * FROM {0} WHERE {1}", "query_stats",
34-
"database_id = ANY($1)",
35-
),
36-
)
37-
});
26+
let sql = "SELECT * FROM query_stats WHERE database_id = ANY($1)";
3827
let mut results = Vec::new();
3928
for row in db.query(&db.prepare_cached(&sql).await?, &[&database_id]).await? {
4029
results
@@ -55,22 +44,11 @@ impl CompressedQueryStats {
5544
database_id: &[i64],
5645
) -> anyhow::Result<Vec<CompressedQueryStats>> {
5746
if database_id.is_empty() {
58-
return ::anyhow::__private::Err({
59-
use ::anyhow::__private::kind::*;
60-
let error = match "database_id".to_string() + "must be specified" {
61-
error => (&error).anyhow_kind().new(error),
62-
};
63-
error
64-
});
47+
return Err(
48+
anyhow::Error::msg("database_id".to_string() + "must be specified"),
49+
);
6550
}
66-
let sql = ::alloc::__export::must_use({
67-
::alloc::fmt::format(
68-
format_args!(
69-
"DELETE FROM {0} WHERE {1} RETURNING *", "query_stats",
70-
"database_id = ANY($1)",
71-
),
72-
)
73-
});
51+
let sql = "DELETE FROM query_stats WHERE database_id = ANY($1) RETURNING *";
7452
let mut results = Vec::new();
7553
for row in db.query(&db.prepare_cached(&sql).await?, &[&database_id]).await? {
7654
results
@@ -121,14 +99,7 @@ impl CompressedQueryStats {
12199
for row in rows {
122100
grouped_rows.entry((row.database_id,)).or_default().push(row);
123101
}
124-
let sql = ::alloc::__export::must_use({
125-
::alloc::fmt::format(
126-
format_args!(
127-
"COPY {0} ({1}) FROM STDIN BINARY", "query_stats",
128-
"database_id, calls, total_time",
129-
),
130-
)
131-
});
102+
let sql = "COPY query_stats (database_id, calls, total_time) FROM STDIN BINARY";
132103
let types = &[
133104
tokio_postgres::types::Type::INT8,
134105
tokio_postgres::types::Type::BYTEA,

tests/expand/query_stats.expanded.rs

Lines changed: 9 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -42,22 +42,11 @@ impl CompressedQueryStats {
4242
filter_end: SystemTime,
4343
) -> anyhow::Result<Vec<CompressedQueryStats>> {
4444
if database_id.is_empty() {
45-
return ::anyhow::__private::Err({
46-
use ::anyhow::__private::kind::*;
47-
let error = match "database_id".to_string() + "must be specified" {
48-
error => (&error).anyhow_kind().new(error),
49-
};
50-
error
51-
});
45+
return Err(
46+
anyhow::Error::msg("database_id".to_string() + "must be specified"),
47+
);
5248
}
53-
let sql = ::alloc::__export::must_use({
54-
::alloc::fmt::format(
55-
format_args!(
56-
"SELECT * FROM {0} WHERE {1}", "query_stats",
57-
"database_id = ANY($1) AND end_at >= $2 AND start_at <= $3",
58-
),
59-
)
60-
});
49+
let sql = "SELECT * FROM query_stats WHERE database_id = ANY($1) AND end_at >= $2 AND start_at <= $3";
6150
let mut results = Vec::new();
6251
for row in db
6352
.query(
@@ -99,22 +88,11 @@ impl CompressedQueryStats {
9988
filter_end: SystemTime,
10089
) -> anyhow::Result<Vec<CompressedQueryStats>> {
10190
if database_id.is_empty() {
102-
return ::anyhow::__private::Err({
103-
use ::anyhow::__private::kind::*;
104-
let error = match "database_id".to_string() + "must be specified" {
105-
error => (&error).anyhow_kind().new(error),
106-
};
107-
error
108-
});
91+
return Err(
92+
anyhow::Error::msg("database_id".to_string() + "must be specified"),
93+
);
10994
}
110-
let sql = ::alloc::__export::must_use({
111-
::alloc::fmt::format(
112-
format_args!(
113-
"DELETE FROM {0} WHERE {1} RETURNING *", "query_stats",
114-
"database_id = ANY($1) AND end_at >= $2 AND start_at <= $3",
115-
),
116-
)
117-
});
95+
let sql = "DELETE FROM query_stats WHERE database_id = ANY($1) AND end_at >= $2 AND start_at <= $3 RETURNING *";
11896
let mut results = Vec::new();
11997
for row in db
12098
.query(
@@ -255,14 +233,7 @@ impl CompressedQueryStats {
255233
for row in rows {
256234
grouped_rows.entry((row.database_id,)).or_default().push(row);
257235
}
258-
let sql = ::alloc::__export::must_use({
259-
::alloc::fmt::format(
260-
format_args!(
261-
"COPY {0} ({1}) FROM STDIN BINARY", "query_stats",
262-
"database_id, start_at, end_at, collected_at, collected_secs, fingerprint, postgres_role_id, calls, rows, total_time, io_time, shared_blks_hit, shared_blks_read",
263-
),
264-
)
265-
});
236+
let sql = "COPY query_stats (database_id, start_at, end_at, collected_at, collected_secs, fingerprint, postgres_role_id, calls, rows, total_time, io_time, shared_blks_hit, shared_blks_read) FROM STDIN BINARY";
266237
let types = &[
267238
tokio_postgres::types::Type::INT8,
268239
tokio_postgres::types::Type::TIMESTAMPTZ,

0 commit comments

Comments
 (0)