use axum::{Json, extract::State, http::HeaderMap}; use koucha::db::User as DbUser; use reqwest::StatusCode; use serde::{Serialize, Deserialize}; use crate::{ AppState, routes::{ApiError, ApiResult, ApiResponse}, types::User }; #[derive(Deserialize)] pub struct Input { } #[derive(Serialize, Deserialize)] pub struct Output { users: Vec, } pub async fn handler( headers: HeaderMap, State(state): State, Json(_body): Json, ) -> ApiResult { let dbusers = DbUser::get_all(state.adapter.get_pool()) .await.map_err(|_e| { // TODO: Logging ApiError { status: StatusCode::INTERNAL_SERVER_ERROR, error: "InternalError", message: "Error getting all users from DB.".to_string(), } })?; let users: Vec = dbusers.iter().map(|u| User { name: u.name().to_string(), }).collect(); Ok(ApiResponse(StatusCode::OK, Output { users })) }