From 3c6e6c8656573b8e941e18d5a5b2dbc7c86dd7c7 Mon Sep 17 00:00:00 2001 From: "Sebastian H. Gabrielli" Date: Mon, 25 Dec 2023 13:19:58 +0100 Subject: [PATCH] Simplify get_member_by_id with new from implementation --- src/main.rs | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/src/main.rs b/src/main.rs index 3c4dac8..0b87eda 100644 --- a/src/main.rs +++ b/src/main.rs @@ -204,34 +204,27 @@ async fn add_member(db: &State, minimalMemberWithoutId: Json async fn get_member_by_id(db: &State, memberId: i32) -> Result, ErrorResponder> { let db = db as &DatabaseConnection; + // Create an empty variable to store the resulting member info let database_member; + // Search the database for the member based on the ID match Members::find_by_id(memberId).one(db).await? { - Some(model) => database_member = model, + Some(model) => database_member = model, // If the member is found, add the info to the previously created variable None => { return Err( ErrorResponder { - message: format!("Failed to fetch member by ID. memberId: {}", memberId) + message: format!("Failed to fetch member by ID. memberId: {}", memberId) // If it is not found return with this error } ); }, }; + // Get the member's RFID cards let member_rfid_cards: Vec = database_member.find_related(RfidCards).all(db).await?; - let rfids: Vec = member_rfid_cards.iter().map(|model| RfidCard { - cardId: model.card_id.clone(), - cardComment: model.card_comment.clone() - }).collect(); + let rfids: Vec = member_rfid_cards.into_iter().map(RfidCard::from).collect(); - let member = Member { - id: database_member.id, - ntnuUsername: database_member.ntnu_username, - firstName: database_member.first_name, - lastName: database_member.last_name, - email: database_member.email, - balance: database_member.balance, - imagePreference: database_member.image_preference, - rfidCards: rfids - }; + // Create a member from the database model and append the RFID cards + let mut member: Member = database_member.into(); + member.rfidCards = rfids; Ok(Json(member)) }