Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.wayble.server.direction.dto;
package com.wayble.server.direction.dto.internal;

import java.util.List;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.wayble.server.direction.dto;
package com.wayble.server.direction.dto.internal;

public record NodeRef(
Long id,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.wayble.server.direction.dto;
package com.wayble.server.direction.dto.internal;

import com.wayble.server.direction.entity.transportation.Edge;
import org.springframework.data.util.Pair;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@
@RequiredArgsConstructor
public enum DirectionErrorCase implements ErrorCase {

PATH_NOT_FOUND(400, 4001, "해당하는 경로를 찾을 수 없습니다."),
ES_INDEXING_FAILED(500, 4002, "ElasticSearch 인덱싱에 실패했습니다."),
HISTORY_NOT_FOUND(400, 4004, "검색 기록이 없습니다."),
DISTANCE_TOO_FAR(400, 4002, "거리가 30km 이상입니다.");
ES_INDEXING_FAILED(500, 4001, "ElasticSearch 인덱싱에 실패했습니다."),
HISTORY_NOT_FOUND(400, 4002, "검색 기록이 없습니다."),

PATH_NOT_FOUND(400, 4003, "해당하는 경로를 찾을 수 없습니다."),
DISTANCE_TOO_FAR(400, 4004, "거리가 30km 이상입니다."),
NO_NEARBY_STATIONS(400, 4005, "주변에 정류장이 없습니다.");

private final Integer httpStatusCode;
private final Integer errorCode;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.wayble.server.direction.repository;
package com.wayble.server.direction.repository.transportation;

import com.wayble.server.direction.entity.type.DirectionType;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package com.wayble.server.direction.repository;
package com.wayble.server.direction.repository.transportation;

import com.wayble.server.direction.entity.transportation.Edge;
import com.wayble.server.direction.repository.EdgeBoundingBoxProjection;
import com.wayble.server.direction.repository.transportation.EdgeBoundingBoxProjection;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.wayble.server.direction.repository;
package com.wayble.server.direction.repository.transportation;

import com.wayble.server.direction.entity.transportation.Elevator;
import com.wayble.server.direction.entity.transportation.Facility;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.wayble.server.direction.repository;
package com.wayble.server.direction.repository.transportation;

import com.wayble.server.direction.entity.transportation.Facility;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.wayble.server.direction.repository;
package com.wayble.server.direction.repository.transportation;

import com.wayble.server.direction.entity.type.DirectionType;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
package com.wayble.server.direction.repository;
package com.wayble.server.direction.repository.transportation;

import com.wayble.server.direction.entity.transportation.Node;
import com.wayble.server.direction.repository.NodeBoundingBoxProjection;
import com.wayble.server.direction.repository.transportation.NodeBoundingBoxProjection;

import org.springframework.data.jpa.repository.JpaRepository;
Copy link

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

대량 결과 반환 방지: 페이징 도입 및 정렬 외부화

현재 쿼리는 정렬까지 포함한 전체 리스트를 반환하여 메모리 사용량이 커질 수 있습니다. 페이징을 받아 상한을 두고, 정렬은 PageableSort로 외부화하는 편이 유연하고 안전합니다.

적용 제안:

 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.data.repository.query.Param;
+import org.springframework.data.domain.Pageable;

   @Query("SELECT " +
          "n.id          as id, " +
          "n.stationName as stationName, " +
          "n.nodeType    as nodeType, " +
          "n.latitude    as latitude, " +
          "n.longitude   as longitude " +
          "FROM Node n WHERE " +
          "n.latitude BETWEEN :minLat AND :maxLat AND " +
-         "n.longitude BETWEEN :minLon AND :maxLon " +
-         "ORDER BY n.latitude, n.longitude")
+         "n.longitude BETWEEN :minLon AND :maxLon")
   List<NodeBoundingBoxProjection> findNodesInBoundingBox(
           @Param("minLat") double minLat,
           @Param("maxLat") double maxLat,
           @Param("minLon") double minLon,
-          @Param("maxLon") double maxLon
+          @Param("maxLon") double maxLon,
+          Pageable pageable
   );

주의: 호출부에서 Pageable을 전달하도록 업데이트가 필요합니다. 정렬(예: 거리순)이 필요하면 서비스 단에서 계산하거나 네이티브/DB 함수로 처리하세요.

Also applies to: 14-23, 24-29

import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.wayble.server.direction.repository;
package com.wayble.server.direction.repository.transportation;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.wayble.server.direction.repository;
package com.wayble.server.direction.repository.transportation;

import com.wayble.server.direction.entity.transportation.Wheelchair;
import org.springframework.data.jpa.repository.JpaRepository;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,9 @@
import com.wayble.server.direction.external.opendata.OpenDataProperties;
import com.wayble.server.direction.external.opendata.dto.OpenDataResponse;
import com.wayble.server.direction.external.opendata.dto.StationSearchResponse;
import com.wayble.server.direction.repository.RouteRepository;
import com.wayble.server.direction.repository.transportation.RouteRepository;
import com.wayble.server.direction.dto.response.TransportationResponseDto;

import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
Expand All @@ -31,11 +30,6 @@ public TransportationResponseDto.BusInfo getBusInfo(String stationName, Long bus
List<Boolean> isLowFloor = new ArrayList<>();
Integer dispatchInterval = null;

// 나중에 서비스키 문제 해결되면 이 함수 호출 제거
return createDummyBusInfo(stationName, busId, x, y);


/*
boolean isShuttleBus = false;
if (busId != null) {
var routeName = routeRepository.findRouteNameById(busId);
Expand Down Expand Up @@ -103,29 +97,7 @@ public TransportationResponseDto.BusInfo getBusInfo(String stationName, Long bus
}

return new TransportationResponseDto.BusInfo(isShuttleBus, isLowFloor, dispatchInterval);
*/

}

// 나중에 이 함수 제거
private TransportationResponseDto.BusInfo createDummyBusInfo(String stationName, Long busId, Double x, Double y) {

// 셔틀버스 여부 확인 (기존 로직 유지)
boolean isShuttleBus = false;
if (busId != null) {
var route = routeRepository.findById(busId);
isShuttleBus = route.isPresent() && route.get().getRouteName().contains("마포");
}

// 랜덤 더미 데이터 생성
List<Boolean> isLowFloor = new ArrayList<>();
isLowFloor.add(Math.random() < 0.7);
isLowFloor.add(Math.random() < 0.5);

Integer dispatchInterval = (int) (Math.random() * 15) + 1;


return new TransportationResponseDto.BusInfo(isShuttleBus, isLowFloor, dispatchInterval);
}

private OpenDataResponse fetchArrivals(String stationId, Long busId) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@

import com.wayble.server.direction.external.kric.dto.KricToiletRawItem;
import com.wayble.server.direction.external.kric.dto.KricToiletRawResponse;
import com.wayble.server.direction.repository.transportation.ElevatorRepository;
import com.wayble.server.direction.repository.transportation.FacilityRepository;
import com.wayble.server.direction.repository.transportation.NodeRepository;
import com.wayble.server.direction.repository.transportation.RouteRepository;
import com.wayble.server.direction.repository.transportation.WheelchairInfoRepository;

import com.wayble.server.direction.repository.ElevatorRepository;
import com.wayble.server.direction.repository.FacilityRepository;
import com.wayble.server.direction.repository.NodeRepository;
import com.wayble.server.direction.repository.RouteRepository;
import com.wayble.server.direction.repository.WheelchairInfoRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import lombok.Builder;
Expand Down
Loading