dogy_backend_api/service/assistant/
routes.rs1use 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}