diff --git a/rio-rs/src/state/local.rs b/rio-rs/src/state/local.rs index 36502e8..0fbbc4e 100644 --- a/rio-rs/src/state/local.rs +++ b/rio-rs/src/state/local.rs @@ -35,7 +35,7 @@ impl StateLoader for LocalState { let k = (object_kind, object_id, state_type); if let Some(x) = self.data.get(&k) { - Ok(serde_json::from_str(&x).expect("TODO")) + Ok(serde_json::from_str(&x).map_err(|_| LoadStateError::DeserializationError)?) } else { Err(LoadStateError::ObjectNotFound) } @@ -55,8 +55,9 @@ impl StateSaver for LocalState { let object_id = object_id.to_string(); let state_type = state_type.to_string(); let k = (object_kind, object_id, state_type); - self.data - .insert(k, serde_json::to_string(&data).expect("TODO")); + let serialized = + serde_json::to_string(&data).map_err(|_| LoadStateError::SerializationError)?; + self.data.insert(k, serialized); Ok(()) } } diff --git a/rio-rs/src/state/postgres.rs b/rio-rs/src/state/postgres.rs index c1c0418..1396835 100644 --- a/rio-rs/src/state/postgres.rs +++ b/rio-rs/src/state/postgres.rs @@ -68,14 +68,13 @@ impl StateLoader for PostgresState { .bind(object_kind) .bind(object_id) .bind(state_type) - .map(|x: PgRow| -> String { - let tmp = x.get::, _>("serialized_state"); - String::from_utf8(tmp).expect("TODO") - }) + .map(|x: PgRow| -> Vec { x.get::, _>("serialized_state") }) .fetch_one(&self.pool) .map_err(|_| LoadStateError::ObjectNotFound) .await?; - let data = serde_json::from_str(&items).expect("TODO"); + let items = String::from_utf8(items).map_err(|_| LoadStateError::DeserializationError)?; + let data = + serde_json::from_str(&items).map_err(|_| LoadStateError::DeserializationError)?; Ok(data) } } @@ -93,7 +92,8 @@ impl StateSaver for PostgresState { state_type: &str, data: &T, ) -> Result<(), LoadStateError> { - let serialized_data = serde_json::to_string(&data).expect("TODO"); + let serialized_data = + serde_json::to_string(&data).map_err(|_| LoadStateError::SerializationError)?; sqlx::query( r#" INSERT INTO diff --git a/rio-rs/src/state/sqlite.rs b/rio-rs/src/state/sqlite.rs index 6e9184c..b0e9935 100644 --- a/rio-rs/src/state/sqlite.rs +++ b/rio-rs/src/state/sqlite.rs @@ -68,14 +68,13 @@ impl StateLoader for SqliteState { .bind(object_kind) .bind(object_id) .bind(state_type) - .map(|x: SqliteRow| -> String { - let tmp = x.get::, _>("serialized_state"); - String::from_utf8(tmp).expect("TODO") - }) + .map(|x: SqliteRow| -> Vec { x.get::, _>("serialized_state") }) .fetch_one(&self.pool) .map_err(|_| LoadStateError::ObjectNotFound) .await?; - let data = serde_json::from_str(&items).expect("TODO"); + let items = String::from_utf8(items).map_err(|_| LoadStateError::DeserializationError)?; + let data = + serde_json::from_str(&items).map_err(|_| LoadStateError::DeserializationError)?; Ok(data) } } @@ -93,7 +92,8 @@ impl StateSaver for SqliteState { state_type: &str, data: &T, ) -> Result<(), LoadStateError> { - let serialized_data = serde_json::to_string(&data).expect("TODO"); + let serialized_data = + serde_json::to_string(&data).map_err(|_| LoadStateError::SerializationError)?; sqlx::query( r#" INSERT INTO