Files
ares-next/server/src/api/search.rs
T

22 lines
633 B
Rust

use axum::extract::{Query, State};
use axum::Json;
use crate::error::AppResult;
use crate::models::{FileRecord, SearchQuery};
use crate::state::SharedState;
pub async fn search(
State(state): State<SharedState>,
Query(q): Query<SearchQuery>,
) -> AppResult<Json<Vec<FileRecord>>> {
let db = state.db.lock().unwrap();
let limit = q.limit.unwrap_or(state.config.max_results).clamp(1, 100);
let offset = q.offset.unwrap_or(0).max(0);
let rows = crate::store::search_files(
&db,
q.q.as_deref().unwrap_or(""),
q.ftype.as_deref(),
limit,
offset,
)?;
Ok(Json(rows))
}