diff --git a/src/main.rs b/src/main.rs index 94ef4eb..1c93f9f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,17 +1,34 @@ use sqlx::SqlitePool; use std::env; -#[rocket::get("/txt?")] -async fn index(page: &str, pool: &rocket::State) -> String { - let records: Vec<_> = sqlx::query!( +struct Comment { + id: i64, + name: Option, + content: String, +} + +async fn get_comments(pool: &SqlitePool, page: &str) -> Result, sqlx::Error> { + let results = sqlx::query!( "SELECT id, name, content FROM comments WHERE page = ?", page ) - .fetch_all(pool.inner()) - .await - .expect("what the fuck"); + .fetch_all(pool) + .await? + .into_iter() + .map(|result| Comment { + id: result.id, + name: result.name, + content: result.content, + }) + .collect(); + return Ok(results); +} - records +#[rocket::get("/txt?")] +async fn index(page: &str, pool: &rocket::State) -> Result { + Ok(get_comments(pool, page) + .await + .map_err(|_| "error fetching comments for this page, sorry")? .into_iter() .map(|rec| { format!( @@ -21,7 +38,7 @@ async fn index(page: &str, pool: &rocket::State) -> String { rec.content, ) }) - .collect() + .collect::()) } #[rocket::get("/add?&&")] @@ -30,7 +47,7 @@ async fn add( name: Option<&str>, content: &str, pool: &rocket::State, -) -> () { +) -> Result<(), String> { sqlx::query!( "INSERT INTO comments (page, name, content) VALUES (?, ?, ?)", page, @@ -39,9 +56,9 @@ async fn add( ) .execute(pool.inner()) .await - .expect("ajkl;shfklshadflgksdfg"); + .map_err(|_| "ajkl;shfklshadflgksdfg")?; - () + Ok(()) } #[rocket::launch]