From 804153a83301a38c16beb560098b1fe695541e39 Mon Sep 17 00:00:00 2001 From: sumedh Date: Fri, 9 Aug 2024 16:49:38 +0530 Subject: [PATCH] git repo delete functionality implemented --- .../FeApi/VectorStoreController.java | 7 +++ .../dto/DeleteGitRepoDetailsRequest.java | 14 +++++ .../apollo/services/DeletionService.java | 55 ++++++++++++++++++- .../apollo/services/StorageProperties.java | 2 +- 4 files changed, 74 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/olympus/apollo/dto/DeleteGitRepoDetailsRequest.java diff --git a/src/main/java/com/olympus/apollo/controllers/FeApi/VectorStoreController.java b/src/main/java/com/olympus/apollo/controllers/FeApi/VectorStoreController.java index 38a808c..0c831ce 100644 --- a/src/main/java/com/olympus/apollo/controllers/FeApi/VectorStoreController.java +++ b/src/main/java/com/olympus/apollo/controllers/FeApi/VectorStoreController.java @@ -1,5 +1,6 @@ package com.olympus.apollo.controllers.FeApi; +import com.olympus.apollo.dto.DeleteGitRepoDetailsRequest; import com.olympus.apollo.dto.DeletionRequest; import com.olympus.apollo.dto.VectorStoreDetails; import com.olympus.apollo.models.VectorStore; @@ -49,4 +50,10 @@ public class VectorStoreController { return "Records Deleted Successfully"; } + @PostMapping("/deleteGitRecords") + public String deleteGitRecords(@RequestBody DeleteGitRepoDetailsRequest deleteGitRepoDetailsRequest){ + deletionService.deleteRecordsOfGitRepo(deleteGitRepoDetailsRequest); + return "Git Records Deleted Successfully"; + } + } diff --git a/src/main/java/com/olympus/apollo/dto/DeleteGitRepoDetailsRequest.java b/src/main/java/com/olympus/apollo/dto/DeleteGitRepoDetailsRequest.java new file mode 100644 index 0000000..1c07751 --- /dev/null +++ b/src/main/java/com/olympus/apollo/dto/DeleteGitRepoDetailsRequest.java @@ -0,0 +1,14 @@ +package com.olympus.apollo.dto; + +import lombok.Getter; +import lombok.Setter; + +@Getter @Setter +public class DeleteGitRepoDetailsRequest { + private String ksGitInfoId; + private String ksGitIngestionInfoId; + private String ksDoctype; + private String ksDocSource; + private String ksFileSource; + private String ksApplicationName; +} diff --git a/src/main/java/com/olympus/apollo/services/DeletionService.java b/src/main/java/com/olympus/apollo/services/DeletionService.java index 650c666..58ae2ed 100644 --- a/src/main/java/com/olympus/apollo/services/DeletionService.java +++ b/src/main/java/com/olympus/apollo/services/DeletionService.java @@ -1,14 +1,14 @@ package com.olympus.apollo.services; +import com.olympus.apollo.dto.DeleteGitRepoDetailsRequest; +import com.olympus.apollo.models.KSGitIngestionInfo; +import com.olympus.apollo.repository.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.olympus.apollo.dto.DeletionRequest; import com.olympus.apollo.dto.VectorStoreMetadataDetails; import com.olympus.apollo.models.VectorStore; -import com.olympus.apollo.repository.KSDocumentRepository; -import com.olympus.apollo.repository.KSIngestionInfoRepository; -import com.olympus.apollo.repository.VectorStoreRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -25,6 +25,12 @@ public class DeletionService { @Autowired private KSIngestionInfoRepository ksIngestionInfoRepository; + @Autowired + private KSGitIngestionInfoRepository ksGitIngestionInfoRepository; + + @Autowired + private KSGitInfoRepository ksGitInfoRepository; + @Autowired private VectorStoreRepository vectorStoreRepository; @@ -67,4 +73,47 @@ public class DeletionService { throw new RuntimeException("An error occurred while deleting records", e); } } + + public void deleteRecordsOfGitRepo(DeleteGitRepoDetailsRequest deleteGitRepoDetailsRequest) { + try { + boolean KSGitInfoExists = deleteGitRepoDetailsRequest.getKsGitInfoId() != null && !deleteGitRepoDetailsRequest.getKsGitInfoId().isEmpty() && ksGitInfoRepository.existsById(deleteGitRepoDetailsRequest.getKsGitInfoId()); + logger.info("KSGitInfo with id {} exists.", deleteGitRepoDetailsRequest.getKsGitInfoId()); + boolean KSGitIngestionInfoExists = deleteGitRepoDetailsRequest.getKsGitIngestionInfoId() != null && !deleteGitRepoDetailsRequest.getKsGitIngestionInfoId().isEmpty() && ksGitIngestionInfoRepository.existsById(deleteGitRepoDetailsRequest.getKsGitIngestionInfoId()); + logger.info("KSGitIngestionInfo with id {} exists.", deleteGitRepoDetailsRequest.getKsGitIngestionInfoId()); + boolean vectorStoreGitDetailsExists = deleteGitRepoDetailsRequest.getKsApplicationName() != null && deleteGitRepoDetailsRequest.getKsDocSource() != null && deleteGitRepoDetailsRequest.getKsFileSource() != null && deleteGitRepoDetailsRequest.getKsDoctype() != null; + logger.info("vectorStoreGitDetails records exists."); + + List vectorStoreMetadataDetails = vectorStoreGitDetailsExists ? vectorStoreRepository.findByMetadata(deleteGitRepoDetailsRequest.getKsDoctype(), deleteGitRepoDetailsRequest.getKsDocSource(), deleteGitRepoDetailsRequest.getKsFileSource(), deleteGitRepoDetailsRequest.getKsApplicationName()) : List.of(); + + if (KSGitInfoExists && KSGitIngestionInfoExists && !vectorStoreMetadataDetails.isEmpty()) { + if (deleteGitRepoDetailsRequest.getKsGitInfoId() != null && !deleteGitRepoDetailsRequest.getKsGitInfoId().isEmpty()) { + ksGitInfoRepository.deleteById(deleteGitRepoDetailsRequest.getKsGitInfoId()); + logger.info("KsGitInfo with id {} deleted successfully.", deleteGitRepoDetailsRequest.getKsGitInfoId()); + } + + if (deleteGitRepoDetailsRequest.getKsGitIngestionInfoId() != null && !deleteGitRepoDetailsRequest.getKsGitIngestionInfoId().isEmpty()) { + ksGitIngestionInfoRepository.deleteById(deleteGitRepoDetailsRequest.getKsGitIngestionInfoId()); + logger.info("KSGitIngestionInfo with id {} deleted successfully.", deleteGitRepoDetailsRequest.getKsGitIngestionInfoId()); + } + + for (VectorStore store : vectorStoreMetadataDetails) { + vectorStoreRepository.deleteById(store.getId()); + logger.info("VectorStore with id {} deleted successfully.", store.getId()); + } + logger.info("All records deleted successfully."); + } else { + if (!KSGitInfoExists) { + logger.warn("getKsGitInfo with id {} does not exist.", deleteGitRepoDetailsRequest.getKsGitInfoId()); + } else if (!KSGitIngestionInfoExists) { + logger.warn("KSGitIngestionInfo with id {} does not exist.", deleteGitRepoDetailsRequest.getKsGitIngestionInfoId()); + } else if (vectorStoreMetadataDetails.isEmpty()) { + logger.warn("No VectorStore Data available"); + + } + } + } catch (Exception e) { + logger.error("An error occurred while deleting records: ", e); + throw new RuntimeException("An error occurred while deleting records", e); + } + } } diff --git a/src/main/java/com/olympus/apollo/services/StorageProperties.java b/src/main/java/com/olympus/apollo/services/StorageProperties.java index a4dce9c..a9e10cd 100644 --- a/src/main/java/com/olympus/apollo/services/StorageProperties.java +++ b/src/main/java/com/olympus/apollo/services/StorageProperties.java @@ -7,7 +7,7 @@ public class StorageProperties { /** * Folder location for storing files */ - private String location = "C:\\Users\\vinayak.c.mishra\\dev\\olympus\\upload-dir"; + private String location = "C:\\Users\\s.shamrao.shinde\\GenAIStorage"; //private String location = "C:\\WindTre\\Repository"; public String getLocation() { return location;