Add an accommodations reservations module #188
@ -86,3 +86,16 @@ pub async fn full_list(m: FamilyInPath) -> HttpResult {
|
|||||||
pub async fn get_single(m: FamilyAndAccommodationReservationInPath) -> HttpResult {
|
pub async fn get_single(m: FamilyAndAccommodationReservationInPath) -> HttpResult {
|
||||||
Ok(HttpResponse::Ok().json(m.to_reservation()))
|
Ok(HttpResponse::Ok().json(m.to_reservation()))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Delete a reservation
|
||||||
|
pub async fn delete(m: FamilyAndAccommodationReservationInPath) -> HttpResult {
|
||||||
|
if m.membership().user_id() != m.user_id() {
|
||||||
|
return Ok(
|
||||||
|
HttpResponse::BadRequest().json("Only the owner of a reservation can delete it!")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
accommodations_reservations_service::delete(m.to_reservation()).await?;
|
||||||
|
|
||||||
|
Ok(HttpResponse::Accepted().finish())
|
||||||
|
}
|
||||||
|
@ -245,7 +245,10 @@ async fn main() -> std::io::Result<()> {
|
|||||||
web::get().to(accommodations_reservations_controller::get_single),
|
web::get().to(accommodations_reservations_controller::get_single),
|
||||||
)
|
)
|
||||||
// TODO : update
|
// TODO : update
|
||||||
// TODO : delete
|
.route(
|
||||||
|
"/family/{id}/accommodations/reservation/{reservation_id}",
|
||||||
|
web::delete().to(accommodations_reservations_controller::delete),
|
||||||
|
)
|
||||||
// TODO : validate or reject
|
// TODO : validate or reject
|
||||||
// [ACCOMMODATIONS] Calendars controller
|
// [ACCOMMODATIONS] Calendars controller
|
||||||
// TODO : create
|
// TODO : create
|
||||||
|
@ -510,6 +510,10 @@ impl AccommodationReservation {
|
|||||||
pub fn family_id(&self) -> FamilyID {
|
pub fn family_id(&self) -> FamilyID {
|
||||||
FamilyID(self.family_id)
|
FamilyID(self.family_id)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn user_id(&self) -> UserID {
|
||||||
|
UserID(self.user_id)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Insertable)]
|
#[derive(Insertable)]
|
||||||
|
@ -37,6 +37,20 @@ pub async fn update(r: &mut AccommodationReservation) -> anyhow::Result<()> {
|
|||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Delete a reservation
|
||||||
|
pub async fn delete(r: AccommodationReservation) -> anyhow::Result<()> {
|
||||||
|
// Remove the reservation
|
||||||
|
db_connection::execute(|conn| {
|
||||||
|
diesel::delete(
|
||||||
|
accommodations_reservations::dsl::accommodations_reservations
|
||||||
|
.filter(accommodations_reservations::dsl::id.eq(r.id().0)),
|
||||||
|
)
|
||||||
|
.execute(conn)
|
||||||
|
})?;
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
/// Get all the reservations of an accommodation
|
/// Get all the reservations of an accommodation
|
||||||
pub async fn get_all_of_accommodation(
|
pub async fn get_all_of_accommodation(
|
||||||
id: AccommodationID,
|
id: AccommodationID,
|
||||||
|
Loading…
Reference in New Issue
Block a user