search grpc client isolated a bit mode

This commit is contained in:
Priec
2025-08-22 16:09:16 +02:00
parent 310617d62b
commit ea7ff3796f
3 changed files with 38 additions and 11 deletions

31
client/src/search/grpc.rs Normal file
View File

@@ -0,0 +1,31 @@
// src/search/grpc.rs
use common::proto::komp_ac::search::{
searcher_client::SearcherClient, SearchRequest, SearchResponse,
};
use tonic::transport::Channel;
use anyhow::Result;
/// Internal search gRPC wrapper
#[derive(Clone)]
pub struct SearchGrpc {
client: SearcherClient<Channel>,
}
impl SearchGrpc {
pub fn new(channel: Channel) -> Self {
Self {
client: SearcherClient::new(channel),
}
}
pub async fn search_table(
&mut self,
table_name: String,
query: String,
) -> Result<SearchResponse> {
let request = tonic::Request::new(SearchRequest { table_name, query });
let response = self.client.search_table(request).await?;
Ok(response.into_inner())
}
}

View File

@@ -3,5 +3,7 @@
pub mod state;
pub mod ui;
pub mod event;
pub mod grpc;
pub use ui::*;
pub use grpc::SearchGrpc;

View File

@@ -22,9 +22,8 @@ use common::proto::komp_ac::tables_data::{
PostTableDataRequest, PostTableDataResponse, PutTableDataRequest,
PutTableDataResponse,
};
use common::proto::komp_ac::search::{
searcher_client::SearcherClient, SearchRequest, SearchResponse,
};
use crate::search::SearchGrpc;
use common::proto::komp_ac::search::SearchResponse;
use anyhow::{Context, Result};
use std::collections::HashMap;
use tonic::transport::Channel;
@@ -36,7 +35,7 @@ pub struct GrpcClient {
table_definition_client: TableDefinitionClient<Channel>,
table_script_client: TableScriptClient<Channel>,
tables_data_client: TablesDataClient<Channel>,
search_client: SearcherClient<Channel>,
search_client: SearchGrpc,
}
impl GrpcClient {
@@ -52,7 +51,7 @@ impl GrpcClient {
TableDefinitionClient::new(channel.clone());
let table_script_client = TableScriptClient::new(channel.clone());
let tables_data_client = TablesDataClient::new(channel.clone());
let search_client = SearcherClient::new(channel.clone());
let search_client = SearchGrpc::new(channel.clone());
Ok(Self {
table_structure_client,
@@ -247,11 +246,6 @@ impl GrpcClient {
table_name: String,
query: String,
) -> Result<SearchResponse> {
let request = tonic::Request::new(SearchRequest { table_name, query });
let response = self
.search_client
.search_table(request)
.await?;
Ok(response.into_inner())
self.search_client.search_table(table_name, query).await
}
}