Итак, я изучаю Kotlin и учусь, как сделать его чистым с помощью Spring.
Допустим, у меня есть хранилище для пользователя. Entity:
@Repository
interface UserRepository : JpaRepository<User, Long>
Тогда я хочу чтобы удалить пользователя по его id, я сделал что-то вроде этого:
@DeleteMapping("/{id}")
fun deleteById(@PathVariable(value = "id") id: Long): ResponseEntity<Void> {
return t.findById(id).map {
t.delete(it)
ResponseEntity<Void>(HttpStatus.OK)
}.orElse(ResponseEntity.notFound().build())
}
Где t было UserRepository, и оно работало просто отлично и выглядело чистым.
Но потом я захотел получить извлечение объект из базы данных logi c вне контроллера, поэтому я сделал сервис.
Как мне go об удалении объекта через сервис, я сделал что-то вроде этого в классе Service:
fun deleteById(id: Long): Boolean = t.findById(id).map {
t.delete(it)
true
}.orElse(false)
Где t - Репозиторий, тогда в моем классе Controller я внес следующие изменения:
@DeleteMapping("/{id}")
fun deleteById(@PathVariable(value = "id") id: Long): ResponseEntity<Void> = if (t.deleteById(id)) ResponseEntity<Void>(HttpStatus.OK) else ResponseEntity.notFound().build()
Где t - сервис, но выглядит он очень нечистым. Так как же мне go сделать дополнительный слой, подобный Сервису, и сделать код более чистым?