chore: split sql.rs to multiple files
This commit is contained in:
parent
c26872edb8
commit
fc2e993d31
4 changed files with 155 additions and 142 deletions
|
@ -1,102 +1,9 @@
|
|||
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 {
|
||||
|
||||
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> {
|
||||
let session = self.pool.get_session().await?;
|
||||
let stmt = session.prepare("
|
||||
|
@ -383,52 +290,4 @@ impl ServiceInner {
|
|||
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…
Add table
Reference in a new issue