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}" } }