dogy_backend_api/service/assistant/
routes.rs

1use axum::{
2    middleware,
3    routing::{get, post},
4    Router,
5};
6
7use crate::{
8    middleware::auth::layer::{auth_middleware, get_internal_id},
9    AppState,
10};
11
12use super::{
13    daily_challenges::routes::root_daily_challenge_routes,
14    handlers::{
15        get_all_threads_from_user, link_user_to_thread, unlink_thread_from_user,
16        update_thread_title,
17    },
18};
19
20async fn thread_routes(app_state: AppState) -> Router<AppState> {
21    Router::new()
22        .route("/", get(get_all_threads_from_user))
23        .route(
24            "/{thread_id}",
25            post(link_user_to_thread)
26                .patch(update_thread_title)
27                .delete(unlink_thread_from_user),
28        )
29        .route_layer(middleware::from_fn_with_state(
30            app_state.clone(),
31            get_internal_id,
32        ))
33        .route_layer(middleware::from_fn(auth_middleware))
34}
35
36pub async fn root_threads_routes(app_state: AppState) -> Router<AppState> {
37    Router::new().nest("/threads", thread_routes(app_state).await)
38}
39
40pub async fn root_assistant_routes(app_state: AppState) -> Router<AppState> {
41    Router::new()
42        .nest("/assistant", root_threads_routes(app_state.clone()).await)
43        .nest("/assistant", root_daily_challenge_routes(app_state).await)
44}