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,5 +1,7 @@
package com.softeer5.uniro_backend.common.error;

import org.springframework.http.HttpStatus;

import lombok.AllArgsConstructor;
import lombok.Getter;

Expand All @@ -8,8 +10,12 @@
public enum ErrorCode {
// 길찾기
FASTEST_ROUTE_NOT_FOUND(422, "경로가 없습니다."),
SAME_START_AND_END_POINT(400, "출발지와 도착지가 같습니다.");
SAME_START_AND_END_POINT(400, "출발지와 도착지가 같습니다."),

// 건물 노드
BUILDING_NOT_FOUND(404, "유효한 건물을 찾을 수 없습니다."),
;

final private int httpStatus;
final private String message;
private final int httpStatus;
private final String message;
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

@Getter
@Setter
public class ErrorResponse extends Error {
public class ErrorResponse {
private int status;
private String message;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.softeer5.uniro_backend.common.exception.custom;

import com.softeer5.uniro_backend.common.error.ErrorCode;
import com.softeer5.uniro_backend.common.exception.CustomException;

import lombok.Getter;

@Getter
public class BuildingNotFoundException extends CustomException {
public BuildingNotFoundException(String message, ErrorCode errorCode) {
super(message, errorCode);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -42,4 +42,14 @@ ResponseEntity<SearchBuildingResDTO> searchBuildings(
@RequestParam(value = "cursor-id", required = false) Long cursorId,
@RequestParam(value = "page-size", required = false) Integer pageSize
);

@Operation(summary = "상세 건물 노드 조회")
@ApiResponses(value = {
@ApiResponse(responseCode = "200", description = "상세 건물 노드 조회 성공"),
@ApiResponse(responseCode = "400", description = "EXCEPTION(임시)", content = @Content),
})
ResponseEntity<GetBuildingResDTO> getBuilding(
@PathVariable("univId") Long univId,
@PathVariable("nodeId") Long nodeId
);
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,4 +46,14 @@ public ResponseEntity<SearchBuildingResDTO> searchBuildings(
return ResponseEntity.ok().body(searchBuildingResDTO);
}

@Override
@GetMapping("{univId}/nodes/buildings/{nodeId}")
public ResponseEntity<GetBuildingResDTO> getBuilding(
@PathVariable("univId") Long univId,
@PathVariable("nodeId") Long nodeId) {

GetBuildingResDTO buildingResDTO = nodeService.getBuilding(nodeId);
return ResponseEntity.ok().body(buildingResDTO);
}

}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.softeer5.uniro_backend.node.repository;

import java.util.List;
import java.util.Optional;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
Expand All @@ -20,4 +21,12 @@ public interface BuildingRepository extends JpaRepository<Building, Long>, Build
AND ST_Within(n.coordinates, ST_MakeEnvelope(:lux, :luy, :rdx, :rdy, 4326))
""")
List<BuildingNode> findByUnivIdAndLevelWithNode(Long univId, int level, double lux , double luy, double rdx , double rdy);

@Query("""
SELECT new com.softeer5.uniro_backend.node.dto.BuildingNode(b, n)
FROM Building b
JOIN FETCH Node n ON b.nodeId = n.id
WHERE b.nodeId = :nodeId
""")
Optional<BuildingNode> findByNodeIdWithNode(Long nodeId);
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
package com.softeer5.uniro_backend.node.service;

import java.util.List;
import java.util.Optional;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.softeer5.uniro_backend.common.CursorPage;
import com.softeer5.uniro_backend.common.error.ErrorCode;
import com.softeer5.uniro_backend.common.exception.custom.BuildingNotFoundException;
import com.softeer5.uniro_backend.node.dto.BuildingNode;
import com.softeer5.uniro_backend.node.dto.GetBuildingResDTO;
import com.softeer5.uniro_backend.node.dto.SearchBuildingResDTO;
Expand Down Expand Up @@ -42,4 +45,13 @@ public SearchBuildingResDTO searchBuildings(Long univId, String name, Long curso
return SearchBuildingResDTO.of(data, buildingNodes.getNextCursor(), buildingNodes.isHasNext());
}

public GetBuildingResDTO getBuilding(Long nodeId){
Optional<BuildingNode> buildingNode = buildingRepository.findByNodeIdWithNode(nodeId);
if(buildingNode.isEmpty()){
throw new BuildingNotFoundException("Building Not Found", ErrorCode.BUILDING_NOT_FOUND);
}

return GetBuildingResDTO.of(buildingNode.get().getBuilding(), buildingNode.get().getNode());
}

}