feat(server): busca FTS5 com filtros e paginacao
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
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))
|
||||
}
|
||||
Reference in New Issue
Block a user