From c7921c4c1310c84735f7e8dbf966ddd75d9c3ed6 Mon Sep 17 00:00:00 2001 From: Tanmay Arya Date: Thu, 15 Jan 2026 20:12:38 +0530 Subject: [PATCH] fix(grpc): return payload in get_point rpc response --- crates/grpc/src/service.rs | 13 ++++++++++--- crates/grpc/src/tests.rs | 14 ++++++++++++-- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/crates/grpc/src/service.rs b/crates/grpc/src/service.rs index 605242d..1efab3b 100644 --- a/crates/grpc/src/service.rs +++ b/crates/grpc/src/service.rs @@ -5,7 +5,6 @@ use crate::interceptors; use crate::service::vectordb::{ContentType, Uuid}; use crate::utils::log_rpc; use crate::{constants::SIMILARITY_PROTOBUFF_MAP, utils::ServerEndpoint}; -use defs::Payload; use tonic::{Request, Response, Status, service::InterceptorLayer, transport::Server}; use tracing::{Level, event}; use uuid::Uuid as UuidCrate; @@ -57,7 +56,7 @@ impl VectorDb for VectorDBService { let point_id = self.vector_db.insert( dense_vector.unwrap().values, - Payload { + defs::Payload { content_type: payload_type, content: payload_content, }, @@ -87,6 +86,14 @@ impl VectorDb for VectorDBService { // return error if not found let point = point_opt.ok_or(Status::not_found(format!("point not found: {}", point_id)))?; + let payload = point.payload.map(|p| vectordb::Payload { + content_type: match p.content_type { + defs::ContentType::Text => ContentType::Text as i32, + defs::ContentType::Image => ContentType::Image as i32, + }, + content: p.content, + }); + Ok(Response::new(Point { id: Some(PointId { id: Some(Uuid { @@ -96,7 +103,7 @@ impl VectorDb for VectorDBService { vector: Some(DenseVector { values: point.vector.unwrap_or_default(), }), - payload: None, + payload, })) } diff --git a/crates/grpc/src/tests.rs b/crates/grpc/src/tests.rs index 207ecf2..71922dd 100644 --- a/crates/grpc/src/tests.rs +++ b/crates/grpc/src/tests.rs @@ -1,6 +1,8 @@ use crate::constants::AUTHORIZATION_HEADER_KEY; use crate::service::vectordb::vector_db_client::VectorDbClient; -use crate::service::vectordb::{DenseVector, InsertVectorRequest, Payload, PointId, SearchRequest}; +use crate::service::vectordb::{ + ContentType, DenseVector, InsertVectorRequest, Payload, PointId, SearchRequest, +}; use crate::service::{VectorDBService, run_server}; use crate::utils::ServerEndpoint; use api::DbConfig; @@ -95,7 +97,10 @@ async fn test_insert_vector_rpc() { vector: Some(DenseVector { values: test_vec.clone(), }), - payload: Some(Payload::default()), + payload: Some(Payload { + content_type: ContentType::Text as i32, + content: "test".to_string(), + }), }); append_test_auth_header(&mut request, TEST_AUTH_BEARER_TOKEN); @@ -116,6 +121,11 @@ async fn test_insert_vector_rpc() { let point = resp.unwrap().into_inner(); assert_eq!(point.vector.unwrap().values, test_vec); + // payload assertions + let payload = point.payload.unwrap(); + assert_eq!(payload.content_type, ContentType::Text as i32); + assert_eq!(payload.content, "test"); + // insert a new vector with mismatched dimensions let mut request = tonic::Request::new(InsertVectorRequest { vector: Some(DenseVector {