From fdb9d4373d24a978edf67a8ac74359d7bbdaca2c Mon Sep 17 00:00:00 2001 From: George MacKerron Date: Fri, 5 May 2023 10:53:32 +0100 Subject: [PATCH] More work on mapping params --- proxy/src/http/websocket.rs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/proxy/src/http/websocket.rs b/proxy/src/http/websocket.rs index 6ebcf1688b..15aa853541 100644 --- a/proxy/src/http/websocket.rs +++ b/proxy/src/http/websocket.rs @@ -323,16 +323,17 @@ async fn handle_sql( } }); - // let sql = percent_decode(sql.as_bytes()).decode_utf8()?.to_string(); + let query = &queryData.query; + let params = queryData.params.iter().map(|value| match value { + Value::Null => None as &(dyn ToSql + Sync), + Value::Bool(b) => b as &(dyn ToSql + Sync), + Value::Number(n) => &n.as_f64() as &(dyn ToSql + Sync), + Value::String(s) => s as &(dyn ToSql + Sync), + _ => panic!("wrong parameter type") + }).collect::>().as_ref(); let rows: Vec> = client - .query(&queryData.query, queryData.params.iter().map(|x| match x { - Value::Null => None, - Value::Bool(boolean) => boolean, - Value::Number(number) => number, - Value::String(string) => string, - _ => return Err(anyhow::anyhow!("unsupported param type")) - }).collect()) + .query(query, params) .await? .into_iter() .filter_map(|el| {