dogy_backend_api/service/pets/
routes.rs

1use 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}