diff --git a/backend-rust/step1-json-api/src/model.rs b/backend-rust/step1-json-api/src/model.rs index 29a5747..e7f1250 100644 --- a/backend-rust/step1-json-api/src/model.rs +++ b/backend-rust/step1-json-api/src/model.rs @@ -11,12 +11,17 @@ pub fn add_post(message: String, username: String) -> AppResult<()> { } pub fn get_all_posts(offset: u32, count: u32) -> AppResult { - log::info!("get all posts"); + log::info!("get all posts {} {}", offset, count); Ok("[]".to_string()) } pub fn get_posts_by_username(username: String, offset: u32, count: u32) -> AppResult { - log::info!("get all posts by username {}", username); + log::info!( + "get all posts by username {} {} {}", + username, + offset, + count + ); Ok("[]".to_string()) } diff --git a/backend-rust/step2-database-only/src/database.rs b/backend-rust/step2-database-only/src/database.rs index 30a22f1..c370f9f 100644 --- a/backend-rust/step2-database-only/src/database.rs +++ b/backend-rust/step2-database-only/src/database.rs @@ -4,12 +4,21 @@ use crate::sqlite; pub fn query(query: &str) -> AppResult { let response = sqlite::call(query.as_bytes()); - // Add more details to error message - String::from_utf8(response).map_err(|e| { + // Decode query result to a utf8 string + let result_str = std::str::from_utf8(&response); + + // Log if there's an error + if result_str.is_err() { log::error!("unable to decode result from bytes: {:#x?}", response); - err_msg(&format!( - "unable to decode result from bytes {:#x?}: {}", - query, e - )) - }) + } + + // Wrap error with a better message, and return Result + result_str + .map_err(|e| { + err_msg(&format!( + "unable to decode result from bytes {:#x?}: {}", + response, e + )) + }) + .map(|s| s.to_string()) } diff --git a/backend-rust/step3-finished-app/src/database.rs b/backend-rust/step3-finished-app/src/database.rs index 30a22f1..c370f9f 100644 --- a/backend-rust/step3-finished-app/src/database.rs +++ b/backend-rust/step3-finished-app/src/database.rs @@ -4,12 +4,21 @@ use crate::sqlite; pub fn query(query: &str) -> AppResult { let response = sqlite::call(query.as_bytes()); - // Add more details to error message - String::from_utf8(response).map_err(|e| { + // Decode query result to a utf8 string + let result_str = std::str::from_utf8(&response); + + // Log if there's an error + if result_str.is_err() { log::error!("unable to decode result from bytes: {:#x?}", response); - err_msg(&format!( - "unable to decode result from bytes {:#x?}: {}", - query, e - )) - }) + } + + // Wrap error with a better message, and return Result + result_str + .map_err(|e| { + err_msg(&format!( + "unable to decode result from bytes {:#x?}: {}", + response, e + )) + }) + .map(|s| s.to_string()) }