Koucha/koucha/src/bin/webapi/routes/get_feeds.rs

38 lines
931 B
Rust
Raw Normal View History

2026-05-12 21:07:10 -07:00
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<User>,
}
pub async fn handler(
headers: HeaderMap,
State(state): State<AppState>,
Json(_body): Json<Input>,
) -> ApiResult<Output> {
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<User> = dbusers.iter().map(|u| User {
name: u.name().to_string(),
}).collect();
Ok(ApiResponse(StatusCode::OK, Output { users }))
}