Răsfoiți Sursa

feat: update gRPC handlers for two-level file storage fields

Fszontagh 4 luni în urmă
părinte
comite
46cb2e8969
1 a modificat fișierele cu 18 adăugiri și 7 ștergeri
  1. 18 7
      service/src/database_grpc_impl.cpp

+ 18 - 7
service/src/database_grpc_impl.cpp

@@ -628,7 +628,6 @@ grpc::Status DatabaseGrpcImpl::UploadFile(
     pb::UploadFileResponse* response
 ) {
     pb::FileChunk chunk;
-    std::string fileId;
     std::vector<uint8_t> fileData;
     pb::FileMetadata metadata;
 
@@ -647,15 +646,17 @@ grpc::Status DatabaseGrpcImpl::UploadFile(
         info.mimeType = metadata.mime_type();
         info.fileType = metadata.file_type();
         info.relatedId = metadata.related_id();
+        info.isPublic = metadata.is_public();
         for (const auto& [key, value] : metadata.metadata()) {
             info.metadata[key] = value;
         }
 
-        fileId = files_.storeFile(fileData, info);
+        auto result = files_.storeFile(fileData, info);
 
-        response->set_id(fileId);
-        response->set_size(fileData.size());
-        response->set_checksum(files_.getChecksum(fileId));
+        response->set_id(result.id);
+        response->set_size(result.size);
+        response->set_checksum(result.checksum);
+        response->set_deduplicated(result.deduplicated);
 
         return grpc::Status::OK;
 
@@ -683,6 +684,10 @@ grpc::Status DatabaseGrpcImpl::DownloadFile(
         meta->set_mime_type(info->mimeType);
         meta->set_size(info->size);
         meta->set_file_type(info->fileType);
+        meta->set_is_public(info->isPublic);
+        for (const auto& [key, value] : info->metadata) {
+            (*meta->mutable_metadata())[key] = value;
+        }
         writer->Write(metadataChunk);
 
         // Stream file data in chunks
@@ -731,6 +736,8 @@ grpc::Status DatabaseGrpcImpl::GetFileInfo(
     response->set_related_id(info->relatedId);
     response->set_checksum(info->checksum);
     response->set_created_at(info->createdAt);
+    response->set_is_public(info->isPublic);
+    response->set_ref_count(files_.getRefCount(info->checksum));
     for (const auto& [key, value] : info->metadata) {
         (*response->mutable_metadata())[key] = value;
     }
@@ -743,8 +750,11 @@ grpc::Status DatabaseGrpcImpl::ListFiles(
     const pb::ListFilesRequest* request,
     pb::ListFilesResponse* response
 ) {
-    auto result = files_.listFiles(request->file_type(), request->related_id(),
-                                   request->limit(), request->offset());
+    auto result = files_.listFiles(
+        request->file_type(), request->related_id(),
+        request->limit(), request->offset(),
+        request->checksum()
+    );
 
     response->set_total_count(result.totalCount);
     response->set_has_more(result.hasMore);
@@ -759,6 +769,7 @@ grpc::Status DatabaseGrpcImpl::ListFiles(
         file->set_related_id(info.relatedId);
         file->set_checksum(info.checksum);
         file->set_created_at(info.createdAt);
+        file->set_is_public(info.isPublic);
     }
 
     return grpc::Status::OK;