diff --git a/geneit_backend/src/controllers/accommodations_reservations_calendars_controller.rs b/geneit_backend/src/controllers/accommodations_reservations_calendars_controller.rs index c283774..a67c805 100644 --- a/geneit_backend/src/controllers/accommodations_reservations_calendars_controller.rs +++ b/geneit_backend/src/controllers/accommodations_reservations_calendars_controller.rs @@ -50,3 +50,11 @@ pub async fn create(a: FamilyInPath, req: web::Json) -> Htt Ok(HttpResponse::Ok().json(calendar)) } + +/// Get the list of calendars of the user +pub async fn get_list(a: FamilyInPath) -> HttpResult { + let users = + accommodations_reservations_calendars_service::get_all_of_user(a.user_id(), a.family_id()) + .await?; + Ok(HttpResponse::Ok().json(users)) +} diff --git a/geneit_backend/src/main.rs b/geneit_backend/src/main.rs index c8d0265..1abc649 100644 --- a/geneit_backend/src/main.rs +++ b/geneit_backend/src/main.rs @@ -262,7 +262,10 @@ async fn main() -> std::io::Result<()> { "/family/{id}/accommodations/reservations_calendars/create", web::post().to(accommodations_reservations_calendars_controller::create), ) - // TODO : list + .route( + "/family/{id}/accommodations/reservations_calendars/list", + web::get().to(accommodations_reservations_calendars_controller::get_list), + ) // TODO : delete // TODO : anonymous URL access // Photos controller diff --git a/geneit_backend/src/services/accommodations_reservations_calendars_service.rs b/geneit_backend/src/services/accommodations_reservations_calendars_service.rs index aa5ab7a..20cc6e3 100644 --- a/geneit_backend/src/services/accommodations_reservations_calendars_service.rs +++ b/geneit_backend/src/services/accommodations_reservations_calendars_service.rs @@ -33,3 +33,19 @@ pub async fn create( Ok(res) }) } + +/// Get all the calendars of a user +pub async fn get_all_of_user( + user: UserID, + family: FamilyID, +) -> anyhow::Result> { + db_connection::execute(|conn| { + accommodations_reservations_cals_urls::table + .filter( + accommodations_reservations_cals_urls::dsl::family_id + .eq(family.0) + .and(accommodations_reservations_cals_urls::dsl::user_id.eq(user.0)), + ) + .get_results(conn) + }) +}