Skip to content
Snippets Groups Projects
Commit 88e8e972 authored by 천 진강's avatar 천 진강
Browse files

feat: 목록 조회에 검색 기능 추가

parent 331b1147
No related branches found
No related tags found
2 merge requests!15Feat/certificate,!14Feat/main 자잘한 변경 사항들
......@@ -30,8 +30,9 @@ public class ForwardingController {
}
@GetMapping("/forwardings")
public ResponseEntity<Object> lists(@RequestParam String projectId) {
return ResponseEntity.ok(forwardingService.getForwardings(projectId));
public ResponseEntity<Object> lists(@RequestParam String projectId,
@RequestParam(required = false) String query) {
return ResponseEntity.ok(forwardingService.getForwardingsWithSearch(projectId, query));
}
@PatchMapping("/forwarding")
......
......@@ -31,8 +31,9 @@ public class RoutingController {
}
@GetMapping("/routings")
public ResponseEntity<Object> lists(@RequestParam String projectId) {
return ResponseEntity.ok(routingService.getRoutings(projectId));
public ResponseEntity<Object> lists(@RequestParam String projectId,
@RequestParam(required = false) String query) {
return ResponseEntity.ok(routingService.getRoutingsWithSearch(projectId, query));
}
@PatchMapping("/routing")
......
......@@ -2,6 +2,7 @@ package com.aolda.itda.repository.forwarding;
import com.aolda.itda.entity.forwarding.Forwarding;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
import java.util.Optional;
......@@ -11,4 +12,7 @@ public interface ForwardingRepository extends JpaRepository<Forwarding, Long> {
Optional<Forwarding> findByForwardingIdAndIsDeleted(Long forwardingId, Boolean isDeleted);
Boolean existsByInstanceIpAndInstancePortAndIsDeleted(String instanceIp, String instancePort, Boolean isDeleted);
Boolean existsByServerPortAndIsDeleted(String serverPort, Boolean isDeleted);
@Query("SELECT f FROM Forwarding f WHERE f.projectId = ?1 AND f.isDeleted = ?3 AND (f.instanceIp LIKE %?2% OR f.serverPort LIKE %?2% OR f.name LIKE %?2%)")
List<Forwarding> findWithSearch(String projectId, String query, Boolean isDeleted);
}
......@@ -3,6 +3,7 @@ package com.aolda.itda.repository.routing;
import com.aolda.itda.entity.forwarding.Forwarding;
import com.aolda.itda.entity.routing.Routing;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import java.util.List;
import java.util.Optional;
......@@ -11,4 +12,7 @@ public interface RoutingRepository extends JpaRepository<Routing, Long> {
List<Routing> findByProjectIdAndIsDeleted(String projectId, Boolean isDeleted);
Optional<Routing> findByRoutingIdAndIsDeleted(Long routingId, Boolean isDeleted);
Boolean existsByDomainAndIsDeleted(String domain, Boolean isDeleted);
@Query("SELECT r FROM Routing r WHERE r.projectId = ?1 AND r.isDeleted = ?3 AND (r.domain LIKE %?2% OR r.instanceIp LIKE %?2% OR r.name LIKE %?2%)")
List<Routing> findWithSearch(String projectId, String query, Boolean isDeleted);
}
......@@ -27,6 +27,7 @@ import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.List;
import java.util.regex.Pattern;
@Service
@Transactional
......@@ -52,9 +53,11 @@ public class ForwardingService {
return forwarding.toForwardingDTO();
}
/* 포트포워딩 목록 조회 */
public PageResp<ForwardingDTO> getForwardings(String projectId) {
/* 포트포워딩 목록 조회 + 검색 */
public PageResp<ForwardingDTO> getForwardingsWithSearch(String projectId, String query) {
/* 입력 검증 */
if (query == null || query.isBlank()) {
return PageResp.<ForwardingDTO>builder()
.contents(forwardingRepository.findByProjectIdAndIsDeleted(projectId, false)
.stream()
......@@ -62,6 +65,13 @@ public class ForwardingService {
.toList()).build();
}
return PageResp.<ForwardingDTO>builder()
.contents(forwardingRepository.findWithSearch(projectId, query, false)
.stream()
.map(Forwarding::toForwardingDTO)
.toList()).build();
}
/* 포트포워딩 생성 */
public ForwardingDTO createForwarding(String projectId, ForwardingDTO dto) {
......
......@@ -28,6 +28,7 @@ import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.List;
import java.util.regex.Pattern;
@Service
@Transactional
......@@ -52,8 +53,11 @@ public class RoutingService {
return routing.toRoutingDTO();
}
/* Routing 목록 조회 */
public PageResp<RoutingDTO> getRoutings(String projectId) {
/* Routing 목록 조회 + 검색 */
public PageResp<RoutingDTO> getRoutingsWithSearch(String projectId, String query) {
/* 입력 검증 */
if (query == null || query.isBlank()) {
return PageResp.<RoutingDTO>builder()
.contents(routingRepository.findByProjectIdAndIsDeleted(projectId, false)
.stream()
......@@ -61,6 +65,19 @@ public class RoutingService {
.toList()).build();
}
/* 도메인 패턴 검증 */
String domainPattern = "^(\\*\\.)?([a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,}$";
if (Pattern.matches(domainPattern, query) && query.startsWith("*.")) {
query = query.substring(2);
}
return PageResp.<RoutingDTO>builder()
.contents(routingRepository.findWithSearch(projectId, query, false)
.stream()
.map(Routing::toRoutingDTO)
.toList()).build();
}
/* Routing 생성 */
public RoutingDTO createRouting(String projectId, RoutingDTO dto) {
/* 입력 DTO 검증 */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment