From 4130ba681cf830d2a1676809ac47c73e47660c31 Mon Sep 17 00:00:00 2001 From: Swordsteel Date: Thu, 2 Jan 2025 05:07:29 +0100 Subject: [PATCH] update addDevice to handle violates of foreign key in DeviceService --- src/main/kotlin/ltd/hlaeja/service/DeviceService.kt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/ltd/hlaeja/service/DeviceService.kt b/src/main/kotlin/ltd/hlaeja/service/DeviceService.kt index ab3a868..74304f4 100644 --- a/src/main/kotlin/ltd/hlaeja/service/DeviceService.kt +++ b/src/main/kotlin/ltd/hlaeja/service/DeviceService.kt @@ -5,6 +5,8 @@ import java.time.ZonedDateTime import java.util.UUID import ltd.hlaeja.entity.DeviceEntity import ltd.hlaeja.repository.DeviceRepository +import org.springframework.dao.DataIntegrityViolationException +import org.springframework.http.HttpStatus.BAD_REQUEST import org.springframework.http.HttpStatus.NOT_FOUND import org.springframework.stereotype.Service import org.springframework.web.server.ResponseStatusException @@ -18,8 +20,13 @@ class DeviceService( suspend fun addDevice( type: UUID, - ): DeviceEntity = deviceRepository.save(DeviceEntity(null, ZonedDateTime.now(), type)) - .also { log.debug { "Added device ${it.id}" } } + ): DeviceEntity = try { + deviceRepository.save(DeviceEntity(null, ZonedDateTime.now(), type)) + .also { log.debug { "Added device ${it.id}" } } + } catch (e: DataIntegrityViolationException) { + log.warn { e.localizedMessage } + throw ResponseStatusException(BAD_REQUEST) + } suspend fun getDevice(device: UUID): DeviceEntity = deviceRepository.findById(device) ?.also { log.debug { "Get device ${it.id}" } }