11use api;
22use defs;
3+ use grpc_server:: config:: GRPCServerConfig ;
34use grpc_server:: constants:: SIMILARITY_PROTOBUF_MAP ;
45use grpc_server:: interceptors;
5- use grpc_server:: { config :: GRPCServerConfig , interceptors :: logging_interceptor } ;
6+ use grpc_server:: utils :: log_rpc ;
67use std:: panic;
78use tonic:: { Request , Response , Status , service:: InterceptorLayer , transport:: Server } ;
8- use tracing_subscriber;
9-
109use tracing:: { Level , event} ;
10+ use tracing_subscriber;
1111use vectordb:: {
12- DenseVector , InsertVectorRequest , Point , PointId , SearchRequest , SearchResponse , Similarity ,
12+ DenseVector , InsertVectorRequest , Point , PointId , SearchRequest , SearchResponse ,
1313 vector_db_server:: { VectorDb , VectorDbServer } ,
1414} ;
1515pub mod vectordb {
@@ -18,6 +18,7 @@ pub mod vectordb {
1818
1919pub struct VectorDBService {
2020 pub vector_db : api:: VectorDb ,
21+ pub logging : bool ,
2122}
2223
2324#[ tonic:: async_trait]
@@ -26,16 +27,19 @@ impl VectorDb for VectorDBService {
2627 & self ,
2728 request : Request < InsertVectorRequest > ,
2829 ) -> Result < Response < PointId > , Status > {
30+ log_rpc ( "insert_vector" , self . logging ) ;
31+
2932 let inner_request = request. into_inner ( ) ;
3033
3134 let dense_vector = inner_request. vector ;
3235 if dense_vector. is_none ( ) {
3336 return Err ( Status :: invalid_argument ( "dense_vector is empty" ) ) ;
3437 }
35- // fetch payload and default to empty struct otherwise
36- let payload = inner_request. payload . unwrap_or_default ( ) ;
3738
3839 // TODO: Implement payload handling once its defined
40+ // fetch payload and default to empty struct otherwise
41+ // let payload = inner_request.payload.unwrap_or_default();
42+
3943 let point_id = self
4044 . vector_db
4145 . insert ( dense_vector. unwrap ( ) . values , defs:: Payload { } ) ;
@@ -53,6 +57,8 @@ impl VectorDb for VectorDBService {
5357 }
5458
5559 async fn get_point ( & self , request : Request < PointId > ) -> Result < Response < Point > , Status > {
60+ log_rpc ( "get_point" , self . logging ) ;
61+
5662 let inner_request = request. into_inner ( ) ;
5763
5864 let point_id = inner_request. id ;
@@ -79,6 +85,8 @@ impl VectorDb for VectorDBService {
7985 & self ,
8086 request : Request < SearchRequest > ,
8187 ) -> Result < Response < SearchResponse > , Status > {
88+ log_rpc ( "search_points" , self . logging ) ;
89+
8290 let search_request = request. into_inner ( ) ;
8391
8492 //TODO: distance function panics if different dimensions; no dimension enforcement
@@ -105,12 +113,14 @@ impl VectorDb for VectorDBService {
105113 }
106114
107115 async fn delete_point ( & self , request : Request < PointId > ) -> Result < Response < ( ) > , Status > {
116+ log_rpc ( "delete_point" , self . logging ) ;
117+
108118 let point_id = request. into_inner ( ) . id ;
109119
110120 // TODO: delete call needs to return a boolean indicating if point is present or not
111- // if self.vector_db.delete(point_id)? {
112- // return Err(Status::not_found("Point not found "));
113- // };
121+ if self . vector_db . delete ( point_id) . is_err ( ) {
122+ return Err ( Status :: not_found ( "Error deleting point " ) ) ;
123+ } ;
114124
115125 Ok ( Response :: new ( ( ) ) )
116126 }
@@ -129,6 +139,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
129139
130140 let vector_db_service = VectorDBService {
131141 vector_db : vector_db_api,
142+ logging : config. logging ,
132143 } ;
133144
134145 event ! (
@@ -140,7 +151,6 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
140151 let auth_interceptor = interceptors:: AuthInterceptor :: new ( config. root_password ) ;
141152
142153 let _ = Server :: builder ( )
143- . layer ( InterceptorLayer :: new ( logging_interceptor) )
144154 . layer ( InterceptorLayer :: new ( auth_interceptor) )
145155 . add_service ( VectorDbServer :: new ( vector_db_service) )
146156 . serve ( config. addr )
0 commit comments