tuitbot_server/routes/
replies.rs1use std::sync::Arc;
4
5use axum::extract::{Query, State};
6use axum::Json;
7use serde::Deserialize;
8use serde_json::{json, Value};
9use tuitbot_core::storage::replies;
10
11use crate::error::ApiError;
12use crate::state::AppState;
13
14#[derive(Deserialize)]
16pub struct RepliesQuery {
17 #[serde(default = "default_limit")]
19 pub limit: u32,
20 #[serde(default)]
22 pub offset: u32,
23}
24
25fn default_limit() -> u32 {
26 50
27}
28
29pub async fn list_replies(
31 State(state): State<Arc<AppState>>,
32 Query(params): Query<RepliesQuery>,
33) -> Result<Json<Value>, ApiError> {
34 let replies = replies::get_recent_replies(&state.db, params.limit, params.offset).await?;
35 Ok(Json(json!(replies)))
36}