Implement rfid card lookup in get_members
This commit is contained in:
parent
8b704120d2
commit
b038811b58
29
src/main.rs
29
src/main.rs
@ -20,6 +20,16 @@ struct RfidCard {
|
||||
cardComment: String
|
||||
}
|
||||
|
||||
// Implement `.into()` to auto map values from the database model to the local struct
|
||||
impl From<<entities::rfid_cards::Entity as sea_orm::EntityTrait>::Model> for RfidCard {
|
||||
fn from(rfid_card: <entities::rfid_cards::Entity as sea_orm::EntityTrait>::Model) -> RfidCard {
|
||||
RfidCard {
|
||||
cardId: rfid_card.card_id,
|
||||
cardComment: rfid_card.card_comment,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Serialize, Deserialize)]
|
||||
struct Member {
|
||||
id: i32,
|
||||
@ -106,8 +116,23 @@ async fn get_members(db: &State<DatabaseConnection>) -> Result<Json<MultipleMemb
|
||||
let members = Members::find().all(db).await?;
|
||||
|
||||
// Convert this vector from the database model to the local struct model
|
||||
let members: Vec<Member> = members.into_iter().map(Member::from).collect();
|
||||
// TODO: Add the member's RFID card
|
||||
let mut members: Vec<Member> = members.into_iter().map(Member::from).collect();
|
||||
|
||||
// Fetch the member's RFID card
|
||||
for member in &mut members {
|
||||
// Look up all RFID cards associated with this member
|
||||
let rfid_cards = RfidCards::find()
|
||||
.filter(rfid_cards::Column::MemberId.eq(member.id))
|
||||
.all(db)
|
||||
.await?;
|
||||
|
||||
// Convert the RFID cards vector from the database model to the local struct model
|
||||
let rfid_cards: Vec<RfidCard> = rfid_cards.into_iter().map(RfidCard::from).collect();
|
||||
|
||||
// Add these cards to the member's rfidCards field
|
||||
member.rfidCards = rfid_cards;
|
||||
}
|
||||
|
||||
|
||||
// Put this into the `MultipleMembersStruct` so that the aquired JSON will look as the API demands
|
||||
let output = MultipleMembersStruct { members };
|
||||
|
||||
Loading…
Reference in New Issue
Block a user