Fix/reservation category#113#115
Conversation
reservation 생성 관련 실패해야하는 케이스를 다수 추가했습니다. - 멘토 프로필에 등록되지 않은 카테고리, 해시태그로 예약 생성 시도하는 케이스 추가
- where조건문 isHide = false일때 조건 추가 - categories: some으로 category를 가진 프로필이어야함. payload category검증됨 - hashtags: payload의 hashtag를 1개라도 가지고 있어야함. payload의 hashtag 1차검증. 이후 isAllHashtagExist를 통해 payload의 모든 hashtag에 대해 mentorProfile에 있는 해시태그인지 검증한다.
|
profile이랑 hashtag junction table 해제하고, 명시적으로 선언하면 이벤트루프 블로킹하는 방식말고, 프리즈마 내에서 처리될 것 같은데 그렇게 바꿔볼까요? |
profile-hashtags many to many 관계를 가지게 하지 않고 별도의 테이블로 두자는 말씀이신지? |
|
직접 컨트롤 했을 때 이점이 어떻게 되나요? |
junction table이라고 불리더라구요. 위처럼 manytomany로 만들어지는 테이블들 장점이 ORM에서 편하게 만들어준다는게 큰 장점입니다.
이게 단점이 관계에 대한 추가적인 설명을 붙일 수가 없다는 겁니다. 근데 제가 지금 저걸 만들려고하는 이유는 hashtag유효성 검증때문인데요, 멘토프로필의 해시태그는 임의의 N개이고, 유저가 입력한 해시태그도 임의의 N개기때문에 지금 어플리케이션 레벨에서 nn 으로 돌아갑니다. |
|
그러면 유효성 검증을 ProfileHashtags.find 와 같은 방법으로 존재하는지 찾아내자..! 하는 아이디어인가요? |
맞아요 최대 5개긴한데, 클라이언트의 요청이 1개일때는 25이고, 클라이언트의 요청이 100개일때는 2500이죠. 근데 저걸 데이터베이스 계층에 던져서 처리하게끔하면 어플리케이션 레벨에서는 부담하는게 적어지겠죵 |
암튼 테이블 만들어서 처리하면 어플리케이션에서 .every 처럼 이벤트루프 블록하는 방식을 회피할수있어서 그렇습니다 |

쿼리 관련해서 저렇게 처리하는 방법밖에 떠오르질 않네요(좋지 않음)
prisma를 사용하다보니, 복잡한 쿼리를 표현하려면 raw쿼리를 사용해야하는데, 유지보수관점에서 좋지 않을 것 같습니다.
prisma자체가 join을 지원하지 않으니, 이렇게 처리해도 성능상으로는 비슷할 것 같습니다.
트랜잭션 추가했습니다. 트랜잭션 처리 안하면 reservation create할때 500에러 발생 가능성 있습니다.