dogy_backend_api/service/users/
routes.rs

1use axum::{middleware, routing::get, routing::patch, Router};
2
3use crate::{
4    middleware::auth::layer::{auth_middleware, get_internal_id},
5    AppState,
6};
7
8use super::handlers::{
9    create_user, delete_user, get_user, update_user_base, update_user_notification,
10    update_user_subscription,
11};
12
13pub async fn user_routes(app_state: AppState) -> Router<AppState> {
14    Router::new()
15        .route(
16            "/",
17            get(get_user)
18                .delete(delete_user)
19                .patch(update_user_base)
20                .route_layer(middleware::from_fn_with_state(
21                    app_state.clone(),
22                    get_internal_id,
23                ))
24                .post(create_user),
25        )
26        .route(
27            "/subscriptions",
28            patch(update_user_subscription).route_layer(middleware::from_fn_with_state(
29                app_state.clone(),
30                get_internal_id,
31            )),
32        )
33        .route(
34            "/notifications",
35            patch(update_user_notification)
36                .route_layer(middleware::from_fn_with_state(app_state, get_internal_id)),
37        )
38        .route_layer(middleware::from_fn(auth_middleware))
39}
40
41pub async fn root_user_routes(app_state: AppState) -> Router<AppState> {
42    Router::new().nest("/users", user_routes(app_state).await)
43}