Skip to content
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

[#44] Domain(Facility, Reservation) 및 코드 개선 #45

Merged
merged 13 commits into from
Feb 7, 2024

Conversation

hoa0217
Copy link
Collaborator

@hoa0217 hoa0217 commented Feb 7, 2024

개요

Domain에서 필요한 필드 그리고 필요없는 필드를 추려 ERD를 다시 도출하고 로직을 수정하였으며, 위 과정에서 코드 리팩토링도 함께 진행하였습니다.

작업사항

  • ERD 도출
    image
  • Facility 수정 : minUser(최소수용인원) maxUser(최대수용인원) 추가, facilityType(시설유형)제거
  • TimeRange, DataTimeRange 도출 : 시관관련 비지니스로직을 위임할 임베디드 엔티티 추가
  • Schedule 수정 : FacilitySchedule ➡️ Schedule로 명칭 변경,
    • startDateTime(시작시간) endDateTime(종료시간) ➡️ date(날짜) startTime(시작시간) endTime(종료시간) 으로 분리
    • 스케줄 데이터는 무조건 같은 날짜안에서 시간범위를 갖기때문에 중복해서 날짜를 저장할 필요가없음. 날짜를 분리하여 조회하기에도 편리하게 변경.
  • Reservation 수정 : numOfUser(예약인원) 및 수용인원 validation 추가
  • 사용가능시간 반환로직 수정 : 1일치에 대한 모든 24시간 데이터 제공, available(bool값)으로 이용가능여부를 알려줌.
{
  "hour": 0,
  "available": false
},
{
  "hour": 1,
  "available": true
},

변경로직

  • DTO ➡️ Requset, Reponse로 명칭 변경
    • 요청과 응답을 명확하게 분리
  • 생성자 인수 3개 이하는 Builder패턴 제거
    • 생성자로만으로도 충분히 사용 가능. 오히려 코드가 더 길어짐.
  • 외부에서 쓰이지 않는 메서드 private 처리

f-lab-bot and others added 13 commits January 3, 2024 17:53
- room과 seat에 대한 분류를 제거한다.

Related: #44
- TimeSetting는 해당 객체를 필드로 가짐.

#44
- 스케줄데이터는 같은 날짜에 시간범위갖기때문에 날짜와 시간을 분리함.
- 도메인 명칭 또한 변경

#44
- 수용가능한 최소, 최대인원 추가

#44
- 예약시간 범위를 관리하는 DateTimeRange 도메인 추가 (시간 관련 로직 모두 위임)
- 예약가능한시간를 반환하는 로직 개선(해당 날짜에 모든 시간을 반환하고 available한지 여부를 같이 던짐)

Related: #44
문제상황 : 쿼리를 직접날려 삭제를 실행했기때문에, 영속성컨테이너의 facility의 스케줄데이터는 그대로이다.
- 해결1 : 영속성 컨텍스트를 비운 후 엔티티를 다시 조회하여 데이터 일관성을 보장.
- 해결2 : 엔티티의 데이터를 코드로 직접 삭제해줘도 된다.
2번과정의 경우 데이터 구조가 복잡하기 때문에 코드가 많이 늘어나 1번 선택.

Related: #44
Space에 검증 로직 위임.

Related: #44
@hoa0217 hoa0217 merged commit b691e92 into develop Feb 7, 2024
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants