use axum::{extract::Extension, http::StatusCode, Json}; use crate::{app_state::{AppState, SessionSnapshot, SessionStartRequest}, error::AppError}; pub async fn start( Extension(state): Extension, Json(payload): Json, ) -> Result<(StatusCode, Json), AppError> { let session = state.start_session(payload).await; Ok((StatusCode::CREATED, Json(session))) } pub async fn end(Extension(state): Extension) -> Result, AppError> { let session = state.end_session().await?; Ok(Json(session)) } pub async fn me(Extension(state): Extension) -> Result, AppError> { let session = state .current_session() .await .ok_or_else(|| AppError::not_found("No active session"))?; Ok(Json(session)) }