From 9d46de4e2dd26b4dc82b6013eb3b392d737512c5 Mon Sep 17 00:00:00 2001
From: Jan-Niclas Struewer <j.n.struewer@gmail.com>
Date: Tue, 19 Dec 2023 10:15:01 +0100
Subject: [PATCH] updated consent endpoint to create non existing repository
 objects and recalculating KPIs

---
 .../repository/controller/RepositoryController.kt   |  3 +++
 .../repository/dto/RepositoryCreateDto.kt           |  2 +-
 .../repository/service/RepositoryService.kt         | 13 +++++++++----
 3 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/controller/RepositoryController.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/controller/RepositoryController.kt
index 6037e03e..8a4cb378 100644
--- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/controller/RepositoryController.kt
+++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/controller/RepositoryController.kt
@@ -191,6 +191,9 @@ class RepositoryController(
     ) {
         withContext(Dispatchers.IO) {
             repositoryService.updateVisualizationConsent(id, repositoryConsentDto)
+            if (repositoryConsentDto.consent) {
+                toolRunService.createToolRunForRepository(projectId = id)
+            }
         }
     }
 
diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/dto/RepositoryCreateDto.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/dto/RepositoryCreateDto.kt
index 33eb0b8a..db7639e3 100644
--- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/dto/RepositoryCreateDto.kt
+++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/dto/RepositoryCreateDto.kt
@@ -6,7 +6,7 @@ data class RepositoryCreateDto(
     val name: String,
     val uri: String,
     val id: Long,
-    val visualizationConsent: Boolean = false //TODO: we need to check if this is always ok at initialization
+    var visualizationConsent: Boolean = false //TODO: we need to check if this is always ok at initialization
 ) {
     fun toDbObject(): RepositoryEntity {
         return RepositoryEntity(
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 4adfea9b..a75b8cfa 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
@@ -108,13 +108,18 @@ class RepositoryService(
             logger.info("Updated visualization consent $repositoryConsentDto")
             repositoryRepository.save(repo)
         } else {
-            logger.error(
-                "Could not update visualization consent because repo" +
-                    "was not found $repositoryConsentDto"
-            )
+            createRepoWithConsent(projectId)
         }
     }
 
+
+    @Transactional(readOnly = false, propagation = Propagation.MANDATORY)
+    fun createRepoWithConsent(projectId: Long): RepositoryEntity {
+        val repoDto = getRepositoryInfoFromGitlab(projectId)
+        repoDto.visualizationConsent = true
+        return repositoryRepository.save(repoDto.toDbObject())
+    }
+
     @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW)
     fun getAllRepositoriesWithConsent(): List<RepositoryEntity> {
         return repositoryRepository.findByVisualizationConsentTrue()
-- 
GitLab