From 0aa2545b703f5240a8208a07da8ab20b8bc6d1aa Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Sat, 28 Dec 2024 19:27:46 +0100 Subject: Improve error handling (404) and remove projectid from review api call Also move reviews to under project to make it obvious that projectid is just that. --- server/src/main.rs | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) (limited to 'server/src') diff --git a/server/src/main.rs b/server/src/main.rs index 413545b..f4fec18 100644 --- a/server/src/main.rs +++ b/server/src/main.rs @@ -119,7 +119,7 @@ async fn project<'r>( mut db: Connection, _user: User, projectid: u64, -) -> Result, NotFound> { +) -> Result, NotFound<&'static str>> { let members = sqlx::query!( "SELECT id, username, name, active FROM users JOIN project_users ON project_users.user=users.id WHERE project_users.project=?", projectid) @@ -145,14 +145,13 @@ async fn project<'r>( description: r.description, members: members, }) - .await - .map_err(|e| NotFound(e.to_string())) - .unwrap(); + .map_err(|_| NotFound("No such project")) + .await?; Ok(Json(project)) } -#[get("/reviews/?&")] +#[get("/project//reviews?&")] async fn reviews<'r>( mut db: Connection, _user: User, @@ -202,13 +201,12 @@ async fn reviews<'r>( }) } -#[get("/review//")] +#[get("/review/")] async fn review<'r>( mut db: Connection, _user: User, - projectid: u64, reviewid: u64, -) -> Result, NotFound> { +) -> Result, NotFound<&'static str>> { let mut users = sqlx::query!( "SELECT id,username,name,active,review_users.role AS role FROM users JOIN review_users ON review_users.user=id WHERE review_users.review=? ORDER BY role,username,id", reviewid) @@ -240,8 +238,8 @@ async fn review<'r>( } let review = sqlx::query!( - "SELECT reviews.id AS id,title,description,state,progress,users.id AS user_id,users.username AS username,users.name AS name,users.active AS user_active FROM reviews JOIN users ON users.id=owner WHERE project=? AND reviews.id=?", - projectid, reviewid) + "SELECT reviews.id AS id,title,description,state,progress,users.id AS user_id,users.username AS username,users.name AS name,users.active AS user_active FROM reviews JOIN users ON users.id=owner WHERE reviews.id=?", + reviewid) .fetch_one(&mut **db) .map_ok(|r| api_model::Review { id: r.id, @@ -258,9 +256,8 @@ async fn review<'r>( state: api_model::ReviewState::try_from(r.state).unwrap(), progress: r.progress, }) - .await - .map_err(|e| NotFound(e.to_string())) - .unwrap(); + .map_err(|_| NotFound("No such review")) + .await?; Ok(Json(review)) } -- cgit v1.2.3-70-g09d2