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
|
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)]
|
#[derive(Serialize, Deserialize)]
|
||||||
struct Member {
|
struct Member {
|
||||||
id: i32,
|
id: i32,
|
||||||
@ -106,8 +116,23 @@ async fn get_members(db: &State<DatabaseConnection>) -> Result<Json<MultipleMemb
|
|||||||
let members = Members::find().all(db).await?;
|
let members = Members::find().all(db).await?;
|
||||||
|
|
||||||
// Convert this vector from the database model to the local struct model
|
// Convert this vector from the database model to the local struct model
|
||||||
let members: Vec<Member> = members.into_iter().map(Member::from).collect();
|
let mut members: Vec<Member> = members.into_iter().map(Member::from).collect();
|
||||||
// TODO: Add the member's RFID card
|
|
||||||
|
// 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
|
// Put this into the `MultipleMembersStruct` so that the aquired JSON will look as the API demands
|
||||||
let output = MultipleMembersStruct { members };
|
let output = MultipleMembersStruct { members };
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user