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

[team-2][Miller] STEP1 (1주차 수요일) PR #25

Merged
merged 8 commits into from
May 25, 2022

Conversation

rxdcxdrnine
Copy link

@rxdcxdrnine rxdcxdrnine commented May 25, 2022

안녕하세요, 프레디! airbnb 프로젝트 첫 PR 을 올린 Miller 입니다.

첫 주차에는 요구사항 분석과 ER 다이어그램 작성 등 문서화와,
스프링부트 프로젝트 추가 및 엔티티 구성 등 기초적인 환경 구성에 집중했습니다.


결과물과 구현 사항은 다음과 같습니다.

요구사항 분석 및 ER 다이어그램/논리적 데이터베이스 구성
위키 링크

Github Actions 를 이용한 CI/CD 워크플로우 구성
연습 리포지토리로 Github Actions 를 구성했습니다.
CI 를 위해 build-test 로 이어지는 workflow 와 CD 를 위해 build-deploy 로 이어지는 workflow 를 분리했습니다.
프로젝트 리포지토리의 환경변수 설정이 끝나는대로 파일을 추가할 예정입니다. (추가했습니다!)

schema.sql 파일 작성 및 JPA 엔티티 구성과 validation


리뷰 미리 감사드립니다! 😀

@rxdcxdrnine rxdcxdrnine added the review-BE Improvements or additions to documentation label May 25, 2022
@rxdcxdrnine rxdcxdrnine requested a review from Dae-Hwa May 25, 2022 08:09
@rxdcxdrnine rxdcxdrnine self-assigned this May 25, 2022

jpa:
hibernate:
ddl-auto: validate
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

운영에 사용되는 데이터베이스를 초기화하지 않도록, 기본적인 ddl-auto 옵션을 validate 로 설정했습니다.
현재 프로젝트에서는 create 로 설정하고 진행해도 괜찮을까요?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

사용법을 아시는 것 같아 그렇게 해도 상관없을 것 같아요. 스키마 변경이 잦을거라 예상하시는건가요?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

스키마 변경이 자주 일어나지는 않을 것 같지만, 배포 환경에서 서버를 재시작할 때마다 데이터베이스의 테이블을 drop 하고 다시 create 하는 일이 일어나면 좋지 않을 거라고 생각했습니다!

Comment on lines +31 to +38
@Embedded
private NumberGroup numberGroup;

@Embedded
private NumberCell numberCell;

@Embedded
private RoomOption option;
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

응집도가 높은 필드를 객체로 묶어 임베디드 값 타입으로 구성했습니다.
하지만 과도한 임베디드 타입이 사용되었다고도 느껴지는데 어떤 쪽이 더 좋은 방법일지 궁금합니다!

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

과하게 느껴지셨다면 나뉘어진 데이터들의 묶음이 하나의 값으로 판단될 수 있는지 확인해보시면 좋을 것 같아요. 예를 들어 Location은 위도와 경도가 합쳐져서 하나의 값으로 간주될 수 있겠죠?
간단한 용례는 @Embeddable 어노테이션의 주석을 참고해보시면 좋을 것 같습니다

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Embeddable 처럼 예시가 있는 주석은 처음 보네요!
데이터들의 묶음이 하나의 값으로 판단될 수 있는지 확인한다는 기준을 알려주셔서 감사합니다.

Copy link

@Dae-Hwa Dae-Hwa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

밀러 안녕하세요! 프로젝트 전반적인 세팅을 빠르게 하셨네요
화이팅입니다!
특별히 바꿔야 되는 부분은 없는 것 같아 바로 머지할게요~

@@ -0,0 +1,30 @@
---
name: Bug report
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍


@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "district_id")
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

혹시 구분자를 넣어준 이유가 있을까요? 궁금합니다!

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

구분자가 district_id 에서 district 를 말씀하시는 걸까요?
id 필드는 여러 테이블에서 사용하는만큼, 명확하게 어떤 테이블의 id 필드인지 구분하고자 했습니다.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

district.id 로도 표현이 충분히 되지 않을까 싶었어요 실제로도 그렇게 많이 쓰는데 참고만 해주세요 ㅎㅎ

private List<District> children;

@OneToMany(mappedBy = "district")
private List<Room> rooms;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

국가-시-도 단위로 내려오면서 조회를 하겠다는 의도로 보이네요. 저는 생각못해봤던 방법인데 어떻게 될지 저도 궁금하네요 ㅋㅋ
일반적인 접근으로는 방 같은 단위를 하나의 도메인으로 잡고 위치 정보는 조회 옵션 같은 개념으로 처리를 할 수 있을 것 같아요. 위치정보를 비즈니스 로직이 담기는 단위로 보지 않는다면 방에 대해서 알 필요가 없어도 된다고 생각되기 때문인데요.
주관적일 수도 있는 의견이라 참고만 해주세요! 굳이 말씀 드린 이유는 ERD를 보니 저와 비슷한 생각도 하지 않으셨을까해서 말씀드렸어요

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

말씀하신대로 행정구역에 속한 모든 방의 리스트를 조회하는 일은 없을 것 같습니다.
JPA 로 엔티티를 구성하면서 연관관계 매핑 시에 전부 양방향 매핑을 작성했는데,
말씀하신 것처럼 도메인 별로 접근할 엔티티만 생각하면 위의 연관관계 매핑은 불필요할 것 같습니다!

@Embedded
private Lookup lookup;

@ManyToOne(fetch = FetchType.LAZY)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

Comment on lines +31 to +38
@Embedded
private NumberGroup numberGroup;

@Embedded
private NumberCell numberCell;

@Embedded
private RoomOption option;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

과하게 느껴지셨다면 나뉘어진 데이터들의 묶음이 하나의 값으로 판단될 수 있는지 확인해보시면 좋을 것 같아요. 예를 들어 Location은 위도와 경도가 합쳐져서 하나의 값으로 간주될 수 있겠죠?
간단한 용례는 @Embeddable 어노테이션의 주석을 참고해보시면 좋을 것 같습니다

@@ -0,0 +1,17 @@
spring:
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

특별한 이유가 있을 수도 있지만, 이렇게 차이가 많이나면 test의 하위에 설정을 놓는 것도 방법일 수 있어요. 참고만 해주세요~

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

가능하면 프로필을 다룰 때 헷갈리지 않도록 key 가 아닌 파일 별로 구분했습니다.
dev, test key 의 하위에 프로필을 구성하는 것도 생각해보겠습니다!


jpa:
hibernate:
ddl-auto: validate
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

사용법을 아시는 것 같아 그렇게 해도 상관없을 것 같아요. 스키마 변경이 잦을거라 예상하시는건가요?

(
member_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'member 테이블의 기본 키',
name VARCHAR(39) NOT NULL COMMENT '멤버의 이름',
role VARCHAR(10) NOT NULL COMMENT '멤버의 구분 (ADMIN/USER)',
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

상세한 설명 좋은 것 같아요
여유가 된다면 DB에서는 값을 어떤 식으로 제한할 수 있을지 알아보는 것도 좋을 것 같습니다

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

값을 제한한다는 것이 자료형 (VARCHAR, DOUBLE 등) 에 따라 값을 제한하는 것으로 이해하면 될까요?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ADMIN과 USER로 들어갈 수 있는 값을 제한하는 것을 말씀드린거였습니다~!

CREATE TABLE district
(
district_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'district 테이블의 기본 키',
parent_id INT COMMENT '상위 district 엔티티의 기본 키',
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fk가 걸려야 될 것 같은데, 맞나요?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

앗 놓친 부분 짚어주셔서 감사합니다!!

latitude DOUBLE NOT NULL COMMENT '좌표계에서 숙소의 위도',
lodging_charge DOUBLE NOT NULL COMMENT '숙소의 숙박 요금',
cleaning_charge DOUBLE NOT NULL COMMENT '숙소의 청소 요금',
review_score_lookup DOUBLE COMMENT '숙소의 리뷰 평균 점수 집계',
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이런 방법을 선택한 이유가 어떤건지 여쭤봐도 될까요?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lookup 필드를 말씀하시는 거라면,
room 목록을 조회할 때 room 에 연관된 review 의 평균 점수와 개수를 매번 계산하지 않고,
lookup 필드로 미리 계산한 값을 가지고 있어 조회 시에 성능이 더 좋은 쿼리를 작성할 수 있을 것이라고 생각했습니다.

district 테이블에도 lookup 필드를 만들고 리뷰를 작성할 때마다 행정구역의 lookup 필드도 업데이트해,
인기있는 여행지를 불러올 때 리뷰의 lookup 필드 점수가 높은 행정구역 목록을 조회하는 쿼리를 작성할 예정입니다.

Copy link

@Dae-Hwa Dae-Hwa May 26, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

그렇다면 lookup보다는 count로 네이밍하거나 score로 표현하는게 더 적절할 것 같다는 생각이 드네요~ ㅎㅎ
그리고 미리 계산해둔 값과 실제 데이터가 안 맞아떨어질 수가 있을거에요. 민감한 데이터가 아니라 수치가 안 맞아도 큰 문제는 없을 것 같지만 여유가 되신다면 이런 부분도 고려해보시면 좋을 것 같습니다!

@Dae-Hwa Dae-Hwa merged commit dd58674 into codesquad-members-2022:Team_02 May 25, 2022
@rxdcxdrnine rxdcxdrnine deleted the backend-dev branch May 26, 2022 02:28
street62 pushed a commit that referenced this pull request May 26, 2022
접근성 개선 + MUI 버전 업데이트 + 배경 이미지 너비 수정
jminie-o8o added a commit that referenced this pull request May 27, 2022
ghost pushed a commit that referenced this pull request Jun 1, 2022
* Update issue templates

* Update issue templates

* Update issue templates

* Update issue templates

* [FE] 체크인, 체크아웃 기능 구현 완료 (#25)

* Initialize project using Create React App

* feat: 개발 환경 셋팅

create-react-app(typescript)
styled-components(typescript)
styled-reset
eslint
prettier
material ui

* refactor: 개발 환경 셋팅 수정

* feat: 디렉터리, 폰트, styled-components 환경 구성

global.js 추가
theme.js 추가
google fonts 추가

* feat: 절대경로 설정 추가

* feat: router 설정

* feate: components에 컴포넌트별 디렉터리 생성

* feat: Hero 컴포넌트 마크업, 스타일 추가

* feat: constant 디렉터리, constant.js 파일 추가

* feat: utils.js 파일 추가

* design: utils.js WrapperMarginCenter 수정

* feat: 중첩 router 사용해 공통 header 추가

* design: Hero, Home 컴포넌트 스타일 수정

* feat: GNB 컴포넌트 마크업, 스타일 추가

* refactor: 코드리뷰 피드백 수정

* refactor: Hero, GNB 마크업 스타일 수정

* feat: header 마크업, 스타일 추가

* remove: js 파일 제거

* refactor: header 마크업 스타일 리팩토링

* feat: search 마크업, 스타일 추가

* style: favicon 추가

* feat: modal portal 기능 추가

* refactor: type들 파일로 따로 분류

* feat: modal backdrop show, hide 기능 추가

* feat: 캘린더 모달 내 캘린더 버튼 추가

* feat: Calendar 년, 월에 따른 일수 생성 기능 추가

* feat: 캐러셀 움직이는 기능 추가

* feat: 캘린더 새로운 년, 월 추가하는 기능 추가

* feat: 캘린더 마지막 요소일때만 추가하는 기능

오른쪽 버튼을 누를때 보여지는 요소가 캘린더의 마지막 아이템일경우에만 캘
린더를 추가하는 기능 추가

* style: 불필요한 주석 제거

* style: 캘린더 '일'에 마우스 호버시 스타일 추가

color, background-color 변경

* refactor: 중복되는 함수, type 변경

* feat: 과거 일자 스타일, 클릭 방지 기능 추가

* fix: 캘린더에서 오늘 날짜를 비활성시키는 버그 픽스

* feat: DateCell 컴포넌트 추가

* refactor: 코드리뷰 피드백 수정

* style: CalendarModal 변수명 리네임, 상수 추가

* refactor: CalendarModal reducer 부분 리팩토링

* rename: 파일들 FE 폴더로 이동

* feat: 라우터를 이용시 공통으로 보이는 배경 수정

* feat: 캘린더 요소 클릭시 선택되는 기능 구현

* fix: 체크인 관련 버그 수정

체크인을 누른 후 체크인보다 작은 날 누를시 생기는 버그 수정

* feat: 캘린더 체크인, 체크아웃 기능 구현 완료

Co-authored-by: jinan159 <wlsdhks0423@naver.com>
tmdgusya pushed a commit that referenced this pull request Jun 2, 2022
Min-92 pushed a commit that referenced this pull request Jun 8, 2022
* [sally4405/#13] Fix: 커밋하다 실수로 들어가게된 코드 수정

* [sally4405/#13] Fix: 메인 히어로 이미지 주소 변경 및 API 명세에 맞게 주소 변경

- 글자가 없는 히어로 이미지로 수정
- /main 앞에 /banners 추가

* [sally4405/#13] Fix: 인기 여행지 조회 주소 수정

- API 명세에 맞게 travel에서 travels로 수정

* [sally4405/#13] Fix: 이미지 주소 추가

Co-authored-by: Louie-03 <dhdustnr0134@naver.com>

* [sally4405/#13] Fix: 테스트 코드에 imageUrl 추가

Co-authored-by: Louie-03 <dhdustnr0134@naver.com>

* [sally4405/#16] Style: RoomInformation 필드명 오타 수정

- bathroomCont 오타 수정

* [sally4405/#16] Feat: 특정 지역의 숙소 요금 정보 조회 API 개발

- JPA에 JPQL을 이용하여 입력 받은 지역이 포함된 숙소를 조회하여 해당 숙소의 가격을 리스트로 조회
- 리스트로 가져온 가격들의 평균 값을 계산
- 값을 확인하기 위해 예제 데이터 data.sql에 추가

* [sally4405/#18] Feat: 숙소 상세 정보 조회 API 개발

- Spring Data JPA가 기본 제공하는 findById() 메서드를 이용하여 숙소 조회
- 유효하지 않은 id로 요청시 IllegalArgumentException 던지도록
- dto에 wishlist 필드 업데이트는 어떻게 해야할지 의문

* [sally4405/#18] Feat: 숙소 상세 정보 조회 dto에 wish 추가

- WishRepository에서 해당 숙소의 id로 wish를 조회하여 숙소 상세 정보를 조회하는 dto에 wish 값 추가

* [sally4405-#4] Style: WishList 관련 클래스 이름 변경

* [sally4405-#17] Feat: 샘플 데이터 추가

* [sally4405-#17] Feat: 예약 상세 조회 기능 구현

* [sally4405-#17] Fix: 테스트 실패 오류 수정

* [sally4405-#25] Feat: 예약 취소 기능 구현

* [sally4405-#27] Feat: 위시리스트 조회 기능 구현

* [sally4405/#19] Feat: 숙소 예약 요금 상세 조회 API 개발

- 주 단위, 월 단위, 연 단위 할인 정책 enum 클래스를 만들어 예약한 날짜를 계산하여 할인을 적용할 수 있는 로직 추가

* [sally4405/#30] Fix: 추가한 예제 데이터를 테스트 결과에 반영하도록 수정 및 Slf4j 어노테이션 삭제

* [sally4405-#27] Feat: 위시리스트 추가 기능 구현

* [sally4405/#20] Feature: 예약 저장 API 구현

- POST 요청이 왔을 때 Request Body에 숙소 id, 체크인, 체크아웃 날짜, 예약 인원, 최종 가격이 dto에 담겨져 들어온다
- dto에 담겨진 데이터를 통해 Book 객체를 생성하여 BookRepository의 save 메서드를 이용해 예약을 저장한다.

* [sally4405/#21] Feature: 예약 목록 조회 API 구현

- BookRepository에서 예약된 Book들을 조회하여 예약 목록을 조회할 수 있도록 dto에 담아서 반환

* [sally4405/#21] Fix: 체크인, 체크아웃 타입 변경

- LocalDateTime에서 LocalDate로 변경

* [sally4405-#36] Feat: 입력한 값에 맞는 모든 숙소 조회 기능 구현

Co-authored-by: donggi-lee-bit <devdonggilee@gmail.com>
Min-92 pushed a commit that referenced this pull request Jun 8, 2022
* Update issue templates

* Update issue templates

* Update issue templates

* Update issue templates

* Initial commit

* build: Github action 백엔 개발 CI 에 working-directory 추가

* build: Github action 백엔드 운영 CI/CD 에 working-directory 추가

* feat: 전역 예외 클래스 추가

비즈니스 예외 클래스들이 HttpMethod 를 반환하도록 하여,
각 예외에 맞는 HTTP 상태코드를 반환할 수 있도록 함

* feat: 전역 예외 로직 추가

프로젝트 전역에서 발생하는 예외를 처리하는 로직 추가
- 비즈니스 예외 발생시에는 예외 클래스에 있는 HTTP 상태코드 반환
- 나머지 분류되지 않은 예외는 INTERNAL_SERVER_ERROR 로 반환

* feat: DB 연결 설정 추가

* feat: airbnb 테이블 정의(DDL) 추가

* feat: airbnb Entity 추가

* feat: 숙소(Accommodation) 에 가격 추가

* feat: 위시리스트(Wish) 에서 wished 속성 제거

- 위시 리스트 추가 여부는, 레코드가 있는지 여부로 판단
- Wish 엔티티는 숙소와 회원의 id 만 참조하도록 변경

* feat: 숙소제공항목(Provides) null 가능 항목 Wrapper 클래스로 변경

* style: 예약(Reservation) 테이블에 NOT NULL 항목 위로 이동

* feat: 각 도메인 필수항목 NOT NULL 설정

* fix: 불필요한 항목 제거

- 미완성된 FeesPolicy 커밋된 내역 제거

* fix: MySQL 주석으로 변경

* refactor: Accommodation 관련 도메인 클래스들 domain 패키지로 이동

* build: mysql, h2 의존성 참조 시점 수정

- mysql : 런타임에만 참조
- h2 : 테스트 런타임에만 참조

* build: queryDSL 의존성 및 설정 추가

- test/resources/application.properties : 테스트 환경 분리를 위해 추가
- QueryDslConfig : JPAQueryFactory 빈 등록

* refactor: QueryDSL 구현 편의를 위해, Money 타입 제거

* refactor: Accommodation 통계 쿼리 Repository 및 테스트 코드 추가

* git: QueryDLS QClass 경로 gitignore 추가

* refactor: Accommodation 의 Repository 관련 클래스들 repository 패키지로 이동

* refactor: AccommodationRepositoryCustom 테스트 클래스 이름 변경

* feat: 숙소 가격 통계가 입력값으로 주어진 단위대로 출력되도록 변경

* refactor: 숙소 가격 통계 쿼리 리펙토링

* feat: 숙소 가격 통계 서비스 추가

- AccommodationStatisticsService : 통계 서비스 제공, 가격 통계는 하루단위 캐싱
- AmountUnitPolicy : 얼마 단위로 가격 통계를 낼것인지의 기준

* refactor: AccommodationRepositoryCustom 을 더 명확한 이름인 AccommodationQueryRepository 로 변경

- 아직은 Interface 가 필요하지 않아 제거하였음

* feat: 숙소 가격 통계 API 추가

* feat: 숙소 가격 통계 API 추가

- API 문서 추가
- github action API 문서화 확인 단계 추가

* build: Github action API 문서 빌드 확인 step 추가

* 1차 배포 PR (#19)

* Initial commit

* build: Github action 백엔 개발 CI 에 working-directory 추가

* build: Github action 백엔드 운영 CI/CD 에 working-directory 추가

* feat: 전역 예외 클래스 추가

비즈니스 예외 클래스들이 HttpMethod 를 반환하도록 하여,
각 예외에 맞는 HTTP 상태코드를 반환할 수 있도록 함

* feat: 전역 예외 로직 추가

프로젝트 전역에서 발생하는 예외를 처리하는 로직 추가
- 비즈니스 예외 발생시에는 예외 클래스에 있는 HTTP 상태코드 반환
- 나머지 분류되지 않은 예외는 INTERNAL_SERVER_ERROR 로 반환

* feat: DB 연결 설정 추가

* feat: airbnb 테이블 정의(DDL) 추가

* feat: airbnb Entity 추가

* feat: 숙소(Accommodation) 에 가격 추가

* feat: 위시리스트(Wish) 에서 wished 속성 제거

- 위시 리스트 추가 여부는, 레코드가 있는지 여부로 판단
- Wish 엔티티는 숙소와 회원의 id 만 참조하도록 변경

* feat: 숙소제공항목(Provides) null 가능 항목 Wrapper 클래스로 변경

* style: 예약(Reservation) 테이블에 NOT NULL 항목 위로 이동

* feat: 각 도메인 필수항목 NOT NULL 설정

* fix: 불필요한 항목 제거

- 미완성된 FeesPolicy 커밋된 내역 제거

* fix: MySQL 주석으로 변경

* refactor: Accommodation 관련 도메인 클래스들 domain 패키지로 이동

* build: mysql, h2 의존성 참조 시점 수정

- mysql : 런타임에만 참조
- h2 : 테스트 런타임에만 참조

* build: queryDSL 의존성 및 설정 추가

- test/resources/application.properties : 테스트 환경 분리를 위해 추가
- QueryDslConfig : JPAQueryFactory 빈 등록

* refactor: QueryDSL 구현 편의를 위해, Money 타입 제거

* refactor: Accommodation 통계 쿼리 Repository 및 테스트 코드 추가

* git: QueryDLS QClass 경로 gitignore 추가

* refactor: Accommodation 의 Repository 관련 클래스들 repository 패키지로 이동

* refactor: AccommodationRepositoryCustom 테스트 클래스 이름 변경

* feat: 숙소 가격 통계가 입력값으로 주어진 단위대로 출력되도록 변경

* refactor: 숙소 가격 통계 쿼리 리펙토링

* feat: 숙소 가격 통계 서비스 추가

- AccommodationStatisticsService : 통계 서비스 제공, 가격 통계는 하루단위 캐싱
- AmountUnitPolicy : 얼마 단위로 가격 통계를 낼것인지의 기준

* refactor: AccommodationRepositoryCustom 을 더 명확한 이름인 AccommodationQueryRepository 로 변경

- 아직은 Interface 가 필요하지 않아 제거하였음

* feat: 숙소 가격 통계 API 추가

* feat: 숙소 가격 통계 API 추가

- API 문서 추가
- github action API 문서화 확인 단계 추가

* build: Github action API 문서 빌드 확인 step 추가

* fix: Github action API 문서 빌드 확인 step 타겟 디렉토리 수정

* fix: Github action API 문서 빌드 확인 step 타겟 디렉토리 수정

* fix: Github action API 문서 재빌드 스텝 수정

* fix: Github action API 문서 재빌드 스텝 수정

* build: 암호화 테스트 코드 활성화

* build: 운영 배포 환경 설정 추가

- application-prod.properties : 민감정보 암호화 하여 운영서버 설정 추가
- Dockerfile : prod 프로파일로 실행되도록 변경
- deploy.sh : docker 실행 로그 남기도록 변경

* 1차 배포 수정 (#20)

* Initial commit

* build: Github action 백엔 개발 CI 에 working-directory 추가

* build: Github action 백엔드 운영 CI/CD 에 working-directory 추가

* feat: 전역 예외 클래스 추가

비즈니스 예외 클래스들이 HttpMethod 를 반환하도록 하여,
각 예외에 맞는 HTTP 상태코드를 반환할 수 있도록 함

* feat: 전역 예외 로직 추가

프로젝트 전역에서 발생하는 예외를 처리하는 로직 추가
- 비즈니스 예외 발생시에는 예외 클래스에 있는 HTTP 상태코드 반환
- 나머지 분류되지 않은 예외는 INTERNAL_SERVER_ERROR 로 반환

* feat: DB 연결 설정 추가

* feat: airbnb 테이블 정의(DDL) 추가

* feat: airbnb Entity 추가

* feat: 숙소(Accommodation) 에 가격 추가

* feat: 위시리스트(Wish) 에서 wished 속성 제거

- 위시 리스트 추가 여부는, 레코드가 있는지 여부로 판단
- Wish 엔티티는 숙소와 회원의 id 만 참조하도록 변경

* feat: 숙소제공항목(Provides) null 가능 항목 Wrapper 클래스로 변경

* style: 예약(Reservation) 테이블에 NOT NULL 항목 위로 이동

* feat: 각 도메인 필수항목 NOT NULL 설정

* fix: 불필요한 항목 제거

- 미완성된 FeesPolicy 커밋된 내역 제거

* fix: MySQL 주석으로 변경

* refactor: Accommodation 관련 도메인 클래스들 domain 패키지로 이동

* build: mysql, h2 의존성 참조 시점 수정

- mysql : 런타임에만 참조
- h2 : 테스트 런타임에만 참조

* build: queryDSL 의존성 및 설정 추가

- test/resources/application.properties : 테스트 환경 분리를 위해 추가
- QueryDslConfig : JPAQueryFactory 빈 등록

* refactor: QueryDSL 구현 편의를 위해, Money 타입 제거

* refactor: Accommodation 통계 쿼리 Repository 및 테스트 코드 추가

* git: QueryDLS QClass 경로 gitignore 추가

* refactor: Accommodation 의 Repository 관련 클래스들 repository 패키지로 이동

* refactor: AccommodationRepositoryCustom 테스트 클래스 이름 변경

* feat: 숙소 가격 통계가 입력값으로 주어진 단위대로 출력되도록 변경

* refactor: 숙소 가격 통계 쿼리 리펙토링

* feat: 숙소 가격 통계 서비스 추가

- AccommodationStatisticsService : 통계 서비스 제공, 가격 통계는 하루단위 캐싱
- AmountUnitPolicy : 얼마 단위로 가격 통계를 낼것인지의 기준

* refactor: AccommodationRepositoryCustom 을 더 명확한 이름인 AccommodationQueryRepository 로 변경

- 아직은 Interface 가 필요하지 않아 제거하였음

* feat: 숙소 가격 통계 API 추가

* feat: 숙소 가격 통계 API 추가

- API 문서 추가
- github action API 문서화 확인 단계 추가

* build: Github action API 문서 빌드 확인 step 추가

* fix: Github action API 문서 빌드 확인 step 타겟 디렉토리 수정

* fix: Github action API 문서 재빌드 스텝 수정

* build: 암호화 테스트 코드 활성화

* build: 운영 배포 환경 설정 추가

- application-prod.properties : 민감정보 암호화 하여 운영서버 설정 추가
- Dockerfile : prod 프로파일로 실행되도록 변경
- deploy.sh : docker 실행 로그 남기도록 변경

* fix: 운영 DB URL 수정

* 1차 배포 재수정 (#21)

* Initial commit

* build: Github action 백엔 개발 CI 에 working-directory 추가

* build: Github action 백엔드 운영 CI/CD 에 working-directory 추가

* feat: 전역 예외 클래스 추가

비즈니스 예외 클래스들이 HttpMethod 를 반환하도록 하여,
각 예외에 맞는 HTTP 상태코드를 반환할 수 있도록 함

* feat: 전역 예외 로직 추가

프로젝트 전역에서 발생하는 예외를 처리하는 로직 추가
- 비즈니스 예외 발생시에는 예외 클래스에 있는 HTTP 상태코드 반환
- 나머지 분류되지 않은 예외는 INTERNAL_SERVER_ERROR 로 반환

* feat: DB 연결 설정 추가

* feat: airbnb 테이블 정의(DDL) 추가

* feat: airbnb Entity 추가

* feat: 숙소(Accommodation) 에 가격 추가

* feat: 위시리스트(Wish) 에서 wished 속성 제거

- 위시 리스트 추가 여부는, 레코드가 있는지 여부로 판단
- Wish 엔티티는 숙소와 회원의 id 만 참조하도록 변경

* feat: 숙소제공항목(Provides) null 가능 항목 Wrapper 클래스로 변경

* style: 예약(Reservation) 테이블에 NOT NULL 항목 위로 이동

* feat: 각 도메인 필수항목 NOT NULL 설정

* fix: 불필요한 항목 제거

- 미완성된 FeesPolicy 커밋된 내역 제거

* fix: MySQL 주석으로 변경

* refactor: Accommodation 관련 도메인 클래스들 domain 패키지로 이동

* build: mysql, h2 의존성 참조 시점 수정

- mysql : 런타임에만 참조
- h2 : 테스트 런타임에만 참조

* build: queryDSL 의존성 및 설정 추가

- test/resources/application.properties : 테스트 환경 분리를 위해 추가
- QueryDslConfig : JPAQueryFactory 빈 등록

* refactor: QueryDSL 구현 편의를 위해, Money 타입 제거

* refactor: Accommodation 통계 쿼리 Repository 및 테스트 코드 추가

* git: QueryDLS QClass 경로 gitignore 추가

* refactor: Accommodation 의 Repository 관련 클래스들 repository 패키지로 이동

* refactor: AccommodationRepositoryCustom 테스트 클래스 이름 변경

* feat: 숙소 가격 통계가 입력값으로 주어진 단위대로 출력되도록 변경

* refactor: 숙소 가격 통계 쿼리 리펙토링

* feat: 숙소 가격 통계 서비스 추가

- AccommodationStatisticsService : 통계 서비스 제공, 가격 통계는 하루단위 캐싱
- AmountUnitPolicy : 얼마 단위로 가격 통계를 낼것인지의 기준

* refactor: AccommodationRepositoryCustom 을 더 명확한 이름인 AccommodationQueryRepository 로 변경

- 아직은 Interface 가 필요하지 않아 제거하였음

* feat: 숙소 가격 통계 API 추가

* feat: 숙소 가격 통계 API 추가

- API 문서 추가
- github action API 문서화 확인 단계 추가

* build: Github action API 문서 빌드 확인 step 추가

* fix: Github action API 문서 빌드 확인 step 타겟 디렉토리 수정

* fix: Github action API 문서 재빌드 스텝 수정

* build: 암호화 테스트 코드 활성화

* build: 운영 배포 환경 설정 추가

- application-prod.properties : 민감정보 암호화 하여 운영서버 설정 추가
- Dockerfile : prod 프로파일로 실행되도록 변경
- deploy.sh : docker 실행 로그 남기도록 변경

* fix: 운영 DB URL 수정

* docs: API 문서 오타 수정

* feat: 숙소 가격 통계 API 가 더미 데이터를 반환하도록 변경

* feat: 숙소 가격 통계 API 에 전체 숙소 평균 가격 추가

* 가격 통계 API 더미 데이터 반환 배포 PR (#23)

* docs: API 문서 오타 수정

* feat: 숙소 가격 통계 API 가 더미 데이터를 반환하도록 변경

* feat: 숙소 가격 통계 API 에 전체 숙소 평균 가격 추가

* docs: 백엔드 README 추가

* Update README.md

* Update README.md

* Update README.md

* [FE] 체크인, 체크아웃 기능 구현 완료 (#25)

* Initialize project using Create React App

* feat: 개발 환경 셋팅

create-react-app(typescript)
styled-components(typescript)
styled-reset
eslint
prettier
material ui

* refactor: 개발 환경 셋팅 수정

* feat: 디렉터리, 폰트, styled-components 환경 구성

global.js 추가
theme.js 추가
google fonts 추가

* feat: 절대경로 설정 추가

* feat: router 설정

* feate: components에 컴포넌트별 디렉터리 생성

* feat: Hero 컴포넌트 마크업, 스타일 추가

* feat: constant 디렉터리, constant.js 파일 추가

* feat: utils.js 파일 추가

* design: utils.js WrapperMarginCenter 수정

* feat: 중첩 router 사용해 공통 header 추가

* design: Hero, Home 컴포넌트 스타일 수정

* feat: GNB 컴포넌트 마크업, 스타일 추가

* refactor: 코드리뷰 피드백 수정

* refactor: Hero, GNB 마크업 스타일 수정

* feat: header 마크업, 스타일 추가

* remove: js 파일 제거

* refactor: header 마크업 스타일 리팩토링

* feat: search 마크업, 스타일 추가

* style: favicon 추가

* feat: modal portal 기능 추가

* refactor: type들 파일로 따로 분류

* feat: modal backdrop show, hide 기능 추가

* feat: 캘린더 모달 내 캘린더 버튼 추가

* feat: Calendar 년, 월에 따른 일수 생성 기능 추가

* feat: 캐러셀 움직이는 기능 추가

* feat: 캘린더 새로운 년, 월 추가하는 기능 추가

* feat: 캘린더 마지막 요소일때만 추가하는 기능

오른쪽 버튼을 누를때 보여지는 요소가 캘린더의 마지막 아이템일경우에만 캘
린더를 추가하는 기능 추가

* style: 불필요한 주석 제거

* style: 캘린더 '일'에 마우스 호버시 스타일 추가

color, background-color 변경

* refactor: 중복되는 함수, type 변경

* feat: 과거 일자 스타일, 클릭 방지 기능 추가

* fix: 캘린더에서 오늘 날짜를 비활성시키는 버그 픽스

* feat: DateCell 컴포넌트 추가

* refactor: 코드리뷰 피드백 수정

* style: CalendarModal 변수명 리네임, 상수 추가

* refactor: CalendarModal reducer 부분 리팩토링

* rename: 파일들 FE 폴더로 이동

* feat: 라우터를 이용시 공통으로 보이는 배경 수정

* feat: 캘린더 요소 클릭시 선택되는 기능 구현

* fix: 체크인 관련 버그 수정

체크인을 누른 후 체크인보다 작은 날 누를시 생기는 버그 수정

* feat: 캘린더 체크인, 체크아웃 기능 구현 완료

* build: 백엔드 Docker 포트설정 변경

80 -> 8080

* docker 변경사항 PR (#30)

* docs: API 문서 오타 수정

* feat: 숙소 가격 통계 API 가 더미 데이터를 반환하도록 변경

* feat: 숙소 가격 통계 API 에 전체 숙소 평균 가격 추가

* docs: 백엔드 README 추가

* Update README.md

* Update README.md

* Update README.md

* build: 백엔드 Docker 포트설정 변경

80 -> 8080

* feat: API URL 변경

* feat: 숙소 가격 통계 API URL 복수형으로 변경

* feat: 숙소제공항목 row 로 저장 및 명칭 단수로 변경

- Provides -> Provide
- AccommodationProvide 추가
- 숙소제공항목을 enum 으로 관리
- enum 을 column 으로 변환하는 ProvideElementsConverter 추가

* feat: 변경 불가능한 컬렉션 대신, 복사하여 반환하도록 변경

* style: static 변수 대문자로 변경

* style: import * 대신, 필요한 것만 import 하도록 변경

* feat: 시작 종료일자 검증로직 추가

* feat: AccommodationRepository, ReservationRepository 추가

* feat: Accommodation 생성자 추가

- @AllArgsConstructor 추가
- @entity 를 위해 기본 생성자를 @NoArgsConstructor 로 변경

* refactor: ProvideElement -> ProvideName 으로 명칭 변경

- ProvideElement -> ProvideName
- ProvideElementConverter -> ProvideNameConverter

* feat: Schedule 에 정적 생성 메소드 추가

* feat: Reservation 에 Getter 및 AllArgsConstructor 추가

* feat: 예약 가능한 숙소 조회 쿼리 추가

* feat: 예약 일정을 저장하는 변수 타입 변경 (LocalDateTime -> LocalDate)

* feat: 예약 가능한 숙소 조회 서비스 추가

* build: MySQL Point 를 처리를 위해 hibernate-spatial 의존성 추가 및 Dialect 설정

* refactor: 전역 예외처리 로직 에러 로깅 추가

* refactor: Accommodation 의 Point 의존성 변경

* refactor: StartEndDate null 방어코드 추가

* refactor: Address toString 추가

* refactor: AccommodationService 에서 조회시 Lazy loading 되도록 수정

* style: 미사용 import 제거

* refactor: 일급컬렉션 객체 제거

* feat: 예약 가능한 숙소 조회 API 추가

* 조회 API 배포 (#45)

* feat: 숙소 가격 통계 API URL 복수형으로 변경

* feat: 숙소제공항목 row 로 저장 및 명칭 단수로 변경

- Provides -> Provide
- AccommodationProvide 추가
- 숙소제공항목을 enum 으로 관리
- enum 을 column 으로 변환하는 ProvideElementsConverter 추가

* feat: 변경 불가능한 컬렉션 대신, 복사하여 반환하도록 변경

* style: static 변수 대문자로 변경

* style: import * 대신, 필요한 것만 import 하도록 변경

* feat: 시작 종료일자 검증로직 추가

* feat: AccommodationRepository, ReservationRepository 추가

* feat: Accommodation 생성자 추가

- @AllArgsConstructor 추가
- @entity 를 위해 기본 생성자를 @NoArgsConstructor 로 변경

* refactor: ProvideElement -> ProvideName 으로 명칭 변경

- ProvideElement -> ProvideName
- ProvideElementConverter -> ProvideNameConverter

* feat: Schedule 에 정적 생성 메소드 추가

* feat: Reservation 에 Getter 및 AllArgsConstructor 추가

* feat: 예약 가능한 숙소 조회 쿼리 추가

* feat: 예약 일정을 저장하는 변수 타입 변경 (LocalDateTime -> LocalDate)

* feat: 예약 가능한 숙소 조회 서비스 추가

* build: MySQL Point 를 처리를 위해 hibernate-spatial 의존성 추가 및 Dialect 설정

* refactor: 전역 예외처리 로직 에러 로깅 추가

* refactor: Accommodation 의 Point 의존성 변경

* refactor: StartEndDate null 방어코드 추가

* refactor: Address toString 추가

* refactor: AccommodationService 에서 조회시 Lazy loading 되도록 수정

* style: 미사용 import 제거

* refactor: 일급컬렉션 객체 제거

* feat: 예약 가능한 숙소 조회 API 추가

* feat: WishRepository 추가

* feat: WishService 추가

- 위시 리스트 저장 기능 추가
- 위시 리스트 삭제 기능 추가

* feat: WishService 에서 위시 리스트 추가시 Wish 가 아닌 WishResponse 를 반환하도록 변경

* style: 들여쓰기 수정

* test: 테스트 독립성을 위해, Trasnactional 어노테이션 추가

* refactor: 가독성 좋은 형태로 변경

* refactor: 위시리스트 추가 서비스에서 WishAddRequest 를 받도록 변경

* refactor: 위시리스트 등록/삭제 API 추가

* refactor: 새로운 Wish 를 만드는 정적 팩토리 메소드 추가

* refactor: Accommodation, Member, Reservation 에 정적 팩토리 메소드 추가

새로 추가할 엔티티를 만들 경우에 사용

* feat: WishRepository 에 숙소 아이디와 회원 아이디로 위시 리스트를 조회하는 기능 추가

* feat: 예약 가능 숙소 정보와 위시 리스트 정보를 병합하여 반환하는 서비스 추가

* feat: 예약 가능 숙소 정보와 위시 리스트 정보를 병합하여 반환하는 API 추가

* fix: Github action API 문서 빌드 확인 step 타겟 디렉토리 수정

* fix: Github action API 문서 재빌드 스텝 수정

* 가격 통계 API 더미 데이터 반환 배포 PR (#23)

* docs: API 문서 오타 수정

* feat: 숙소 가격 통계 API 가 더미 데이터를 반환하도록 변경

* feat: 숙소 가격 통계 API 에 전체 숙소 평균 가격 추가

* 조회 API 배포 (#45)

* feat: 숙소 가격 통계 API URL 복수형으로 변경

* feat: 숙소제공항목 row 로 저장 및 명칭 단수로 변경

- Provides -> Provide
- AccommodationProvide 추가
- 숙소제공항목을 enum 으로 관리
- enum 을 column 으로 변환하는 ProvideElementsConverter 추가

* feat: 변경 불가능한 컬렉션 대신, 복사하여 반환하도록 변경

* style: static 변수 대문자로 변경

* style: import * 대신, 필요한 것만 import 하도록 변경

* feat: 시작 종료일자 검증로직 추가

* feat: AccommodationRepository, ReservationRepository 추가

* feat: Accommodation 생성자 추가

- @AllArgsConstructor 추가
- @entity 를 위해 기본 생성자를 @NoArgsConstructor 로 변경

* refactor: ProvideElement -> ProvideName 으로 명칭 변경

- ProvideElement -> ProvideName
- ProvideElementConverter -> ProvideNameConverter

* feat: Schedule 에 정적 생성 메소드 추가

* feat: Reservation 에 Getter 및 AllArgsConstructor 추가

* feat: 예약 가능한 숙소 조회 쿼리 추가

* feat: 예약 일정을 저장하는 변수 타입 변경 (LocalDateTime -> LocalDate)

* feat: 예약 가능한 숙소 조회 서비스 추가

* build: MySQL Point 를 처리를 위해 hibernate-spatial 의존성 추가 및 Dialect 설정

* refactor: 전역 예외처리 로직 에러 로깅 추가

* refactor: Accommodation 의 Point 의존성 변경

* refactor: StartEndDate null 방어코드 추가

* refactor: Address toString 추가

* refactor: AccommodationService 에서 조회시 Lazy loading 되도록 수정

* style: 미사용 import 제거

* refactor: 일급컬렉션 객체 제거

* feat: 예약 가능한 숙소 조회 API 추가

* style: 불필요한 공백 제거

Co-authored-by: Benny <77577858+uBeom@users.noreply.github.com>
hayoung123 pushed a commit that referenced this pull request Jun 11, 2022
* refactor : Calendar 컴포넌트 분리

Co-authored-by: JinJeon <JinJeon@users.noreply.github.com>

* feat : 캘린더 슬라이더 구현 (#18)

* refactor : 캘린더 스타일 지정 위치 변경

* test : slide 기능 구현 위해 테스트 코드 작성

* feat : animation으로 일회성 슬라이딩 구현

* feat : 캘린더 슬라이드 기능 구현

* refactor : 특정 간격에 대한 월, 연도를 구하는 형식으로 변경

* refactor : 연도, 월 계산 함수 통해 이벤트 함수 통합

* fix : 1월이 13월으로 나오는 버그 해결

* fix : 월 표시 문제 수정

* refactor : 스타일 컴포넌트 및 적용된 컴포넌트 이름 수정, 적용

* refactor : 연도, 월 표시 부분 리펙토링

* refactor : CalCell 부분 이름 변경 및 적용

* fix : 검색창, 모달창에 해당 월이 한 달 적게 표시되는 문제 해결

* fix : 달력 마지막 날이 토요일에 걸리는 경우 그라데이션 안되는 오류 해결

* feat : 반응형 미니바 구현 및 모달 외부 클릭 시 창 닫기 기능 구현  (#22)

* feat : MiniSearchBar 컴포넌트 생성

* feat : 미니바 애니메이션 구현

* feat : 미니바 애니메이션

* fix : 미니바 position 수정

* fix : 미니바 애니메이션 수정

* feat : StyledSearchBarWrapper 로 미니바, 서치바 랩핑

* refactor : props 받아오는 것 수정

* refactor : 미니바에 context를 사용하여 정보 표시

* feat : Modal 에 Background 추가

* feat : modal 외부 클릭 시 modal 창 닫히는 기능 구현

* fix : 모달 클릭 시에도 모달이 꺼지는 문제 해결

모달 자체에 onClick

* feat : Portal 을 사용하여 모달 창 닫기 기능 구현

* fix : portal 사용 시 모달 레이아웃이 깨지는 문제 해결

box-sizing: border-box; 을 추가했다.

* feat : 검색 버튼 클릭 시 모달 닫기

* fix : 모달 Background 로 인한 GNB z-index 수정

* fix : 모달 Background 로 인한 GNB z-index 수정

테스트를 위한 border 삭제

* feat : 검색 후 숙소 리스트 구현 (#24)

* feat : 이미지 및 데이터 추가 및 위치 이동

* feat : hotels api 추가 및 수정

* fix : 이미지, api 이동에 따른 파일 수정

* feat : Search Desc의 필터된 정보란 설정

* feat : 검색 결과 상세값 및 가격 불러오기 일부 설정

* feat : 결과창 금액란 생성

* feat : 숙소별 이미지를 불러오기 위한 api 생성 및 적용

* refactor : 페이지 수 지정

* feat : 반응형 미니바 구현 완성  (#25)

* feat : 미니바 slide-in 애니메이션 추가

Co-authored-by: JinJeon <JinJeon@users.noreply.github.com>

* fix : 반응형 미니바 구현 완료

검색바 외부를 클릭하면 반응형으로 검색바를 미니바로 바꾼다.

* refactor : miniSearchBarIsHidden & searBarIsHidden 상태를 selectedSearchBar 상태 하나로 통합

Co-authored-by: JinJeon <JinJeon@users.noreply.github.com>

* feat : 검색 결과 지도에 표시 (#26)

* feat : map 생성 및 컴포넌트 분리를 위한 상태 위치 변경

* feat : 지도 영역 분리 및 데이터에 따른 지도 표시 구현

* feat : 검색 지도가 스크롤 시 고정이 유지되도록 설정

* fix : 기타 에러 사항 수정 (#27)

* fix : 캘린더 hover 시 색상 변경되도록 수정

* fix : PR 내용 반영 및 수정

Co-authored-by: Serin-Kim <serin9864@gmail.com>
Co-authored-by: JinJeon <JinJeon@users.noreply.github.com>
Co-authored-by: Serin Kim <68533016+Serin-Kim@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
review-BE Improvements or additions to documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants