use axum::{Extension, Json, extract::Path, response::IntoResponse}; use std::sync::Arc; use uuid::Uuid; use imphnen_utils::{errors::AppError, response_format::{ApiSuccess, ApiMessage}}; use crate::middleware::hackathon_auth::HackathonAuthUser; use crate::chat::domain::service::ChatService; use super::dto::*; pub async fn get_team_messages_handler( Extension(service): Extension>, Extension(auth): Extension, Path(team_id): Path, ) -> Result { let messages = service.get_team_messages(team_id, auth.user_id).await?; let response: Vec = messages.into_iter().map(MessageResponse::from).collect(); Ok(ApiSuccess(response).into_response()) } pub async fn send_message_handler( Extension(service): Extension>, Extension(auth): Extension, Path(team_id): Path, Json(body): Json, ) -> Result { let message = service.send_message(team_id, auth.user_id, body.into()).await?; Ok(ApiSuccess(MessageResponse::from(message)).into_response()) } pub async fn delete_message_handler( Extension(service): Extension>, Extension(auth): Extension, Path(message_id): Path, ) -> Result { service.delete_message(message_id, auth.user_id).await?; Ok(ApiMessage::ok("Message deleted").into_response()) }