diff --git a/heromodels/src/db/postgres.rs b/heromodels/src/db/postgres.rs index 145656d..b807986 100644 --- a/heromodels/src/db/postgres.rs +++ b/heromodels/src/db/postgres.rs @@ -1,6 +1,7 @@ use std::time::Duration; use heromodels_core::Model; +use postgres::types::Json; use postgres::{Client, NoTls}; use r2d2::Pool; use r2d2_postgres::PostgresConnectionManager; @@ -178,7 +179,11 @@ where ) .map_err(Error::from)? .into_iter() - .map(|row| serde_json::from_str::(row.get("value")).map_err(Error::from)) + .map(|row| { + row.try_get::<_, Json>("value") + .map(|v| v.0) + .map_err(Error::from) + }) .collect::, _>>()?) } @@ -198,7 +203,7 @@ where .next() { Ok(Some( - serde_json::from_str::(row.get("value")).map_err(Error::from)?, + row.try_get::<_, Json>("value").map_err(Error::from)?.0, )) } else { Ok(None) @@ -216,7 +221,7 @@ where "INSERT INTO {} (value) VALUES ($1) RETURNING key, value;", Self::collection_name::() ), - &[&postgres::types::Json(value)], + &[&Json(value)], ) .map_err(Error::from)? .into_iter() @@ -229,7 +234,7 @@ where // Get the generated ID let id = row.get::<_, i64>("key") as u32; - let mut value = row.get::<_, postgres::types::Json>("value").0; + let mut value = row.get::<_, Json>("value").0; // .map_err(Error::from)?; value.base_data_mut().id = id; @@ -240,10 +245,7 @@ where "UPDATE {} SET value = $1 WHERE key = $2;", Self::collection_name::() ), - &[ - &postgres::types::Json(value.clone()), - &(value.get_id() as i64), - ], + &[&Json(value.clone()), &(value.get_id() as i64)], ) .map_err(Error::from)?; @@ -259,10 +261,7 @@ where "UPDATE {} SET value = $1 WHERE key = $2;", Self::collection_name::(), ), - &[ - &postgres::types::Json(value.clone()), - &(value.get_id() as i64), - ], + &[&Json(value.clone()), &(value.get_id() as i64)], ) .map_err(Error::from)?; @@ -319,7 +318,11 @@ where ) .map_err(Error::from)? .into_iter() - .map(|row| serde_json::from_str::(row.get("value")).map_err(Error::from)) + .map(|row| { + row.try_get::<_, Json>("value") + .map_err(Error::from) + .map(|v| v.0) + }) .collect::, _>>()?) }