refactor services

This commit is contained in:
Denis Savosin
2024-10-15 13:51:28 +07:00
parent 3b34a2989d
commit 95a3cafbad
2 changed files with 43 additions and 54 deletions

View File

@@ -2,8 +2,8 @@ package com.github.dannecron.demo.services.database.city
import com.github.dannecron.demo.models.City import com.github.dannecron.demo.models.City
import com.github.dannecron.demo.providers.CityRepository import com.github.dannecron.demo.providers.CityRepository
import com.github.dannecron.demo.services.database.exceptions.CityNotFoundException
import com.github.dannecron.demo.services.database.exceptions.AlreadyDeletedException import com.github.dannecron.demo.services.database.exceptions.AlreadyDeletedException
import com.github.dannecron.demo.services.database.exceptions.CityNotFoundException
import com.github.dannecron.demo.services.kafka.dto.CityCreateDto import com.github.dannecron.demo.services.kafka.dto.CityCreateDto
import java.time.OffsetDateTime import java.time.OffsetDateTime
import java.time.format.DateTimeFormatter import java.time.format.DateTimeFormatter
@@ -14,33 +14,30 @@ class CityServiceImpl(
): CityService { ): CityService {
override fun findByGuid(guid: UUID): City? = cityRepository.findByGuid(guid) override fun findByGuid(guid: UUID): City? = cityRepository.findByGuid(guid)
override fun create(name: String): City { override fun create(name: String): City = City(
val city = City(
id = null, id = null,
guid = UUID.randomUUID(), guid = UUID.randomUUID(),
name = name, name = name,
createdAt = OffsetDateTime.now(), createdAt = OffsetDateTime.now(),
updatedAt = null, updatedAt = null,
deletedAt = null, deletedAt = null,
) ).let {
cityRepository.save(it)
return cityRepository.save(city)
} }
override fun create(kafkaCityDto: CityCreateDto): City { override fun create(kafkaCityDto: CityCreateDto): City = City(
val updatedAt = kafkaCityDto.updatedAt
val deletedAt = kafkaCityDto.deletedAt
val city = City(
id = null, id = null,
guid = UUID.fromString(kafkaCityDto.guid), guid = UUID.fromString(kafkaCityDto.guid),
name = kafkaCityDto.name, name = kafkaCityDto.name,
createdAt = OffsetDateTime.parse(kafkaCityDto.createdAt, DateTimeFormatter.ISO_OFFSET_DATE_TIME), createdAt = OffsetDateTime.parse(kafkaCityDto.createdAt, DateTimeFormatter.ISO_OFFSET_DATE_TIME),
updatedAt = if (updatedAt != null) OffsetDateTime.parse(updatedAt, DateTimeFormatter.ISO_OFFSET_DATE_TIME) else null, updatedAt = kafkaCityDto.deletedAt?.let {
deletedAt = if (deletedAt != null) OffsetDateTime.parse(deletedAt, DateTimeFormatter.ISO_OFFSET_DATE_TIME) else null, OffsetDateTime.parse(it, DateTimeFormatter.ISO_OFFSET_DATE_TIME)
) },
deletedAt = kafkaCityDto.deletedAt?.let {
return cityRepository.save(city) OffsetDateTime.parse(it, DateTimeFormatter.ISO_OFFSET_DATE_TIME)
},
).let {
cityRepository.save(it)
} }
override fun delete(guid: UUID): City { override fun delete(guid: UUID): City {
@@ -50,10 +47,10 @@ class CityServiceImpl(
throw AlreadyDeletedException() throw AlreadyDeletedException()
} }
val deletedCity = city.copy( return cityRepository.save(
city.copy(
deletedAt = OffsetDateTime.now(), deletedAt = OffsetDateTime.now(),
) )
)
return cityRepository.save(deletedCity)
} }
} }

View File

@@ -12,32 +12,24 @@ class CustomerServiceImpl(
private val customerRepository: CustomerRepository, private val customerRepository: CustomerRepository,
private val cityRepository: CityRepository private val cityRepository: CityRepository
): CustomerService { ): CustomerService {
override fun findByGuid(guid: UUID): CustomerExtended? { override fun findByGuid(guid: UUID): CustomerExtended? = customerRepository.findByGuid(guid)
val customer = customerRepository.findByGuid(guid) ?: return null ?.let {
customer -> CustomerExtended(
if (customer.cityId == null) { customer = customer,
return CustomerExtended(customer, null) city = customer.cityId?.let { cityId -> cityRepository.findById(cityId).orElse(null) }
)
} }
val city = cityRepository.findById(customer.cityId) override fun create(name: String, cityGuid: UUID?): Customer = Customer(
return CustomerExtended(customer, city.orElse(null))
}
override fun create(name: String, cityGuid: UUID?): Customer {
val cityId: Long? = cityGuid?.let {
cityRepository.findByGuid(it)?.id ?: throw CityNotFoundException()
}
val customer = Customer(
id = null, id = null,
guid = UUID.randomUUID(), guid = UUID.randomUUID(),
name = name, name = name,
cityId = cityId, cityId = cityGuid?.let {
cityRepository.findByGuid(it)?.id ?: throw CityNotFoundException()
},
createdAt = OffsetDateTime.now(), createdAt = OffsetDateTime.now(),
updatedAt = null, updatedAt = null,
) ).let {
customerRepository.save(it)
return customerRepository.save(customer)
} }
} }