woowacourse-teams / 2023-festa-go

🎪 페스타고, 대학 축제를 더욱 즐겁게!
71 stars 8 forks source link

[BE] feat: 새로운 티켓, 티켓팅 도메인 추가 및 레거시 코드 마킹 (#1007-1) #1008

Open seokjin8678 opened 3 months ago

seokjin8678 commented 3 months ago

📌 관련 이슈

✨ PR 세부 내용

이슈에 남긴 문제점을 개선한 새로운 티켓 생성, 티켓팅 로직을 추가했습니다.

기능이 많은 관계로 각 feat별로 브랜치를 나눠서 PR 올립니다!

해당 PR은 새로운 도메인인 NewTicket, StageTicket, ReserveTicket에 대한 추가와 단위 테스트로 작성되었습니다.

StageTicket은 JPA의 상속 전략을 사용해 생성되었습니다.

이유는 이슈에 남긴 첫 번째 문제를 해결하려고 하기 위함입니다.

추후 공연이 아닌 행사에 대해 티켓을 생성하고 싶으면 NewTicket을 상속한 엔티티를 추가하면 됩니다.

따라서 예매된 티켓의 생성 책임은 NewTicket에 추상 메서드로 작성되어 있습니다. (이 때문에 양방향 의존이 발생하는데, 예매에 관련된 정보를 알고있는 객체가 NewTicket이라서 오히려 양방향 의존을 가지게 하는게 맞지 않나 싶네요. 추가로 ticket 패키지와 ticketing 패키지가 분리되어 있는데 하나로 합쳐도 괜찮을 것 같습니다.)

또한 예매 로직의 검증이 서로 분리되어 있는데, 이는 입장 시간을 계산하려고 시퀀스를 구할 때, 시퀀스가 롤백이 되면 안되기에 별도로 분리하였습니다. (시퀀스 생성 후 예외 발생하면 해당 시퀀스 값이 사라짐, 롤백하려고 시도할 시 동시에 오는 요청 때문에 같은 시퀀스를 가질 위험이 있음)

세부 예매 코드는 이후 PR에 있으니 참고하시면 될 것 같습니다.

그 외 의도했던 내용에 대해선 코드에 리뷰로 남기겠습니다!

github-actions[bot] commented 3 months ago

Test Results

254 files  254 suites   30s :stopwatch: 835 tests 835 :white_check_mark: 0 :zzz: 0 :x: 860 runs  860 :white_check_mark: 0 :zzz: 0 :x:

Results for commit 95038693.