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

[refactor] 맛집 목록 조회 기능 개선 (공간 데이터 베이스 적용) #38

Merged
merged 6 commits into from
Oct 14, 2024

Conversation

rhaehf
Copy link
Contributor

@rhaehf rhaehf commented Oct 13, 2024

Issue

PR 타입(하나 이상의 PR 타입을 선택해주세요)

  • 기능 추가
  • 기능 수정
  • 기능 삭제
  • 버그 수정
  • 의존성, 환경 변수, 빌드 관련 코드 업데이트

반영 브랜치

refactor/store_list_location_point_geometry → dev2

변경 사항

  • MySQL의 공간 함수와 공간 데이터 타입인 POINT를 사용하기 위한
    • Hibernate Spatial 의존성 추가
    • Hibernate Dialect 설정 추가
    • 공간 데이터 타입인 Point를 사용한 location 필드 추가
  • 맛집 목록 조회 방법 변경 : QueryDsl → 공간 함수를 사용한 JPQL 쿼리

테스트 결과

Request (로컬 db에서 테스트 진행)

HTTP : GET
URL : /api/stores?lat=37.5664401834023&lon=126.9385030977&range=1 (거리순)
URL : /api/stores?lat=37.5664401834023&lon=126.9385030977&range=1&orderBy=rating (평점순)

Response : 성공시

  1. 일치하는 데이터가 없을 때 - 204(No Content) 반환
2. 거리순 - 200(OK) 반환
{
  "totalCount": 6,
  "stores": [
      {
          "storeId": 4,
          "sigun": "서울특별시",
          "storeName": "서울 중식4",
          "category": "Chinese",
          "address": "서울특별시 관악구",
          "storeLat": 37.5664401834023,
          "storeLon": 126.9385030977,
          "rating": 4.5
      },
      {
          "storeId": 5,
          "sigun": "서울특별시",
          "storeName": "서울 중식5",
          "category": "Chinese",
          "address": "서울특별시 관악구",
          "storeLat": 37.5665401834023,
          "storeLon": 126.9386030977,
          "rating": 4.7
      },
      {
          "storeId": 3,
          "sigun": "서울특별시",
          "storeName": "서울 김밥3",
          "category": "Lunch",
          "address": "서울특별시 강남구",
          "storeLat": 37.5663401834023,
          "storeLon": 126.9384030977,
          "rating": 3.0
      },
      {
          "storeId": 2,
          "sigun": "서울특별시",
          "storeName": "서울 김밥2",
          "category": "Lunch",
          "address": "서울특별시 강남구",
          "storeLat": 37.5662401834023,
          "storeLon": 126.9382030977,
          "rating": 4.0
      },
      {
          "storeId": 6,
          "sigun": "서울특별시",
          "storeName": "서울 중식6",
          "category": "Chinese",
          "address": "서울특별시 관악구",
          "storeLat": 37.5666401834023,
          "storeLon": 126.9387030977,
          "rating": 4.8
      },
      {
          "storeId": 1,
          "sigun": "서울특별시",
          "storeName": "서울 김밥1",
          "category": "Lunch",
          "address": "서울특별시 강남구",
          "storeLat": 37.5661401834023,
          "storeLon": 126.9382030977,
          "rating": 5.0
      }
  ]
}
3. 평점순 - 200(OK) 반환
{
  "totalCount": 6,
  "stores": [
      {
          "storeId": 1,
          "sigun": "서울특별시",
          "storeName": "서울 김밥1",
          "category": "Lunch",
          "address": "서울특별시 강남구",
          "storeLat": 37.5661401834023,
          "storeLon": 126.9382030977,
          "rating": 5.0
      },
      {
          "storeId": 6,
          "sigun": "서울특별시",
          "storeName": "서울 중식6",
          "category": "Chinese",
          "address": "서울특별시 관악구",
          "storeLat": 37.5666401834023,
          "storeLon": 126.9387030977,
          "rating": 4.8
      },
      {
          "storeId": 5,
          "sigun": "서울특별시",
          "storeName": "서울 중식5",
          "category": "Chinese",
          "address": "서울특별시 관악구",
          "storeLat": 37.5665401834023,
          "storeLon": 126.9386030977,
          "rating": 4.7
      },
      {
          "storeId": 4,
          "sigun": "서울특별시",
          "storeName": "서울 중식4",
          "category": "Chinese",
          "address": "서울특별시 관악구",
          "storeLat": 37.5664401834023,
          "storeLon": 126.9385030977,
          "rating": 4.5
      },
      {
          "storeId": 2,
          "sigun": "서울특별시",
          "storeName": "서울 김밥2",
          "category": "Lunch",
          "address": "서울특별시 강남구",
          "storeLat": 37.5662401834023,
          "storeLon": 126.9382030977,
          "rating": 4.0
      },
      {
          "storeId": 3,
          "sigun": "서울특별시",
          "storeName": "서울 김밥3",
          "category": "Lunch",
          "address": "서울특별시 강남구",
          "storeLat": 37.5663401834023,
          "storeLon": 126.9384030977,
          "rating": 3.0
      }
  ]
}

Response : 실패시

  • 필수 RequestParam인 'lat'을 입력하지 않았을 때 - 400(Bad Request) 반환
    {
        "status": 400,
        "message": "필수 파라미터 'lat'가 누락되었습니다."
    }

Copy link
Contributor

@K-0joo K-0joo left a comment

Choose a reason for hiding this comment

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

고생하셨습니다!

Copy link
Contributor

@jw427 jw427 left a comment

Choose a reason for hiding this comment

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

고생하셨어요!

Copy link
Contributor

@jeongeungyeong jeongeungyeong left a comment

Choose a reason for hiding this comment

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

수고하셨습니다!

@rhaehf rhaehf merged commit d6901e3 into dev2 Oct 14, 2024
@rhaehf rhaehf deleted the refactor/store_list_location_point_geometry branch October 14, 2024 01:25
@rhaehf rhaehf linked an issue Oct 14, 2024 that may be closed by this pull request
5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

맛집 목록 (API) 리팩토링 (공간 데이터 베이스 적용)
4 participants