From 51700437bf5c4a1eacab9c1fbf5a6901cbc213dc Mon Sep 17 00:00:00 2001 From: jimmy0006 Date: Tue, 19 Aug 2025 21:17:16 +0900 Subject: [PATCH 1/4] feat:add user_id to k8s response --- .../poolc/api/kubernetes/dto/ActiveMemberDto.java | 6 ++++++ .../kubernetes/dto/GetKubernetesResponseDto.java | 4 ++-- .../repository/KubernetesRepository.java | 14 +++++++++----- .../api/kubernetes/service/KubernetesService.java | 3 ++- 4 files changed, 19 insertions(+), 8 deletions(-) create mode 100644 src/main/java/org/poolc/api/kubernetes/dto/ActiveMemberDto.java diff --git a/src/main/java/org/poolc/api/kubernetes/dto/ActiveMemberDto.java b/src/main/java/org/poolc/api/kubernetes/dto/ActiveMemberDto.java new file mode 100644 index 0000000..58403fa --- /dev/null +++ b/src/main/java/org/poolc/api/kubernetes/dto/ActiveMemberDto.java @@ -0,0 +1,6 @@ +package org.poolc.api.kubernetes.dto; + +public interface ActiveMemberDto { + String getMember_uuid(); + String getLogin_id(); +} diff --git a/src/main/java/org/poolc/api/kubernetes/dto/GetKubernetesResponseDto.java b/src/main/java/org/poolc/api/kubernetes/dto/GetKubernetesResponseDto.java index 40c512e..da87b00 100644 --- a/src/main/java/org/poolc/api/kubernetes/dto/GetKubernetesResponseDto.java +++ b/src/main/java/org/poolc/api/kubernetes/dto/GetKubernetesResponseDto.java @@ -7,10 +7,10 @@ @Getter public class GetKubernetesResponseDto { - private final List activeMembers; + private final List activeMembers; @JsonCreator - public GetKubernetesResponseDto(List activeMembers) { + public GetKubernetesResponseDto(List activeMembers) { this.activeMembers = activeMembers; } } diff --git a/src/main/java/org/poolc/api/kubernetes/repository/KubernetesRepository.java b/src/main/java/org/poolc/api/kubernetes/repository/KubernetesRepository.java index 89edfbc..8294ea8 100644 --- a/src/main/java/org/poolc/api/kubernetes/repository/KubernetesRepository.java +++ b/src/main/java/org/poolc/api/kubernetes/repository/KubernetesRepository.java @@ -1,6 +1,7 @@ package org.poolc.api.kubernetes.repository; import org.poolc.api.kubernetes.domain.KubernetesMapping; +import org.poolc.api.kubernetes.dto.ActiveMemberDto; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; @@ -12,19 +13,22 @@ public interface KubernetesRepository extends JpaRepository { - @Query(value = "SELECT DISTINCT MEMBER_UUID\n" + - "FROM ROLES\n" + - "WHERE MEMBER_UUID IN (\n" + + @Query(value = "SELECT DISTINCT T2.MEMBER_UUID\n" + + " , (SELECT login_id" + + " FROM MEMBER T1" + + " WHERE T1.UUID = T2.MEMBER_UUID)\n" + + "FROM ROLES T2\n" + + "WHERE T2.MEMBER_UUID IN (\n" + " SELECT MEMBER_UUID\n" + " FROM ROLES\n" + " WHERE ROLES = 'MEMBER'\n" + ")\n" + - "AND MEMBER_UUID NOT IN (\n" + + "AND T2.MEMBER_UUID NOT IN (\n" + " SELECT MEMBER_UUID\n" + " FROM ROLES\n" + " WHERE ROLES = 'INACTIVE'\n" + ")", nativeQuery = true) - List findAllActiveMembers(); + List findAllActiveMembers(); @Modifying @Transactional diff --git a/src/main/java/org/poolc/api/kubernetes/service/KubernetesService.java b/src/main/java/org/poolc/api/kubernetes/service/KubernetesService.java index a37ae73..28e20c9 100644 --- a/src/main/java/org/poolc/api/kubernetes/service/KubernetesService.java +++ b/src/main/java/org/poolc/api/kubernetes/service/KubernetesService.java @@ -2,6 +2,7 @@ import lombok.RequiredArgsConstructor; import org.poolc.api.kubernetes.domain.KubernetesMapping; +import org.poolc.api.kubernetes.dto.ActiveMemberDto; import org.poolc.api.kubernetes.repository.KubernetesRepository; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -19,7 +20,7 @@ public class KubernetesService { @Value("${kubernetes.api.key}") private String API_KEY; - public List getAllActiveMembers(String apiKey) { + public List getAllActiveMembers(String apiKey) { if(!isValidApiKey(apiKey)) { throw new IllegalArgumentException("Invalid API key"); } From 2f698321fe3acb4723c2f75e3b158723b6f662b4 Mon Sep 17 00:00:00 2001 From: jimmy0006 Date: Tue, 2 Sep 2025 13:53:58 +0900 Subject: [PATCH 2/4] feat:add get api from k8s --- .../controller/KubernetesController.java | 12 ++++++++++++ .../dto/GetMyKubernetesKeyResponseDto.java | 15 +++++++++++++++ .../repository/KubernetesRepository.java | 4 ++-- .../api/kubernetes/service/KubernetesService.java | 7 ++++--- 4 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 src/main/java/org/poolc/api/kubernetes/dto/GetMyKubernetesKeyResponseDto.java diff --git a/src/main/java/org/poolc/api/kubernetes/controller/KubernetesController.java b/src/main/java/org/poolc/api/kubernetes/controller/KubernetesController.java index 039de3e..7ebd8e5 100644 --- a/src/main/java/org/poolc/api/kubernetes/controller/KubernetesController.java +++ b/src/main/java/org/poolc/api/kubernetes/controller/KubernetesController.java @@ -2,8 +2,11 @@ import lombok.RequiredArgsConstructor; import org.poolc.api.kubernetes.dto.GetKubernetesResponseDto; +import org.poolc.api.kubernetes.dto.GetMyKubernetesKeyResponseDto; import org.poolc.api.kubernetes.service.KubernetesService; +import org.poolc.api.member.domain.Member; import org.springframework.http.ResponseEntity; +import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.*; import java.util.Map; @@ -31,4 +34,13 @@ public ResponseEntity refreshMamberKeys(@RequestHeader("X-API-KEY") String return ResponseEntity.ok().build(); } + @GetMapping(value="/me") + public ResponseEntity getMyKey(@AuthenticationPrincipal Member loginMember){ + System.out.println("loginID : "+loginMember.getLoginID()); + GetMyKubernetesKeyResponseDto response = new GetMyKubernetesKeyResponseDto( + kubernetesService.getKubernetesKeyByUUID(loginMember.getUUID()) + ); + return ResponseEntity.ok().body(response); + } + } diff --git a/src/main/java/org/poolc/api/kubernetes/dto/GetMyKubernetesKeyResponseDto.java b/src/main/java/org/poolc/api/kubernetes/dto/GetMyKubernetesKeyResponseDto.java new file mode 100644 index 0000000..7e1cb06 --- /dev/null +++ b/src/main/java/org/poolc/api/kubernetes/dto/GetMyKubernetesKeyResponseDto.java @@ -0,0 +1,15 @@ +package org.poolc.api.kubernetes.dto; + +import com.fasterxml.jackson.annotation.JsonCreator; +import lombok.Getter; + +@Getter +public class GetMyKubernetesKeyResponseDto { + + private final String key; + + @JsonCreator + public GetMyKubernetesKeyResponseDto(String key){ + this.key = key; + } +} diff --git a/src/main/java/org/poolc/api/kubernetes/repository/KubernetesRepository.java b/src/main/java/org/poolc/api/kubernetes/repository/KubernetesRepository.java index 8294ea8..a19cc51 100644 --- a/src/main/java/org/poolc/api/kubernetes/repository/KubernetesRepository.java +++ b/src/main/java/org/poolc/api/kubernetes/repository/KubernetesRepository.java @@ -35,6 +35,6 @@ public interface KubernetesRepository extends JpaRepository findKubernetesKeyByUserId(String userId); + @Query(value = "SELECT kubernetesKey FROM kubernetes_mappings WHERE UUID = :UUID") + Optional findKubernetesKeyByUUID(String UUID); } diff --git a/src/main/java/org/poolc/api/kubernetes/service/KubernetesService.java b/src/main/java/org/poolc/api/kubernetes/service/KubernetesService.java index 28e20c9..1d2cfed 100644 --- a/src/main/java/org/poolc/api/kubernetes/service/KubernetesService.java +++ b/src/main/java/org/poolc/api/kubernetes/service/KubernetesService.java @@ -44,9 +44,10 @@ public void refreshMemberKey(Map requestBody, String apiKey) { kubernetesRepository.saveAll(mappings); } - public String getKubernetesKeyByUserId(String userId) { - return kubernetesRepository.findKubernetesKeyByUserId(userId) - .orElseThrow(() -> new IllegalArgumentException("No Kubernetes key found for user: " + userId)); + public String getKubernetesKeyByUUID(String UUID) { + System.out.println(UUID); + return kubernetesRepository.findKubernetesKeyByUUID(UUID) + .orElseThrow(() -> new IllegalArgumentException("No Kubernetes key found for user: " + UUID)); } private boolean isValidApiKey(String apiKey) { From 6e9869937f4df27e74ee260ddfe444ba2cd26e8a Mon Sep 17 00:00:00 2001 From: jimmy0006 Date: Fri, 26 Sep 2025 10:34:12 +0900 Subject: [PATCH 3/4] fix: refactoring --- .../java/org/poolc/api/comment/controller/CommentController.java | 1 + .../poolc/api/kubernetes/controller/KubernetesController.java | 1 - .../java/org/poolc/api/kubernetes/service/KubernetesService.java | 1 - 3 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/org/poolc/api/comment/controller/CommentController.java b/src/main/java/org/poolc/api/comment/controller/CommentController.java index fa7baee..5c3070e 100644 --- a/src/main/java/org/poolc/api/comment/controller/CommentController.java +++ b/src/main/java/org/poolc/api/comment/controller/CommentController.java @@ -54,4 +54,5 @@ public ResponseEntity likeComment(@AuthenticationPrincipal Member member, likeService.like(member, Subject.COMMENT, commentId); return ResponseEntity.status(HttpStatus.OK).build(); } + } diff --git a/src/main/java/org/poolc/api/kubernetes/controller/KubernetesController.java b/src/main/java/org/poolc/api/kubernetes/controller/KubernetesController.java index 7ebd8e5..ed4e7ff 100644 --- a/src/main/java/org/poolc/api/kubernetes/controller/KubernetesController.java +++ b/src/main/java/org/poolc/api/kubernetes/controller/KubernetesController.java @@ -36,7 +36,6 @@ public ResponseEntity refreshMamberKeys(@RequestHeader("X-API-KEY") String @GetMapping(value="/me") public ResponseEntity getMyKey(@AuthenticationPrincipal Member loginMember){ - System.out.println("loginID : "+loginMember.getLoginID()); GetMyKubernetesKeyResponseDto response = new GetMyKubernetesKeyResponseDto( kubernetesService.getKubernetesKeyByUUID(loginMember.getUUID()) ); diff --git a/src/main/java/org/poolc/api/kubernetes/service/KubernetesService.java b/src/main/java/org/poolc/api/kubernetes/service/KubernetesService.java index 1d2cfed..c1bad2e 100644 --- a/src/main/java/org/poolc/api/kubernetes/service/KubernetesService.java +++ b/src/main/java/org/poolc/api/kubernetes/service/KubernetesService.java @@ -45,7 +45,6 @@ public void refreshMemberKey(Map requestBody, String apiKey) { } public String getKubernetesKeyByUUID(String UUID) { - System.out.println(UUID); return kubernetesRepository.findKubernetesKeyByUUID(UUID) .orElseThrow(() -> new IllegalArgumentException("No Kubernetes key found for user: " + UUID)); } From 3b3becabda3a9941a203519e984f18c95e950735 Mon Sep 17 00:00:00 2001 From: jimmy0006 Date: Fri, 26 Sep 2025 10:42:16 +0900 Subject: [PATCH 4/4] fix: refactoring for handling errors --- .../controller/KubernetesController.java | 16 ++++++++++++---- .../kubernetes/service/KubernetesService.java | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/poolc/api/kubernetes/controller/KubernetesController.java b/src/main/java/org/poolc/api/kubernetes/controller/KubernetesController.java index ed4e7ff..37e576c 100644 --- a/src/main/java/org/poolc/api/kubernetes/controller/KubernetesController.java +++ b/src/main/java/org/poolc/api/kubernetes/controller/KubernetesController.java @@ -5,6 +5,7 @@ import org.poolc.api.kubernetes.dto.GetMyKubernetesKeyResponseDto; import org.poolc.api.kubernetes.service.KubernetesService; import org.poolc.api.member.domain.Member; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.*; @@ -36,10 +37,17 @@ public ResponseEntity refreshMamberKeys(@RequestHeader("X-API-KEY") String @GetMapping(value="/me") public ResponseEntity getMyKey(@AuthenticationPrincipal Member loginMember){ - GetMyKubernetesKeyResponseDto response = new GetMyKubernetesKeyResponseDto( - kubernetesService.getKubernetesKeyByUUID(loginMember.getUUID()) - ); - return ResponseEntity.ok().body(response); + if (loginMember == null) { + return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build(); + } + try { + GetMyKubernetesKeyResponseDto response = new GetMyKubernetesKeyResponseDto( + kubernetesService.getKubernetesKeyByUUID(loginMember.getUUID()) + ); + return ResponseEntity.ok().body(response); + } catch (IllegalArgumentException e){ + return ResponseEntity.notFound().build(); + } } } diff --git a/src/main/java/org/poolc/api/kubernetes/service/KubernetesService.java b/src/main/java/org/poolc/api/kubernetes/service/KubernetesService.java index c1bad2e..fb49185 100644 --- a/src/main/java/org/poolc/api/kubernetes/service/KubernetesService.java +++ b/src/main/java/org/poolc/api/kubernetes/service/KubernetesService.java @@ -46,7 +46,7 @@ public void refreshMemberKey(Map requestBody, String apiKey) { public String getKubernetesKeyByUUID(String UUID) { return kubernetesRepository.findKubernetesKeyByUUID(UUID) - .orElseThrow(() -> new IllegalArgumentException("No Kubernetes key found for user: " + UUID)); + .orElseThrow(() -> new IllegalArgumentException("No Kubernetes key found for the authenticated user")); } private boolean isValidApiKey(String apiKey) {