dogy_backend_api/service/pets/
routes.rs1use axum::{
2 middleware,
3 routing::{get, patch, post},
4 Router,
5};
6
7use crate::{
8 middleware::auth::layer::{auth_middleware, get_internal_id},
9 AppState,
10};
11
12use super::handlers::{
13 create_pet, delete_pet, get_all_pets, get_pet, update_base_pet, update_pet_attributes,
14};
15
16async fn pet_routes(app_state: AppState) -> Router<AppState> {
17 Router::new()
18 .route("/", post(create_pet).get(get_all_pets))
19 .route(
20 "/{pet_id}",
21 get(get_pet).delete(delete_pet).patch(update_base_pet),
22 )
23 .route("/{pet_id}/attributes", patch(update_pet_attributes))
24 .route_layer(middleware::from_fn_with_state(
25 app_state.clone(),
26 get_internal_id,
27 ))
28 .route_layer(middleware::from_fn(auth_middleware))
29}
30
31pub async fn root_pet_routes(app_state: AppState) -> Router<AppState> {
32 Router::new().nest("/pets", pet_routes(app_state).await)
33}