From 9c7a42f83e614091e0c4b2c48c64c8d7e9d4cffc Mon Sep 17 00:00:00 2001 From: dboures Date: Mon, 29 May 2023 23:35:06 -0500 Subject: [PATCH] refactor: don't use prepared statements --- src/database/fetch.rs | 90 +++++++++++++------------------------------ 1 file changed, 27 insertions(+), 63 deletions(-) diff --git a/src/database/fetch.rs b/src/database/fetch.rs index 0abd820..11b2470 100644 --- a/src/database/fetch.rs +++ b/src/database/fetch.rs @@ -14,9 +14,7 @@ pub async fn fetch_earliest_fill( ) -> anyhow::Result> { let client = pool.get().await?; - let stmt = client - .prepare( - r#"SELECT + let stmt = r#"SELECT time as "time!", bid as "bid!", maker as "maker!", @@ -26,11 +24,9 @@ pub async fn fetch_earliest_fill( from fills where market = $1 and maker = true - ORDER BY time asc LIMIT 1"#, - ) - .await?; + ORDER BY time asc LIMIT 1"#; - let row = client.query_opt(&stmt, &[&market_address_string]).await?; + let row = client.query_opt(stmt, &[&market_address_string]).await?; match row { Some(r) => Ok(Some(PgOpenBookFill::from_row(r))), @@ -46,9 +42,7 @@ pub async fn fetch_fills_from( ) -> anyhow::Result> { let client = pool.get().await?; - let stmt = client - .prepare( - r#"SELECT + let stmt = r#"SELECT time as "time!", bid as "bid!", maker as "maker!", @@ -60,12 +54,10 @@ pub async fn fetch_fills_from( and time >= $2::timestamptz and time < $3::timestamptz and maker = true - ORDER BY time asc"#, - ) - .await?; + ORDER BY time asc"#; let rows = client - .query(&stmt, &[&market_address_string, &start_time, &end_time]) + .query(stmt, &[&market_address_string, &start_time, &end_time]) .await?; Ok(rows .into_iter() @@ -80,9 +72,7 @@ pub async fn fetch_latest_finished_candle( ) -> anyhow::Result> { let client = pool.get().await?; - let stmt = client - .prepare( - r#"SELECT + let stmt = r#"SELECT market_name as "market_name!", start_time as "start_time!", end_time as "end_time!", @@ -97,12 +87,10 @@ pub async fn fetch_latest_finished_candle( where market_name = $1 and resolution = $2 and complete = true - ORDER BY start_time desc LIMIT 1"#, - ) - .await?; + ORDER BY start_time desc LIMIT 1"#; let row = client - .query_opt(&stmt, &[&market_name, &resolution.to_string()]) + .query_opt(stmt, &[&market_name, &resolution.to_string()]) .await?; match row { @@ -120,9 +108,7 @@ pub async fn fetch_earliest_candles( ) -> anyhow::Result> { let client = pool.get().await?; - let stmt = client - .prepare( - r#"SELECT + let stmt = r#"SELECT market_name as "market_name!", start_time as "start_time!", end_time as "end_time!", @@ -136,12 +122,10 @@ pub async fn fetch_earliest_candles( from candles where market_name = $1 and resolution = $2 - ORDER BY start_time asc"#, - ) - .await?; + ORDER BY start_time asc"#; let rows = client - .query(&stmt, &[&market_name, &resolution.to_string()]) + .query(stmt, &[&market_name, &resolution.to_string()]) .await?; Ok(rows.into_iter().map(Candle::from_row).collect()) @@ -156,9 +140,7 @@ pub async fn fetch_candles_from( ) -> anyhow::Result> { let client = pool.get().await?; - let stmt = client - .prepare( - r#"SELECT + let stmt = r#"SELECT market_name as "market_name!", start_time as "start_time!", end_time as "end_time!", @@ -174,13 +156,11 @@ pub async fn fetch_candles_from( and resolution = $2 and start_time >= $3 and end_time <= $4 - ORDER BY start_time asc"#, - ) - .await?; + ORDER BY start_time asc"#; let rows = client .query( - &stmt, + stmt, &[ &market_name, &resolution.to_string(), @@ -201,9 +181,7 @@ pub async fn fetch_top_traders_by_base_volume_from( ) -> anyhow::Result> { let client = pool.get().await?; - let stmt = client - .prepare( - r#"SELECT + let stmt = r#"SELECT open_orders_owner, sum( native_qty_paid * CASE bid WHEN true THEN 0 WHEN false THEN 1 END @@ -221,12 +199,10 @@ pub async fn fetch_top_traders_by_base_volume_from( + sum(native_qty_received * CASE bid WHEN true THEN 1 WHEN false THEN 0 END) DESC - LIMIT 10000"#, - ) - .await?; + LIMIT 10000"#; let rows = client - .query(&stmt, &[&market_address_string, &start_time, &end_time]) + .query(stmt, &[&market_address_string, &start_time, &end_time]) .await?; Ok(rows.into_iter().map(PgTrader::from_row).collect()) @@ -240,9 +216,7 @@ pub async fn fetch_top_traders_by_quote_volume_from( ) -> anyhow::Result> { let client = pool.get().await?; - let stmt = client - .prepare( - r#"SELECT + let stmt = r#"SELECT open_orders_owner, sum( native_qty_received * CASE bid WHEN true THEN 0 WHEN false THEN 1 END @@ -260,12 +234,10 @@ pub async fn fetch_top_traders_by_quote_volume_from( + sum(native_qty_paid * CASE bid WHEN true THEN 1 WHEN false THEN 0 END) DESC - LIMIT 10000"#, - ) - .await?; + LIMIT 10000"#; let rows = client - .query(&stmt, &[&market_address_string, &start_time, &end_time]) + .query(stmt, &[&market_address_string, &start_time, &end_time]) .await?; Ok(rows.into_iter().map(PgTrader::from_row).collect()) @@ -277,9 +249,7 @@ pub async fn fetch_coingecko_24h_volume( ) -> anyhow::Result> { let client = pool.get().await?; - let stmt = client - .prepare( - r#"SELECT + let stmt = r#"SELECT t1.market, COALESCE(t2.native_qty_received, 0) as "raw_base_size!", COALESCE(t2.native_qty_paid, 0) as "raw_quote_size!" @@ -298,11 +268,9 @@ pub async fn fetch_coingecko_24h_volume( where "time" >= current_timestamp - interval '1 day' and bid = true group by market - ) t2 ON t1.market = t2.market"#, - ) - .await?; + ) t2 ON t1.market = t2.market"#; - let rows = client.query(&stmt, &[&market_address_strings]).await?; + let rows = client.query(stmt, &[&market_address_strings]).await?; Ok(rows .into_iter() @@ -316,9 +284,7 @@ pub async fn fetch_coingecko_24h_high_low( ) -> anyhow::Result> { let client = pool.get().await?; - let stmt = client - .prepare( - r#"select + let stmt = r#"select r.market_name as "market_name!", coalesce(c.high, r.high) as "high!", coalesce(c.low, r.low) as "low!", @@ -348,11 +314,9 @@ pub async fn fetch_coingecko_24h_high_low( "resolution" = '1M' and "start_time" >= current_timestamp - interval '1 day' group by market_name - ) c on r.market_name = c.market_name"#, - ) - .await?; + ) c on r.market_name = c.market_name"#; - let rows = client.query(&stmt, &[&market_names]).await?; + let rows = client.query(stmt, &[&market_names]).await?; Ok(rows .into_iter()