-
Notifications
You must be signed in to change notification settings - Fork 0
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
Reservation, Room 관련 엔티티 / DTO / API 구현 #39
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ID 초기값 NULL로 설정)
+ createReservation 오류 + isAvailable 자기 자신을 제외한 다른 예약과의 중복 고려하도록 수정
dennis0405
approved these changes
Jan 7, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
availability 추가로 확인하기
lstm |
1 similar comment
lstm |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
📌 Feature Description
기존 민수님께서 구현해두셨던 Room, Reservation Service, Entity, Controller에 덧붙여
크게 네가지 구현을 추가하였습니다.
상세 사항은 노션과 PR에 적고자 합니다.
🔧 Implementation Details
기존 API 구현 사항에서 특정 방에 대한 이미 예약된 건수를 조회하는 것의 필요성에 의문이 제기되어,
특정 방의 예약가능 날짜 / 불가능 날짜 정보를 제공하는 API를 구현하였습니다.
로직은 다음과 같습니다
오류의 원인은
StableObjectStateException
으로 이는 동시성 문제와 관련된 것입니다.그러나, Swagger 테스트시 API를 1번만 실행하여 발생하였기에 Entity save시에 영속성 처리가 안되어있다는 것을 파악하였고
ReviewEntity와 ReservationEntity에서 id 값을 null로 수정하여 Hibernate가 영속성 처리를 스킵하지 않도록 수정하였습니다.
또한 기존 예약건에 대해 update를 할때,
1.6 ~ 1.10 -> 1.6 ~ 1.15로 수정이 불가능하다고 뜨는 이슈와
create 시에 1.10 ~ 1.6과 같이 시작날짜가 더 뒤에 있는 경우 Exception을 처리하도록
isAvailable
함수를 수정하였습니다.주요 변경사항 3) getRooms (전체 방 조회) 에 대한 페이지네이션 구현
GET /rooms?page=0&size=10&sort=string,asc
API 요청 방식에서 sort 기준을 설정하고 있는데, 해당 기준이 필드에 없는 값인 경우 오류가 발생합니다.
이를 해결하고자 ValidatePageable.kt를 작성하여 정렬 기준을 체크하고,
필드에 없는 값인 경우 기본 값으로 셋팅하도록 Controller를 수정하였습니다.
주요 변경사항 4) Reservation DTO, Room DTO 구현
Swagger API 테스트 시마다 너무 많은 정보를 불러와 지연이 생기는 문제를 해결하고자
Controller에 DTO 구현 및 Room, Reservation에 toDTO() 메소드를 구현하여 API 반환 타입을 모두 DTO로 수정하였습니다.
✅ Checklist
📝 Related Issues