Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nestjs 예외 처리 구조 개선 #1273

Open
3 tasks done
SH9480P opened this issue Jan 29, 2024 · 0 comments
Open
3 tasks done

Nestjs 예외 처리 구조 개선 #1273

SH9480P opened this issue Jan 29, 2024 · 0 comments
Assignees
Labels
p2-nice-to-have 🚦 Priority 2: 기존 동작에 영향은 없지만, 추가되면 좋을 것 ⛳️ team-backend

Comments

@SH9480P
Copy link
Member

SH9480P commented Jan 29, 2024

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

@SH9480P SH9480P added ⛳️ team-backend p2-nice-to-have 🚦 Priority 2: 기존 동작에 영향은 없지만, 추가되면 좋을 것 labels Jan 29, 2024
@SH9480P SH9480P self-assigned this Jan 29, 2024
@SH9480P SH9480P added this to Codedang Jan 29, 2024
@github-project-automation github-project-automation bot moved this to Pending ✋ in Codedang Jan 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
p2-nice-to-have 🚦 Priority 2: 기존 동작에 영향은 없지만, 추가되면 좋을 것 ⛳️ team-backend
Projects
Status: Pending
Development

No branches or pull requests

2 participants