2024. 3. 6. 21:19ㆍTIL
오늘은 다시 초심으로 돌아가 CRUD 부분을 확인보았다.
1. Seat, Place 수정
기존 Place에 어드레스가 없어서 추가를 해줬다.
이는 곧 추가 구현할 동적 쿼리에서 주소를 기반으로 검색을 하는 작업에 사용될 것이다.
또 Place와 Seat 사이에 관계를 걸어줘서 Place가 수정이 되면 Seat도 수정이 될수 있도록 해주었다.
그리고 Seat 엔티티에 최대 좌석 갯수와 각종 함수들을 추가해줬다.
fun isFull(): Boolean {
return (seatR >= maxSeatR && seatS >= maxSeatS && seatA >= maxSeatA)
}
fun isClosed(): Boolean {
return bookable == Bookable.CLOSED
}
fun close() {
bookable = Bookable.CLOSED
}
fun decreaseSeat(grade: TicketGrade, count: Int) {
when(grade){
TicketGrade.R -> seatR -= count
TicketGrade.S -> seatS -= count
TicketGrade.A -> seatA -= count
}
}
fun increaseSeat(grade: TicketGrade, count: Int) {
when(grade){
TicketGrade.R -> seatR += count
TicketGrade.S -> seatS += count
TicketGrade.A -> seatA += count
}
}
2. TicketRequest 수정
현재 우리가 짜놓은 티켓패키지는
한명이 한개씩만 살수 있도록 구현되어 있다.
하지만 보통 한명이 여러개의 티켓을 사는 경우가 더 많을 것이고 지금 짜놓은 티켓패키지의 수정이 필요했다.
일단 좌석을 여러개 고르는 시점은 티켓 리퀘스트를 만드는 시점에서 이뤄질것이라고 판단하였다.
이전까지 티켓 리퀘스트에서 그냥 좌석등급과 번호를 받아서 티켓을 생성하였지만
이제는 여러개를 받아야하니 리스트화시킬수 있는 방법을 찾아야했다.
그래서 나온 방법이 Pair 방법
이 Pair를 리스트화 시켜서 한쪽엔 등급, 한쪽엔 좌석번호를 입력하는것이다.
package com.codersgate.ticketraider.domain.ticket.dto
import com.codersgate.ticketraider.domain.ticket.entity.TicketGrade
import jakarta.validation.constraints.NotNull
import java.time.LocalDate
data class CreateTicketRequest(
@field:NotNull // 어떻게 validation?
val date: LocalDate,
@field:NotNull
val eventId: Long,
) {
val seatList = mutableListOf<Pair<TicketGrade,Int>>()
}
이렇게하면 한번에 여러개의 좌석을 입력할수 있다.
스웨거 에서 입력할때 에는 살짝 불편할수 있지만 나중에 프론트에서만 잘 연결시키면 될 문제니까 이부분은 넘어갔다.
오늘은 여러모로 되돌아 보는 날이였다.
여러가지 욕심만 앞서서 기능만 추가하던 내가 다시 유저입장에서 우리가 만든 서비스를 이용할때 어떠한 불편한 점이 생길거고 그를 반영하여 CRUD를 다시 작성해보는 계기가 되었다.
'TIL' 카테고리의 다른 글
20240308 (금) 최종 프로젝트 티켓레이더 2주차 - 끝이 보이기 시작한 CRUD (0) | 2024.03.08 |
---|---|
20240307 (목) 최종 프로젝트 티켓레이더 2주차 - CRUD CRUD.. (1) | 2024.03.07 |
20240305 (화) 최종 프로젝트 티켓레이더 2주차 - Lock 구현 (1) | 2024.03.05 |
20240304 (월) 최종 프로젝트 티켓레이더 2주차 - Test-code (0) | 2024.03.04 |
20240229 (목) 최종 프로젝트 티켓레이더 1주차 - CRUD 마무리단계 (0) | 2024.02.29 |