diff options
| author | Joel Klinghed <the_jk@spawned.biz> | 2024-12-28 19:27:46 +0100 |
|---|---|---|
| committer | Joel Klinghed <the_jk@spawned.biz> | 2024-12-28 19:39:19 +0100 |
| commit | 0aa2545b703f5240a8208a07da8ab20b8bc6d1aa (patch) | |
| tree | 80f71f290bd7e5c13dd3a3bacda63901a3af4d13 /server/src | |
| parent | c9c8e02fed14bb812f00c8a87f7f54129ff0bf84 (diff) | |
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.
Diffstat (limited to 'server/src')
| -rw-r--r-- | server/src/main.rs | 23 |
1 files changed, 10 insertions, 13 deletions
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<Db>, _user: User, projectid: u64, -) -> Result<Json<api_model::Project>, NotFound<String>> { +) -> Result<Json<api_model::Project>, 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/<projectid>?<limit>&<offset>")] +#[get("/project/<projectid>/reviews?<limit>&<offset>")] async fn reviews<'r>( mut db: Connection<Db>, _user: User, @@ -202,13 +201,12 @@ async fn reviews<'r>( }) } -#[get("/review/<projectid>/<reviewid>")] +#[get("/review/<reviewid>")] async fn review<'r>( mut db: Connection<Db>, _user: User, - projectid: u64, reviewid: u64, -) -> Result<Json<api_model::Review>, NotFound<String>> { +) -> Result<Json<api_model::Review>, 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)) } |
