chore: split sql.rs to multiple files
This commit is contained in:
parent
c26872edb8
commit
fc2e993d31
|
@ -1,102 +1,9 @@
|
||||||
use hyper::StatusCode;
|
use hyper::StatusCode;
|
||||||
|
|
||||||
use crate::{ServiceInner, model::{Room, Booking, Person, Address, BookingBody, CleaningPlan, Clerk}, error::ServiceError};
|
use crate::{ServiceInner, model::{Room, Booking, Person, Address, BookingBody}, error::ServiceError};
|
||||||
|
|
||||||
impl ServiceInner {
|
impl ServiceInner {
|
||||||
|
|
||||||
pub async fn get_rooms(&self) -> Result<Vec<Room>, ServiceError> {
|
|
||||||
let session = self.pool.get_session().await?;
|
|
||||||
let stmt = session.prepare("
|
|
||||||
SELECT
|
|
||||||
roomNumber,
|
|
||||||
floor,
|
|
||||||
roomTyp,
|
|
||||||
\"size\",
|
|
||||||
accessibility,
|
|
||||||
beds
|
|
||||||
FROM room
|
|
||||||
").await?;
|
|
||||||
|
|
||||||
let rows = stmt.query("").await?;
|
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(rooms)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub async fn get_room(&self, id: i32) -> Result<Option<Room>, ServiceError> {
|
|
||||||
let session = self.pool.get_session().await?;
|
|
||||||
let stmt = session.prepare("
|
|
||||||
SELECT
|
|
||||||
roomNumber,
|
|
||||||
floor,
|
|
||||||
roomTyp,
|
|
||||||
\"size\",
|
|
||||||
accessibility,
|
|
||||||
beds
|
|
||||||
FROM room WHERE roomNumber = :ID
|
|
||||||
").await?;
|
|
||||||
|
|
||||||
let row = stmt.query_single(id).await?;
|
|
||||||
|
|
||||||
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,
|
|
||||||
})
|
|
||||||
},
|
|
||||||
None => None,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
pub async fn get_room_cleaning_plans(&self, roomid: i32) -> Result<Vec<CleaningPlan>, ServiceError> {
|
|
||||||
let session = self.pool.get_session().await?;
|
|
||||||
let stmt = session.prepare("
|
|
||||||
SELECT
|
|
||||||
cleaningPlanId,
|
|
||||||
TO_CHAR(\"date\", 'YYYY-MM-DD'),
|
|
||||||
duration
|
|
||||||
FROM CleaningPlan
|
|
||||||
WHERE roomNumber = :ROOMID
|
|
||||||
").await?;
|
|
||||||
|
|
||||||
let rows = stmt.query(roomid).await?;
|
|
||||||
|
|
||||||
let mut cleaning_plans: Vec<CleaningPlan> = vec![];
|
|
||||||
|
|
||||||
while let Some(row) = rows.next().await? {
|
|
||||||
let cleaning_plan = CleaningPlan {
|
|
||||||
id: row.get(0)?,
|
|
||||||
date: row.get(1)?,
|
|
||||||
duration: row.get(2)?,
|
|
||||||
room_id: roomid,
|
|
||||||
};
|
|
||||||
cleaning_plans.push(cleaning_plan);
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(cleaning_plans)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub async fn get_bookings(&self) -> Result<Vec<Booking>, ServiceError> {
|
pub async fn get_bookings(&self) -> Result<Vec<Booking>, ServiceError> {
|
||||||
let session = self.pool.get_session().await?;
|
let session = self.pool.get_session().await?;
|
||||||
let stmt = session.prepare("
|
let stmt = session.prepare("
|
||||||
|
@ -383,52 +290,4 @@ impl ServiceInner {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn get_clerks(&self) -> Result<Vec<Clerk>, ServiceError> {
|
|
||||||
let session = self.pool.get_session().await?;
|
|
||||||
let stmt = session.prepare("
|
|
||||||
SELECT
|
|
||||||
c.staff,
|
|
||||||
c.salary,
|
|
||||||
p.personId,
|
|
||||||
p.name,
|
|
||||||
p.lastName,
|
|
||||||
p.age,
|
|
||||||
ad.street,
|
|
||||||
ad.houseNumber,
|
|
||||||
ad.postalCode,
|
|
||||||
ad.city,
|
|
||||||
ad.country
|
|
||||||
FROM Clerk c
|
|
||||||
INNER JOIN Person p ON p.personId = c.personId
|
|
||||||
INNER JOIN Address ad ON p.addressId = ad.addressId
|
|
||||||
").await?;
|
|
||||||
|
|
||||||
let rows = stmt.query("").await?;
|
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(clerks)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
53
src/sql/clerks.rs
Normal file
53
src/sql/clerks.rs
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
use crate::{ServiceInner, model::{Person, Address, Clerk}, error::ServiceError};
|
||||||
|
|
||||||
|
impl ServiceInner {
|
||||||
|
|
||||||
|
pub async fn get_clerks(&self) -> Result<Vec<Clerk>, ServiceError> {
|
||||||
|
let session = self.pool.get_session().await?;
|
||||||
|
let stmt = session.prepare("
|
||||||
|
SELECT
|
||||||
|
c.staff,
|
||||||
|
c.salary,
|
||||||
|
p.personId,
|
||||||
|
p.name,
|
||||||
|
p.lastName,
|
||||||
|
p.age,
|
||||||
|
ad.street,
|
||||||
|
ad.houseNumber,
|
||||||
|
ad.postalCode,
|
||||||
|
ad.city,
|
||||||
|
ad.country
|
||||||
|
FROM Clerk c
|
||||||
|
INNER JOIN Person p ON p.personId = c.personId
|
||||||
|
INNER JOIN Address ad ON p.addressId = ad.addressId
|
||||||
|
").await?;
|
||||||
|
|
||||||
|
let rows = stmt.query("").await?;
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(clerks)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
3
src/sql/mod.rs
Normal file
3
src/sql/mod.rs
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
mod bookings;
|
||||||
|
mod rooms;
|
||||||
|
mod clerks;
|
98
src/sql/rooms.rs
Normal file
98
src/sql/rooms.rs
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
use crate::{ServiceInner, model::{Room, CleaningPlan}, error::ServiceError};
|
||||||
|
|
||||||
|
impl ServiceInner {
|
||||||
|
|
||||||
|
pub async fn get_rooms(&self) -> Result<Vec<Room>, ServiceError> {
|
||||||
|
let session = self.pool.get_session().await?;
|
||||||
|
let stmt = session.prepare("
|
||||||
|
SELECT
|
||||||
|
roomNumber,
|
||||||
|
floor,
|
||||||
|
roomTyp,
|
||||||
|
\"size\",
|
||||||
|
accessibility,
|
||||||
|
beds
|
||||||
|
FROM room
|
||||||
|
").await?;
|
||||||
|
|
||||||
|
let rows = stmt.query("").await?;
|
||||||
|
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(rooms)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn get_room(&self, id: i32) -> Result<Option<Room>, ServiceError> {
|
||||||
|
let session = self.pool.get_session().await?;
|
||||||
|
let stmt = session.prepare("
|
||||||
|
SELECT
|
||||||
|
roomNumber,
|
||||||
|
floor,
|
||||||
|
roomTyp,
|
||||||
|
\"size\",
|
||||||
|
accessibility,
|
||||||
|
beds
|
||||||
|
FROM room WHERE roomNumber = :ID
|
||||||
|
").await?;
|
||||||
|
|
||||||
|
let row = stmt.query_single(id).await?;
|
||||||
|
|
||||||
|
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,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
None => None,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn get_room_cleaning_plans(&self, roomid: i32) -> Result<Vec<CleaningPlan>, ServiceError> {
|
||||||
|
let session = self.pool.get_session().await?;
|
||||||
|
let stmt = session.prepare("
|
||||||
|
SELECT
|
||||||
|
cleaningPlanId,
|
||||||
|
TO_CHAR(\"date\", 'YYYY-MM-DD'),
|
||||||
|
duration
|
||||||
|
FROM CleaningPlan
|
||||||
|
WHERE roomNumber = :ROOMID
|
||||||
|
").await?;
|
||||||
|
|
||||||
|
let rows = stmt.query(roomid).await?;
|
||||||
|
|
||||||
|
let mut cleaning_plans: Vec<CleaningPlan> = vec![];
|
||||||
|
|
||||||
|
while let Some(row) = rows.next().await? {
|
||||||
|
let cleaning_plan = CleaningPlan {
|
||||||
|
id: row.get(0)?,
|
||||||
|
date: row.get(1)?,
|
||||||
|
duration: row.get(2)?,
|
||||||
|
room_id: roomid,
|
||||||
|
};
|
||||||
|
cleaning_plans.push(cleaning_plan);
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(cleaning_plans)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue