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-11][BE][민지노&&필] 3주차 PR 입니다 #283

Open
wants to merge 40 commits into
base: team11
Choose a base branch
from

Conversation

PhilSoGooood
Copy link

@PhilSoGooood PhilSoGooood commented Jun 9, 2022

안녕하세요 브라이언! 오랜만에 다시 PR 보내드립니다...
그동안 인프라에 집중하기도 하였고 집중해서 코딩을 하다보니 PR 시간에 늦어 그동안 보내지 못했습니다 🥲
그래도 시작할때 한번 끝날때 한번 보내는건 아닌 것 같아서 오늘 한번 보내게 되었습니다! 죄송하구 감사합니다!

ps. 커밋 내역이 민지노만 있는 것은 저희가 항상 만나서 짝코딩을 해서 그렇습니당ㅎㅎㅎ 절대 싸운것 아니에요...🥹

API 명세서

방 상세정보 API
테스트 서버 URL: http://144.24.86.236/room/1

메인 홈화면 API
테스트 서버 URL: http://144.24.86.236/home

여행지 거리 계산 API
테스트 서버 URL: http://144.24.86.236/distance/times?x=127.033466&y=37.490868

현재 상황

  1. 인프라 구축 (지난 PR에서 보내드린 설계도대로 구축을 하였습니다)
  2. 숙소 상세 페이지 조회
  3. 메인 화면 조회( iOS팀과 상의하여 Home Data라는 클래스안에 다 담아서 보내기로 하였습니다.)
  4. 카카오 api를 이용하여 유저의 현재 위치와 숙소 사이의 거리 및 이동시간 계산 (현재 기능 구현에 우선하여 중복되는 컨트롤러와 클래스는 삭제할 예정입니다)
  • DistanceSearchController를 삭제하고 HomeController에서 해당 기능을 실행하도록 할 예정입니다.
  • 중복되는 AroundSpotDto와 DistanceInfoResponse를 통합할 예정입니다.

궁금한점

  1. 조인컬럼 어노테이션(user_id)를 지우면 왜 컬럼명이 user_user_id가 되는지 궁금합니다
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="user_id")
    private User user;

// ->아래로 바꿨을시에 이슈발생

    @ManyToOne(fetch = FetchType.LAZY)
    private User user;

반면 room은 해당 어노테이션을 해주지 않아도 이슈가 없었습니다.

  @ManyToOne(fetch = FetchType.LAZY)
  @JoinColumn(name="room_id")
    private Room room;

// -> 아래로 변경해도 이슈없음

   @ManyToOne(fetch = FetchType.LAZY)
    private Room room;

Minzino and others added 30 commits May 28, 2022 21:03
Airbnb의 Entity생성 및 매핑을 함
엔티티 설계 및 테스트 DB(RDS)에 더미 데이터 추가
Room의 ID를 입력받으면 해당 Room의 상세정보를 반환한다.
repository와 service 패키지 생성
- Address는 ios와 회의 결과 주소가 아닌 위도와 경도로 받아서 의미에 부합하도록 클래스 이름을 Location으로 변경
- Host와 Room의 DTO 생성
- Image 리스트의 경우 copyOf를 써서 불변객체를 반환
- 불필요한 import 삭제
[BE] 상세조회시 DTO를 반환하도록 변경
- gradle.yml 작성
- application-develop.yml의 datasource를 secret key로 관리하도록 수정
- deploy.sh에서 도커허브 레포지토리 변경
- 개발 메인 브랜치인 BE-develop에서 배포용 브랜치 BE-deploy로 수정
- 잘못 올린 파일 삭제
- IOS 기획서에 첫번째 페이지에서 히어로 이미지 영역의 내용 및 이미지 주소를 담당하는 클래스
- 홈화면에서 가까운 여행지 둘러보기를 담당하는 DTO
- Location은 각 행정지의 중심좌표를 의미
- HomeData는 MainEventDto, AroundSpotDto List, ThemeSpotDto List를 포함하고 있음
- api 구분을 주기위해서 Mapping에 room을 넣어줌
[BE] 가까운 여행지 기능을 위한 행정지역 클래스 생성
[BE] 카카오 api를 통해 현재 위치와의 거리와 이동 시간 계산
- 내장 라이브러리를 통해 시간 단위를 초에서 분으로 변경
- 외부 라이브러리를 통해 거리 단위를 미터에서 킬로미터로 변경
[BE] 라이브러리를 통한 시간 및 거리 단위 변환
@PhilSoGooood PhilSoGooood added the review-BE Improvements or additions to documentation label Jun 9, 2022
PhilSoGooood and others added 7 commits June 9, 2022 12:09
- 단위 변환을 내장, 외장 라이브러리를 사용하여 해당 역할을 담당하던 DistanceInfo 클래스를 삭제하였습니다.
- district를 enum이 아닌 엔티티로 관리하기위해 수정
- DistanceInfoResponse를 AroundSpotDto로 대체
- HomeController에서 HomeService, DistrictSearchService를 통해 각 Dto를 반환받아 HomeData를 생성하는것으로 수정하였습니다.
Copy link

@wheejuni wheejuni left a comment

Choose a reason for hiding this comment

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

수고하셨습니다!
리뷰 남긴 내용 참고해주세요~

@NoArgsConstructor
public class District {

@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
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)
@JsonIgnore
private Long id;
Copy link

Choose a reason for hiding this comment

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

보니까 User 에는 칼럼명을 user_id 로 주셨네요. id 필드에 해당하는 칼럼명을요.
칼럼명을 따라가다 보니까 저쪽에선 user_user_id 가 됐고 여긴 그냥 room_id 가 된 겁니다. ㅎㅎ


@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonIgnore
private Long id;
Copy link

Choose a reason for hiding this comment

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

private String name;

@OneToMany(mappedBy = "user")
private List<WishList> wishLists = new ArrayList<>();
Copy link

Choose a reason for hiding this comment

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

순차성이 보장되어야 할 필요가 없다면(어차피 쿼리해서 꺼내오는 과정에서 많이 손상되기도 하고요)
Set 을 사용하시는 것도 좋습니다.

Comment on lines 8 to 10
@GetMapping("/health")
public String healthCheck(){
return "health ok";
Copy link

Choose a reason for hiding this comment

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

actuator 사용은 어떨까요?


private Map<String, String> calculateDistanceAndTime(Position position, Location location)
throws JsonProcessingException {
RestTemplate restTemplate = new RestTemplate();
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 27 to 33
List<ThemeSpotDto> themeSpotDtoList = new ArrayList<>();
for (ThemeSpot themeSpot : themeSpotList) {
ThemeSpotDto themeSpotDto = new ThemeSpotDto(themeSpot.getImagePath(),
themeSpot.getTitle());
themeSpotDtoList.add(themeSpotDto);
}
return themeSpotDtoList;
Copy link

Choose a reason for hiding this comment

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

스트림 한줄로 개선할 수 있을 듯 합니다

- TheamSpot 엔티티를 Dto로 변환하는 과정을 Stream을 이용하여 간소화하였습니다.
- 기존 HealthController를 통해 서버 상태를 확인하던 것을 Actuator로 바꾸었습니다.
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.

3 participants