summaryrefslogtreecommitdiff
path: root/server/src
diff options
context:
space:
mode:
authorJoel Klinghed <the_jk@spawned.biz>2024-12-28 19:27:46 +0100
committerJoel Klinghed <the_jk@spawned.biz>2024-12-28 19:39:19 +0100
commit0aa2545b703f5240a8208a07da8ab20b8bc6d1aa (patch)
tree80f71f290bd7e5c13dd3a3bacda63901a3af4d13 /server/src
parentc9c8e02fed14bb812f00c8a87f7f54129ff0bf84 (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.rs23
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))
}