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, Query(q): Query, ) -> AppResult>> { 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)) }