diff --git a/src/routes/book_instance.rs b/src/routes/book_instance.rs index 91ea012..71ce46a 100644 --- a/src/routes/book_instance.rs +++ b/src/routes/book_instance.rs @@ -390,9 +390,9 @@ pub struct BookInstanceSearchParams { } #[derive(Serialize, utoipa::ToSchema)] -pub struct BookInstanceSearchResults { - book_instances: Vec, - books: HashMap, +pub struct BookInstanceWithBook { + book_instance: book_instance::Model, + book: book::Model } #[axum::debug_handler] @@ -403,7 +403,7 @@ pub struct BookInstanceSearchResults { request_body = BookInstanceSearchParams, security(("jwt" = [])), responses( - (status = OK, body = BookInstanceSearchResults, description = "Found book instances in the database"), + (status = OK, body = Vec, description = "Found book instances in the database"), (status = FORBIDDEN, description = "You do not own the specified bal"), ), summary = "Search a BAL for books instances", @@ -415,7 +415,7 @@ pub async fn search_bal_book_instances( claims: Claims, Path(bal_id): Path, Json(payload): Json, -) -> (StatusCode, Json>) { +) -> (StatusCode, Json>>) { if !user_is_bal_owner(claims.user_id, bal_id, state.db_conn.as_ref()).await { return (StatusCode::FORBIDDEN, Json(None)); } @@ -439,10 +439,10 @@ pub async fn search_bal_book_instances( book_id_map.insert(instance.book_id, Book::find_by_id(instance.book_id).one(state.db_conn.as_ref()).await.unwrap().unwrap()); } } - (StatusCode::OK, Json(Some(BookInstanceSearchResults { - book_instances: res, - books: book_id_map - }))) + return (StatusCode::OK, Json(Some(res.iter().map(|i| BookInstanceWithBook { + book: book_id_map.get(&i.book_id).unwrap().clone(), + book_instance: i.clone() + }).collect()))) } else { (StatusCode::INTERNAL_SERVER_ERROR, Json(None)) }