From 722535c9db1804464053d4ff16ea00832d0de84d Mon Sep 17 00:00:00 2001 From: Denis Savosin Date: Wed, 2 Oct 2024 16:54:09 +0700 Subject: [PATCH] add new dto, extend city service interface --- .../services/database/city/CityService.kt | 4 +++- .../services/database/city/CityServiceImpl.kt | 20 ++++++++++++++++++- .../demo/services/kafka/dto/CityCreateDto.kt | 16 +++++++++++++++ 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 src/main/kotlin/com/example/demo/services/kafka/dto/CityCreateDto.kt diff --git a/src/main/kotlin/com/example/demo/services/database/city/CityService.kt b/src/main/kotlin/com/example/demo/services/database/city/CityService.kt index dd3c113..2cd3d6c 100644 --- a/src/main/kotlin/com/example/demo/services/database/city/CityService.kt +++ b/src/main/kotlin/com/example/demo/services/database/city/CityService.kt @@ -1,8 +1,9 @@ package com.example.demo.services.database.city import com.example.demo.models.City -import com.example.demo.services.database.exceptions.AlreadyDeletedException import com.example.demo.services.database.city.exceptions.CityNotFoundException +import com.example.demo.services.database.exceptions.AlreadyDeletedException +import com.example.demo.services.kafka.dto.CityCreateDto import org.springframework.stereotype.Service import java.util.* @@ -11,6 +12,7 @@ interface CityService { fun findByGuid(guid: UUID): City? fun create(name: String): City? + fun create(kafkaCityDto: CityCreateDto): City? @Throws(CityNotFoundException::class, AlreadyDeletedException::class) fun delete(guid: UUID): City? diff --git a/src/main/kotlin/com/example/demo/services/database/city/CityServiceImpl.kt b/src/main/kotlin/com/example/demo/services/database/city/CityServiceImpl.kt index 918334f..1214e70 100644 --- a/src/main/kotlin/com/example/demo/services/database/city/CityServiceImpl.kt +++ b/src/main/kotlin/com/example/demo/services/database/city/CityServiceImpl.kt @@ -2,9 +2,11 @@ package com.example.demo.services.database.city import com.example.demo.models.City import com.example.demo.providers.CityRepository -import com.example.demo.services.database.exceptions.AlreadyDeletedException import com.example.demo.services.database.city.exceptions.CityNotFoundException +import com.example.demo.services.database.exceptions.AlreadyDeletedException +import com.example.demo.services.kafka.dto.CityCreateDto import java.time.OffsetDateTime +import java.time.format.DateTimeFormatter import java.util.* class CityServiceImpl( @@ -25,6 +27,22 @@ class CityServiceImpl( return cityRepository.save(city) } + override fun create(kafkaCityDto: CityCreateDto): City? { + val updatedAt = kafkaCityDto.updatedAt + val deletedAt = kafkaCityDto.deletedAt + + val city = City( + id = null, + guid = UUID.fromString(kafkaCityDto.guid), + name = kafkaCityDto.name, + createdAt = OffsetDateTime.parse(kafkaCityDto.createdAt, DateTimeFormatter.ISO_OFFSET_DATE_TIME), + updatedAt = if (updatedAt != null) OffsetDateTime.parse(updatedAt, DateTimeFormatter.ISO_OFFSET_DATE_TIME) else null, + deletedAt = if (deletedAt != null) OffsetDateTime.parse(deletedAt, DateTimeFormatter.ISO_OFFSET_DATE_TIME) else null, + ) + + return cityRepository.save(city) + } + override fun delete(guid: UUID): City? { val city = findByGuid(guid) ?: throw CityNotFoundException() diff --git a/src/main/kotlin/com/example/demo/services/kafka/dto/CityCreateDto.kt b/src/main/kotlin/com/example/demo/services/kafka/dto/CityCreateDto.kt new file mode 100644 index 0000000..0a22539 --- /dev/null +++ b/src/main/kotlin/com/example/demo/services/kafka/dto/CityCreateDto.kt @@ -0,0 +1,16 @@ +package com.example.demo.services.kafka.dto + +import com.fasterxml.jackson.annotation.JsonProperty + +data class CityCreateDto ( + @JsonProperty("guid") + val guid: String, + @JsonProperty("name") + val name: String, + @JsonProperty("createdAt") + val createdAt: String, + @JsonProperty("updatedAt") + val updatedAt: String?, + @JsonProperty("deletedAt") + val deletedAt: String?, +)