From 2d957d2baa433a35027ad3aa72295385c2e0ec61 Mon Sep 17 00:00:00 2001
From: Jan-Niclas Struewer <j.n.struewer@gmail.com>
Date: Thu, 14 Dec 2023 10:07:16 +0100
Subject: [PATCH] updated save serialization order for tool runs

---
 .../dataprovider/repository/entity/RepositoryEntity.kt    | 2 +-
 .../dataprovider/repository/service/RepositoryService.kt  | 8 +++++++-
 .../iem/dataprovider/toolRun/service/ToolRunDbService.kt  | 4 ++--
 3 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/entity/RepositoryEntity.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/entity/RepositoryEntity.kt
index 54407c6c..d0dfbcf7 100644
--- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/entity/RepositoryEntity.kt
+++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/entity/RepositoryEntity.kt
@@ -20,7 +20,7 @@ class RepositoryEntity(
     @OrderBy("last_updated_at DESC")
     @OneToMany(
         mappedBy = "repository",
-        cascade = [CascadeType.MERGE, CascadeType.REFRESH, CascadeType.REMOVE, CascadeType.DETACH],
+        cascade = [CascadeType.ALL],
         orphanRemoval = true
     )
     val toolRuns: MutableList<ToolRunEntity> = mutableListOf(),
diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/service/RepositoryService.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/service/RepositoryService.kt
index 9b7c683f..082476f3 100644
--- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/service/RepositoryService.kt
+++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/service/RepositoryService.kt
@@ -24,7 +24,7 @@ class RepositoryService(
     @Transactional
     fun getOrCreate(gitRepository: RepositoryCreateDto): RepositoryEntity {
         logger.info("Checking if repository with ${gitRepository.id} exists")
-        var repo = repositoryRepository.findByProjectId(gitRepository.id)
+        var repo = findRepoById(gitRepository.id)
         if (repo == null) {
             logger.info("Creating repository with id ${gitRepository.id}")
             repo = repositoryRepository.save(gitRepository.toDbObject())
@@ -32,6 +32,10 @@ class RepositoryService(
         return repo
     }
 
+    fun saveRepository(repositoryEntity: RepositoryEntity) {
+        repositoryRepository.saveAndFlush(repositoryEntity)
+    }
+
     /**
      * Queries the gitlab api to get the repo name, url, and id.
      */
@@ -39,6 +43,7 @@ class RepositoryService(
         return openCodeGitlabApi.getRepositoryInfo(projectId)
     }
 
+    @Transactional(readOnly = true)
     fun findRepoById(projectId: Long): RepositoryEntity? {
         return repositoryRepository.findByProjectId(projectId)
     }
@@ -47,6 +52,7 @@ class RepositoryService(
         return repositoryRepository.findAll()
     }
 
+    @Transactional
     fun updateVisualizationConsent(projectId: Long, repositoryConsentDto: RepositoryConsentDto) {
         val repo = findRepoById(projectId)
         if (repo != null) {
diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/service/ToolRunDbService.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/service/ToolRunDbService.kt
index f1461731..3d7de6f7 100644
--- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/service/ToolRunDbService.kt
+++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/service/ToolRunDbService.kt
@@ -49,8 +49,8 @@ class ToolRunDbService(
             toolRun.kpiEntities.addAll(kpis)
         }
 
-
-        toolRunRepository.saveAndFlush(toolRun)
+        repo.toolRuns.add(toolRun)
+        repositoryService.saveRepository(repo)
     }
 
 
-- 
GitLab