From ea7ff3796fbd62499f08b61fd42033a2054245f9 Mon Sep 17 00:00:00 2001 From: Priec Date: Fri, 22 Aug 2025 16:09:16 +0200 Subject: [PATCH] search grpc client isolated a bit mode --- client/src/search/grpc.rs | 31 ++++++++++++++++++++++++++++++ client/src/search/mod.rs | 2 ++ client/src/services/grpc_client.rs | 16 +++++---------- 3 files changed, 38 insertions(+), 11 deletions(-) create mode 100644 client/src/search/grpc.rs diff --git a/client/src/search/grpc.rs b/client/src/search/grpc.rs new file mode 100644 index 0000000..6b9379f --- /dev/null +++ b/client/src/search/grpc.rs @@ -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, +} + +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 { + let request = tonic::Request::new(SearchRequest { table_name, query }); + let response = self.client.search_table(request).await?; + Ok(response.into_inner()) + } +} diff --git a/client/src/search/mod.rs b/client/src/search/mod.rs index b542c53..de37124 100644 --- a/client/src/search/mod.rs +++ b/client/src/search/mod.rs @@ -3,5 +3,7 @@ pub mod state; pub mod ui; pub mod event; +pub mod grpc; pub use ui::*; +pub use grpc::SearchGrpc; diff --git a/client/src/services/grpc_client.rs b/client/src/services/grpc_client.rs index 47b807f..cabaad1 100644 --- a/client/src/services/grpc_client.rs +++ b/client/src/services/grpc_client.rs @@ -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, table_script_client: TableScriptClient, tables_data_client: TablesDataClient, - search_client: SearcherClient, + 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 { - 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 } }