오늘은 정말 큰일날 뻔했다. 갑자기 노트북이 작동을 안해서 인터넷이 자주 끊기는걸로 모자라서 아예 날 죽이려고 하는구나 싶었다. 노트북이 맛이 가버리면 안에 넣어놓은 자료도 아직 커밋 안해놨는데 처음부터 다시해야하지 않겠는가? 그렇게 되면 그나마 기능구현 초반이라 복구는 쉽겠지만 새 노트북도 구해야하고.. 그런데 다행히 몇시간만에 제대로 작동시켰다. 그리고 현재까지 작업한걸 커밋해서 올렸다. 미완성이지만. 또 이런일이 일어날수도 있으니까.
product의 crud를 얼추 구현해 냈는데, 껍데기 정도라 손을 더 대야한다. 거기다 페이징을 적용해야하는데, 이건 자료가 있으니 따로 공부해봐야하고 소프트 딜리트도 해본적이 없으니 제대로 작동하는지 테스트도 해봐야 한다. 그것아 다끝나면 productStock를 완성해서 연결해야 한다.
그리고 소프트 딜리트는 처음 해보는 거라 중요한데, 소프트딜리트에 deleted_at으로 시간을 넣고 null이면 검색가능, 시간있으면 불가
삭제로직이 deleted_at만 업데이트 하도록 .now()를 사용해야 한다.
컽트롤러는 우선 삭제가 아니기 때문에 put로 설정해두고,
@PutMapping("/{id}/delete")
fun deleteProduct(@PathVariable id: Long): ResponseEntity<ProductResponse> {
val product = productService.deleteProduct(id)
return ResponseEntity.ok(ProductResponse(product))
}
서비스는
fun deleteProduct(id: Long): Product
서비스임플은
override fun deleteProduct(id: Long): Product {
val product = productRepository.findById(id)
.orElseThrow { RuntimeException("Product not found") }
product.deletedAt = LocalDateTime.now()
return productRepository.save(product)
}
그런데 이것만으론 삭제해도 소프트딜리트는 삭제가 아니기 때문에 get로 보면 보인다. 그걸 막으려면
get을 수정해야 한다