From 4de6356e14913010edf3ce6409c1195ec835f1ce Mon Sep 17 00:00:00 2001 From: Jan-Niclas Struewer <j.n.struewer@gmail.com> Date: Thu, 14 Dec 2023 17:38:55 +0100 Subject: [PATCH] make tool run db return optional --- .../repository/controller/RepositoryController.kt | 12 ++++++++---- .../repository/service/RepositoryService.kt | 12 +++++++----- .../toolRun/repository/ToolRunRepository.kt | 2 +- .../dataprovider/toolRun/service/ToolRunService.kt | 12 ++++++------ 4 files changed, 22 insertions(+), 16 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 09da2fba..6037e03e 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 @@ -171,12 +171,16 @@ class RepositoryController( false } + val toolRun = toolRunService.getToolRunForRepository( + projectId = id, + includeFindings = isProjectMember + ) ?: throw ResponseStatusException( + HttpStatus.NOT_FOUND, "tool run not found" + ) + return ToolRunResponseDto( isProjectMember = isProjectMember, - toolRun = toolRunService.getToolRunForRepository( - projectId = id, - includeFindings = isProjectMember - ).await() + toolRun = toolRun ) } 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 e5e39e18..55e5ea3b 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 @@ -88,11 +88,13 @@ class RepositoryService( } @Transactional(readOnly = true, propagation = Propagation.REQUIRES_NEW) - fun getToolRunByProjectId(projectId: Long): ToolRunDto { - val toolEntity = toolRunRepository.findFirstByRepository_ProjectIdOrderByCreatedAtDesc(projectId) - return ToolRunDto.getDtoFromEntity( - toolEntity - ) + fun getToolRunByProjectId(projectId: Long): ToolRunDto? { + toolRunRepository.findFirstByRepository_ProjectIdOrderByCreatedAtDesc(projectId)?.let { toolRunEntity -> + return ToolRunDto.getDtoFromEntity( + toolRunEntity + ) + } + return null } @Transactional(readOnly = false, propagation = Propagation.REQUIRES_NEW) diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/repository/ToolRunRepository.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/repository/ToolRunRepository.kt index 14237190..0f222226 100644 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/repository/ToolRunRepository.kt +++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/repository/ToolRunRepository.kt @@ -8,5 +8,5 @@ import java.util.* @Transactional(propagation = Propagation.MANDATORY) interface ToolRunRepository : JpaRepository<ToolRunEntity, UUID> { - fun findFirstByRepository_ProjectIdOrderByCreatedAtDesc(projectId: Long): ToolRunEntity + fun findFirstByRepository_ProjectIdOrderByCreatedAtDesc(projectId: Long): ToolRunEntity? } diff --git a/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/service/ToolRunService.kt b/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/service/ToolRunService.kt index aa8dfc74..62ac29ce 100644 --- a/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/service/ToolRunService.kt +++ b/src/main/kotlin/de/fraunhofer/iem/dataprovider/toolRun/service/ToolRunService.kt @@ -5,7 +5,6 @@ import de.fraunhofer.iem.dataprovider.logger.getLogger import de.fraunhofer.iem.dataprovider.repository.service.RepositoryService import de.fraunhofer.iem.dataprovider.tool.enumeration.ToolType import de.fraunhofer.iem.dataprovider.toolRun.dto.ToolRunDto -import de.fraunhofer.iem.dataprovider.toolRun.repository.ToolRunRepository import de.fraunhofer.iem.dataprovider.tools.gitlab.service.RepositoryDetailsService import de.fraunhofer.iem.dataprovider.tools.occmd.service.OccmdService import de.fraunhofer.iem.dataprovider.tools.ort.service.OrtService @@ -19,7 +18,6 @@ class ToolRunService( private val kpiService: KPIService, private val ortService: OrtService, private val occmdService: OccmdService, - private val toolRunRepository: ToolRunRepository, private val repositoryService: RepositoryService ) { @@ -122,15 +120,17 @@ class ToolRunService( suspend fun getToolRunForRepository( projectId: Long, includeFindings: Boolean = false - ): Deferred<ToolRunDto> = defaultScope.async { + ): ToolRunDto? { - val toolRun = repositoryService.getToolRunByProjectId(projectId = projectId) + val toolRun = withContext(Dispatchers.IO) { + repositoryService.getToolRunByProjectId(projectId = projectId) + } val apiJobs: MutableList<Job> = mutableListOf() if (includeFindings) { - toolRun.tools.forEach { tool -> + toolRun?.tools?.forEach { tool -> when (tool.toolType) { ToolType.ORT -> { apiJobs.add( @@ -157,7 +157,7 @@ class ToolRunService( } } - return@async toolRun + return toolRun } -- GitLab