systemprompt_api/routes/content/
query.rs1use axum::extract::State;
7use axum::{Extension, Json};
8use systemprompt_content::{SearchRequest, SearchResponse, SearchService};
9use systemprompt_models::RequestContext;
10use systemprompt_runtime::AppContext;
11
12use crate::error::ApiHttpError;
13
14pub async fn query_handler(
15 Extension(_req_ctx): Extension<RequestContext>,
16 State(ctx): State<AppContext>,
17 Json(request): Json<SearchRequest>,
18) -> Result<Json<SearchResponse>, ApiHttpError> {
19 tracing::info!(query = %request.query, "Searching");
20
21 let repositories = ctx.content_repositories();
22 let search_service =
23 SearchService::new(repositories.search.clone(), repositories.content.clone());
24
25 let response = search_service.search(&request).await?;
26 tracing::info!(total = response.total, "Search completed");
27 Ok(Json(response))
28}