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)) }