dkp 0.2.0

dkp — Domain Knowledge Pack management CLI
Documentation
use axum::{
    extract::{Query, State},
    http::StatusCode,
    response::{IntoResponse, Json, Response},
};
use serde::Deserialize;
use std::sync::Arc;

use crate::cmd::webui::server::AppState;

#[derive(Deserialize)]
pub struct SearchParams {
    pub q: String,
    #[serde(default = "default_limit")]
    pub limit: usize,
}

fn default_limit() -> usize {
    20
}

pub async fn search(
    Query(params): Query<SearchParams>,
    State(state): State<Arc<AppState>>,
) -> Response {
    match state.search_index.search(&params.q, params.limit) {
        Ok(results) => Json(results).into_response(),
        Err(e) => (StatusCode::INTERNAL_SERVER_ERROR, e.to_string()).into_response(),
    }
}