add new dto, extend city service interface

This commit is contained in:
Denis Savosin
2024-10-02 16:54:09 +07:00
parent 11f5fb4ea7
commit 722535c9db
3 changed files with 38 additions and 2 deletions

View File

@@ -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?

View File

@@ -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()

View File

@@ -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?,
)