codedang
codedang copied to clipboard
Nestjs 예외 처리 구조 개선
Describe the problem and solution
Prisma Write Query에 선행되는 Read Query 제거
prisma query를 호출하는 서비스 메서드 중 일부 메서드에서는 write query 전에 read query를 1회 이상 호출합니다.
예를 들어, 특정 notice를 업데이트하기 전에 해당 notice가 존재하는지 확인하기 위해 prisma.notice.findUnique
메서드를 호출하는 식입니다.
그러나, 사전 조회 연산 없이도 prisma.notice.update
를 호출했을 때 대상이 확인되지 않으면 PrismaClientKnownRequestError
를 받아 볼 수 있습니다. 어떤 PrismaClientKnownRequestError
인지는 error.code
로 구분할 수 있습니다.
따라서, 사전 조회 연산을 제거하고 서비스 메서드에서 PrismaClientKnownRequestError
를 내보냄으로써 불필요한 연산을 줄여 성능을 높이고자 합니다.
서비스 메서드에서 발생하는 PrismaClientKnownRequestError를 비즈니스 예외로 변경
일부 메서드에서는 PrismaClientKnownRequestError
를 발생시키는 경우, 해당 예외를 컨트롤러 단에서 처리합니다.
하지만 이 또한 비즈니스 예외로 감쌀 수 있는 케이스에 해당된다고 봅니다.
PrismaClientKnownRequestError
를 포함하여, 서비스에서 의도적으로 발생시키거나 발생할 것으로 예상되는 예외는 모두 비즈니스 예외에 포함시키고, 컨트롤러 단에서는 정의된 비즈니스 예외만 처리하도록 변경합니다.
Validations
- [X] Follow our Code of Conduct
- [X] Read the Contributing Guidelines
- [X] Check that there isn't already an issue