Skip to content

Commit

Permalink
refactor: 주변 음식점 조회 거리 제한 추가 (#62)
Browse files Browse the repository at this point in the history
* test: 실패 테스트 수정

* refactor: 주변 식당 조회 시 거리 제한 추가

* style: ktlint

* refactor: 메서드 이름 수정
  • Loading branch information
TaeyeonRoyce authored Sep 9, 2024
1 parent d098a46 commit 84835fc
Show file tree
Hide file tree
Showing 10 changed files with 32 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,11 @@ import com.celuveat.restaurant.adapter.out.persistence.entity.RestaurantImageJpa
import com.celuveat.restaurant.adapter.out.persistence.entity.RestaurantImageJpaRepository
import com.celuveat.restaurant.adapter.out.persistence.entity.RestaurantJpaEntity
import com.celuveat.restaurant.adapter.out.persistence.entity.RestaurantJpaRepository
import java.time.LocalDate
import org.springframework.boot.context.event.ApplicationReadyEvent
import org.springframework.context.annotation.Profile
import org.springframework.context.event.EventListener
import org.springframework.stereotype.Component
import java.time.LocalDate

@Suppress("ktlint:standard:max-line-length")
@Component
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,12 @@ import org.springframework.web.bind.annotation.RequestBody

@Tag(name = "회원 API")
interface MemberApi {

@Operation(summary = "회원 정보 조회")
@SecurityRequirement(name = "JWT")
@GetMapping("/profile")
fun readMember(@Auth auth: AuthContext): MemberProfileResponse
fun readMember(
@Auth auth: AuthContext,
): MemberProfileResponse

@Operation(summary = "회원 정보 조회")
@SecurityRequirement(name = "JWT")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,16 @@ import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController


@RequestMapping("/members")
@RestController
class MemberController(
private val readMemberUseCase: ReadMemberUseCase,
private val updateProfileUseCase: UpdateProfileUseCase,
) : MemberApi {

@GetMapping("/profile")
override fun readMember(@Auth auth: AuthContext): MemberProfileResponse {
override fun readMember(
@Auth auth: AuthContext,
): MemberProfileResponse {
val memberId = auth.memberId()
val result = readMemberUseCase.readMember(memberId)
return MemberProfileResponse.from(result)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ data class MemberProfileResponse(
val profileImageUrl: String?,
@Schema(
description = "이메일",
example = "email@celuveat.com"
example = "email@celuveat.com",
)
val email: String,
@Schema(
Expand Down
5 changes: 4 additions & 1 deletion src/main/kotlin/com/celuveat/member/domain/Member.kt
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,10 @@ class Member(
}
}

fun updateProfile(nickname: String, profileImageUrl: String) {
fun updateProfile(
nickname: String,
profileImageUrl: String,
) {
this.nickname = nickname
this.profileImageUrl = profileImageUrl
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ class RestaurantPersistenceAdapter(

override fun readNearby(id: Long): List<Restaurant> {
val centralRestaurant = restaurantJpaRepository.getById(id)
val restaurants = restaurantJpaRepository.findTop5ByCoordinates(
val restaurants = restaurantJpaRepository.findTop5NearestInDistance(
latitude = centralRestaurant.latitude,
longitude = centralRestaurant.longitude,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,17 @@ interface RestaurantJpaRepository : JpaRepository<RestaurantJpaEntity, Long>, Cu

@Query(
"""
SELECT r.*,
(6371 * acos(cos(radians(:latitude)) * cos(radians(r.latitude)) * cos(radians(r.longitude) - radians(:longitude)) + sin(radians(:latitude)) * sin(radians(r.latitude)))) AS distance
SELECT r.*
FROM restaurant r
ORDER BY distance
WHERE (6371 * acos(cos(radians(:latitude)) * cos(radians(r.latitude)) * cos(radians(r.longitude) - radians(:longitude)) + sin(radians(:latitude)) * sin(radians(r.latitude)))) < :distanceKilometer
ORDER BY (6371 * acos(cos(radians(:latitude)) * cos(radians(r.latitude)) * cos(radians(r.longitude) - radians(:longitude)) + sin(radians(:latitude)) * sin(radians(r.latitude))))
LIMIT 5 OFFSET 1 -- 1 is the itself location
""",
nativeQuery = true,
)
fun findTop5ByCoordinates(
fun findTop5NearestInDistance(
latitude: Double,
longitude: Double,
distanceKilometer: Double = 2.0,
): List<RestaurantJpaEntity>
}
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ class CelebrityPersistenceAdapterTest(
// then
assertSoftly {
visitedCelebritiesByRestaurants.size shouldBe 2
visitedCelebritiesByRestaurants[restaurants[0].id]!!.size shouldBe 2
visitedCelebritiesByRestaurants[restaurants[0].id]!!.size shouldBe 3
visitedCelebritiesByRestaurants[restaurants[1].id]!!.size shouldBe 1
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ class CelebrityQueryServiceTest : BehaviorSpec({
When("회원이 셀럽을 조회하면") {
val memberId = 1L
every { readCelebritiesPort.readById(celebrity.id) } returns celebrity
every { readInterestedCelebritiesPort.existsInterestedCelebrity(memberId, celebrity.id) } returns true
every { readInterestedCelebritiesPort.existsInterestedCelebrity(celebrity.id, memberId) } returns true

val query = ReadCelebrityQuery(memberId, celebrity.id)
val result = celebrityQueryService.readCelebrity(query)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -231,28 +231,28 @@ class RestaurantPersistenceAdapterTest(
.set(RestaurantJpaEntity::longitude, 127.0)
.sample(),
sut.giveMeBuilder<RestaurantJpaEntity>()
.set(RestaurantJpaEntity::latitude, 37.6)
.set(RestaurantJpaEntity::longitude, 127.1)
.set(RestaurantJpaEntity::latitude, 37.5)
.set(RestaurantJpaEntity::longitude, 127.001)
.sample(),
sut.giveMeBuilder<RestaurantJpaEntity>()
.set(RestaurantJpaEntity::latitude, 38.7)
.set(RestaurantJpaEntity::longitude, 128.2)
.set(RestaurantJpaEntity::latitude, 37.5)
.set(RestaurantJpaEntity::longitude, 127.002)
.sample(),
sut.giveMeBuilder<RestaurantJpaEntity>()
.set(RestaurantJpaEntity::latitude, 38.7)
.set(RestaurantJpaEntity::longitude, 128.3)
.set(RestaurantJpaEntity::latitude, 37.5)
.set(RestaurantJpaEntity::longitude, 127.003)
.sample(),
sut.giveMeBuilder<RestaurantJpaEntity>()
.set(RestaurantJpaEntity::latitude, 38.7)
.set(RestaurantJpaEntity::longitude, 128.3)
.set(RestaurantJpaEntity::latitude, 37.5)
.set(RestaurantJpaEntity::longitude, 127.004)
.sample(),
sut.giveMeBuilder<RestaurantJpaEntity>()
.set(RestaurantJpaEntity::latitude, 38.7)
.set(RestaurantJpaEntity::longitude, 128.2)
.set(RestaurantJpaEntity::latitude, 37.5)
.set(RestaurantJpaEntity::longitude, 127.005)
.sample(),
sut.giveMeBuilder<RestaurantJpaEntity>()
.set(RestaurantJpaEntity::latitude, 70.7)
.set(RestaurantJpaEntity::longitude, 128.2)
.set(RestaurantJpaEntity::latitude, 37.5)
.set(RestaurantJpaEntity::longitude, 127.006)
.sample(),
),
)
Expand Down

0 comments on commit 84835fc

Please sign in to comment.