feat: mapping functions

This commit is contained in:
Timo Ley 2023-06-23 16:29:13 +02:00
parent 5a7691062b
commit f6cef69a7b
3 changed files with 63 additions and 124 deletions

View file

@ -1,6 +1,7 @@
use hyper::StatusCode;
use sibyl::Row;
use crate::{ServiceInner, model::{Booking, BookingBody, Room, Person, Address}, error::ServiceError};
use crate::{ServiceInner, model::{Booking, BookingBody, Room, Person}, error::ServiceError};
impl ServiceInner {
@ -22,15 +23,7 @@ impl ServiceInner {
let mut bookings: Vec<Booking> = vec![];
while let Some(row) = rows.next().await? {
let booking = Booking {
id: row.get(0)?,
arrival_date: row.get(1)?,
depature_date: row.get(2)?,
cost: row.get(3)?,
pension_type: row.get(4)?,
client_id: row.get(5)?,
};
bookings.push(booking);
bookings.push(Self::map_booking_row(row)?);
}
Ok(bookings)
@ -55,15 +48,7 @@ impl ServiceInner {
let mut bookings: Vec<Booking> = vec![];
while let Some(row) = rows.next().await? {
let booking = Booking {
id: row.get(0)?,
arrival_date: row.get(1)?,
depature_date: row.get(2)?,
cost: row.get(3)?,
pension_type: row.get(4)?,
client_id: row.get(5)?,
};
bookings.push(booking);
bookings.push(Self::map_booking_row(row)?);
}
Ok(bookings)
@ -86,14 +71,7 @@ impl ServiceInner {
Ok(match row {
Some(row) => {
Some(Booking {
id: row.get(0)?,
arrival_date: row.get(1)?,
depature_date: row.get(2)?,
cost: row.get(3)?,
pension_type: row.get(4)?,
client_id: row.get(5)?,
})
Some(Self::map_booking_row(row)?)
},
None => None,
})
@ -191,17 +169,7 @@ impl ServiceInner {
let mut rooms: Vec<Room> = vec![];
while let Some(row) = rows.next().await? {
let acc: i32 = row.get(5)?;
let room = Room {
room_number: row.get(0)?,
floor: row.get(1)?,
size: row.get(3)?,
room_type: row.get(2)?,
beds: row.get(4)?,
accessibility: acc != 0,
};
rooms.push(room);
rooms.push(Self::map_room_row(row)?);
}
Ok(rooms)
@ -231,20 +199,7 @@ impl ServiceInner {
let mut persons: Vec<Person> = vec![];
while let Some(row) = rows.next().await? {
let person = Person {
id: row.get(0)?,
first_name: row.get(1)?,
last_name: row.get(2)?,
age: row.get(3)?,
address: Address {
street: row.get(4)?,
house_number: row.get(5)?,
postal_code: row.get(6)?,
city: row.get(7)?,
country: row.get(8)?,
}
};
persons.push(person);
persons.push(Self::map_person_row(row, 0)?);
}
Ok(persons)
@ -290,4 +245,15 @@ impl ServiceInner {
Ok(())
}
pub fn map_booking_row(row: Row) -> Result<Booking, ServiceError> {
Ok(Booking {
id: row.get(0)?,
arrival_date: row.get(1)?,
depature_date: row.get(2)?,
cost: row.get(3)?,
pension_type: row.get(4)?,
client_id: row.get(5)?,
})
}
}

View file

@ -1,3 +1,5 @@
use sibyl::Row;
use crate::{ServiceInner, model::{Person, Address, Clerk}, error::ServiceError};
impl ServiceInner {
@ -27,24 +29,7 @@ impl ServiceInner {
let mut clerks: Vec<Clerk> = vec![];
while let Some(row) = rows.next().await? {
let clerk = Clerk {
staff_number: row.get(0)?,
salary: row.get(1)?,
person_data: Person {
id: row.get(2)?,
first_name: row.get(3)?,
last_name: row.get(4)?,
age: row.get(5)?,
address: Address {
street: row.get(6)?,
house_number: row.get(7)?,
postal_code: row.get(8)?,
city: row.get(9)?,
country: row.get(10)?,
},
},
};
clerks.push(clerk);
clerks.push(Self::map_clerk_row(row)?);
}
Ok(clerks)
@ -75,23 +60,7 @@ impl ServiceInner {
Ok(match row {
Some(row) => {
Some(Clerk {
staff_number: row.get(0)?,
salary: row.get(1)?,
person_data: Person {
id: row.get(2)?,
first_name: row.get(3)?,
last_name: row.get(4)?,
age: row.get(5)?,
address: Address {
street: row.get(6)?,
house_number: row.get(7)?,
postal_code: row.get(8)?,
city: row.get(9)?,
country: row.get(10)?,
},
},
})
Some(Self::map_clerk_row(row)?)
},
None => None,
})
@ -122,26 +91,34 @@ impl ServiceInner {
Ok(match row {
Some(row) => {
Some(Clerk {
staff_number: row.get(0)?,
salary: row.get(1)?,
person_data: Person {
id: row.get(2)?,
first_name: row.get(3)?,
last_name: row.get(4)?,
age: row.get(5)?,
address: Address {
street: row.get(6)?,
house_number: row.get(7)?,
postal_code: row.get(8)?,
city: row.get(9)?,
country: row.get(10)?,
},
},
})
Some(Self::map_clerk_row(row)?)
},
None => None,
})
}
pub fn map_person_row(row: Row, offset: usize) -> Result<Person, ServiceError> {
Ok(Person {
id: row.get(0 + offset)?,
first_name: row.get(1 + offset)?,
last_name: row.get(2 + offset)?,
age: row.get(3 + offset)?,
address: Address {
street: row.get(4 + offset)?,
house_number: row.get(5 + offset)?,
postal_code: row.get(6 + offset)?,
city: row.get(7 + offset)?,
country: row.get(8 + offset)?,
}
})
}
pub fn map_clerk_row(row: Row) -> Result<Clerk, ServiceError> {
Ok(Clerk {
staff_number: row.get(0)?,
salary: row.get(1)?,
person_data: Self::map_person_row(row, 2)?,
})
}
}

View file

@ -1,3 +1,5 @@
use sibyl::Row;
use crate::{ServiceInner, model::{Room, CleaningPlan}, error::ServiceError};
impl ServiceInner {
@ -20,17 +22,7 @@ impl ServiceInner {
let mut rooms: Vec<Room> = vec![];
while let Some(row) = rows.next().await? {
let acc: i32 = row.get(5)?;
let room = Room {
room_number: row.get(0)?,
floor: row.get(1)?,
size: row.get(3)?,
room_type: row.get(2)?,
beds: row.get(4)?,
accessibility: acc != 0,
};
rooms.push(room);
rooms.push(Self::map_room_row(row)?);
}
Ok(rooms)
@ -53,15 +45,7 @@ impl ServiceInner {
Ok(match row {
Some(row) => {
let acc: i32 = row.get(5)?;
Some(Room {
room_number: row.get(0)?,
floor: row.get(1)?,
size: row.get(3)?,
room_type: row.get(2)?,
beds: row.get(4)?,
accessibility: acc != 0,
})
Some(Self::map_room_row(row)?)
},
None => None,
})
@ -95,4 +79,16 @@ impl ServiceInner {
Ok(cleaning_plans)
}
pub fn map_room_row(row: Row) -> Result<Room, ServiceError> {
let acc: i32 = row.get(5)?;
Ok(Room {
room_number: row.get(0)?,
floor: row.get(1)?,
size: row.get(3)?,
room_type: row.get(2)?,
beds: row.get(4)?,
accessibility: acc != 0,
})
}
}