Simplify get_member_by_id with new from implementation
This commit is contained in:
parent
b038811b58
commit
3c6e6c8656
25
src/main.rs
25
src/main.rs
@ -204,34 +204,27 @@ async fn add_member(db: &State<DatabaseConnection>, minimalMemberWithoutId: Json
|
||||
async fn get_member_by_id(db: &State<DatabaseConnection>, memberId: i32) -> Result<Json<Member>, 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<rfid_cards::Model> = database_member.find_related(RfidCards).all(db).await?;
|
||||
let rfids: Vec<RfidCard> = member_rfid_cards.iter().map(|model| RfidCard {
|
||||
cardId: model.card_id.clone(),
|
||||
cardComment: model.card_comment.clone()
|
||||
}).collect();
|
||||
let rfids: Vec<RfidCard> = 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))
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user