From 52ec076def51e83d7d48f9ff981f36528a761fd8 Mon Sep 17 00:00:00 2001
From: Jan-Niclas Struewer <j.n.struewer@gmail.com>
Date: Thu, 14 Dec 2023 09:59:28 +0100
Subject: [PATCH] Updated visualization consent path

---
 .../fraunhofer/iem/dataprovider/configuration/ApiPaths.kt  | 2 +-
 .../repository/controller/RepositoryController.kt          | 7 +++++--
 .../dataprovider/repository/dto/RepositoryConsentDto.kt    | 2 +-
 .../dataprovider/repository/service/RepositoryService.kt   | 6 ++++--
 4 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/configuration/ApiPaths.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/configuration/ApiPaths.kt
index 188d2b26..aa70c7e0 100644
--- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/configuration/ApiPaths.kt
+++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/configuration/ApiPaths.kt
@@ -18,6 +18,6 @@ object ApiPaths {
 
     const val REPOSITORY_ID = "$REPOSITORY/{id}"
     const val REPOSITORY_TOOL_RUN = "$REPOSITORY/{id}/toolrun"
-    const val REPOSITORY_UPDATE_CONSENT = "$REPOSITORY/consent"
+    const val REPOSITORY_UPDATE_CONSENT = "$REPOSITORY/{id}/consent"
     const val REPOSITORY_VALIDATE_USER = "$REPOSITORY/{id}/validateUser"
 }
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 04190660..8e0941fb 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
@@ -158,8 +158,11 @@ class RepositoryController(
     }
 
     @PostMapping(ApiPaths.REPOSITORY_UPDATE_CONSENT)
-    suspend fun updateRepositoryConsent(@RequestBody repositoryConsentDto: RepositoryConsentDto) {
-        repositoryService.updateVisualizationConsent(repositoryConsentDto)
+    suspend fun updateRepositoryConsent(
+        @PathVariable id: Long,
+        @RequestBody repositoryConsentDto: RepositoryConsentDto
+    ) {
+        repositoryService.updateVisualizationConsent(id, repositoryConsentDto)
     }
 
     @PostMapping(ApiPaths.REPOSITORY_VALIDATE_USER)
diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/dto/RepositoryConsentDto.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/dto/RepositoryConsentDto.kt
index 36fdc4a6..a9851d3b 100644
--- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/dto/RepositoryConsentDto.kt
+++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/repository/dto/RepositoryConsentDto.kt
@@ -1,3 +1,3 @@
 package de.fraunhofer.iem.dataprovider.repository.dto
 
-data class RepositoryConsentDto(val consent: Boolean, val projectId: Long)
+data class RepositoryConsentDto(val consent: Boolean)
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 2d1bc0b0..9b7c683f 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
@@ -7,6 +7,7 @@ import de.fraunhofer.iem.dataprovider.repository.dto.RepositoryCreateDto
 import de.fraunhofer.iem.dataprovider.repository.entity.RepositoryEntity
 import de.fraunhofer.iem.dataprovider.repository.repository.RepositoryRepository
 import org.springframework.stereotype.Service
+import org.springframework.transaction.annotation.Transactional
 
 @Service
 class RepositoryService(
@@ -20,6 +21,7 @@ class RepositoryService(
      * Either creates or returns a repository entity based upon its
      * opencode repository id.
      */
+    @Transactional
     fun getOrCreate(gitRepository: RepositoryCreateDto): RepositoryEntity {
         logger.info("Checking if repository with ${gitRepository.id} exists")
         var repo = repositoryRepository.findByProjectId(gitRepository.id)
@@ -45,8 +47,8 @@ class RepositoryService(
         return repositoryRepository.findAll()
     }
 
-    fun updateVisualizationConsent(repositoryConsentDto: RepositoryConsentDto) {
-        val repo = findRepoById(repositoryConsentDto.projectId)
+    fun updateVisualizationConsent(projectId: Long, repositoryConsentDto: RepositoryConsentDto) {
+        val repo = findRepoById(projectId)
         if (repo != null) {
             repo.visualizationConsent = repositoryConsentDto.consent
             logger.info("Updated visualization consent $repositoryConsentDto")
-- 
GitLab