2026-07-23 17:32:01 +05:30
|
|
|
use axum::{
|
|
|
|
|
extract::{Extension, State},
|
|
|
|
|
Json,
|
|
|
|
|
};
|
2026-04-11 15:04:14 +02:00
|
|
|
|
|
|
|
|
use crate::{
|
2026-07-23 17:32:01 +05:30
|
|
|
auth::AuthUser,
|
2026-04-11 15:04:14 +02:00
|
|
|
chat::models::{ChatMessageRequest, ChatMessageResponse},
|
|
|
|
|
error::AppError,
|
|
|
|
|
state::AppState,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
pub async fn message(
|
|
|
|
|
State(state): State<AppState>,
|
2026-07-23 17:32:01 +05:30
|
|
|
Extension(auth_user): Extension<AuthUser>,
|
2026-04-11 15:04:14 +02:00
|
|
|
Json(request): Json<ChatMessageRequest>,
|
|
|
|
|
) -> Result<Json<ChatMessageResponse>, AppError> {
|
|
|
|
|
if request.message.trim().is_empty() {
|
|
|
|
|
return Err(AppError::BadRequest(
|
|
|
|
|
"message must not be empty".to_string(),
|
|
|
|
|
));
|
|
|
|
|
}
|
|
|
|
|
|
2026-07-23 17:32:01 +05:30
|
|
|
let response = state
|
|
|
|
|
.chat_orchestrator
|
|
|
|
|
.handle_chat(request, &auth_user.user_id)
|
|
|
|
|
.await?;
|
2026-04-11 15:04:14 +02:00
|
|
|
Ok(Json(response))
|
|
|
|
|
}
|