🧱 현재 Prisma 스키마 구조 요약
- User: 유저 정보, 관계: UserCard, Sale, Purchase 등
- PhotoCard: 포토카드 원본 정보 (이름, 설명, 이미지, 등급, 장르 등)
- UserCard: 개별 유저가 소유한 실물 포토카드 단위
- Sale: 특정 UserCard를 판매하는 정보
- Purchase: 판매 완료 정보
- ExchangeProposal / Notification / PointLog 등은 부가적인 거래 기능
판매 흐름:
- 포토카드 A 생성 → UserCard 3개 생성 (각각 다른 id)
- A 유저가 2개 판매 등록 → Sale 테이블에 2건 생성 (UserCard 기준)
🧨 발생한 문제 요약
- UI는 포토카드 단위로 묶어서 보여주는데, DB는 UserCard 단위로 분리됨
- 즉, 동일 포토카드가 여러 장 판매 중이어도 각기 다른 Sale로 저장됨
- 이를 포토카드 단위로 그룹핑하려면 복잡한 쿼리/로직 필요
💡 문제에 대한 분석 및 접근 방법
❗ groupBy + 관계 join 문제
userCard.groupBy({ by: ['photoCardId'] })
자체는 되지만,
- photoCard의 name, imageUrl 등 상세정보는 groupBy 결과로 불러올 수 없음
- 결국 두 번 쿼리하고 JS에서 매핑하는 방식 필요함:
- GroupBy로 photoCardId별 판매 수량 가져옴
- findMany로 photoCard 정보 불러옴
- JS에서 매핑 후 반환