From c1c35d0b9c238519644d22c6132bf2a9efdbd05a Mon Sep 17 00:00:00 2001 From: coco3x Date: Tue, 14 Jan 2025 05:37:57 +0900 Subject: [PATCH] =?UTF-8?q?feat(main-api):=20=EB=B0=A9=EC=9D=B4=20?= =?UTF-8?q?=EA=B0=80=EC=A7=80=EA=B3=A0=20=EC=9E=88=EB=8A=94=20=EB=82=B4?= =?UTF-8?q?=EB=B6=80=20=EC=95=84=EC=9D=B4=ED=94=BC=EB=A5=BC=20=EB=B0=98?= =?UTF-8?q?=ED=99=98=ED=95=98=EB=8A=94=20api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../query/private_ip/PrivateIpList.java | 8 ++++++ .../query/private_ip/PrivateIpListGet.java | 7 ++++++ .../private_ip/PrivateIpListGetHandler.java | 17 +++++++++++++ .../private_ip/PrivateIpQueryController.java | 25 +++++++++++++++++++ 4 files changed, 57 insertions(+) create mode 100644 modules/main-api/src/main/java/com/whoz_in/main_api/query/private_ip/PrivateIpList.java create mode 100644 modules/main-api/src/main/java/com/whoz_in/main_api/query/private_ip/PrivateIpListGet.java create mode 100644 modules/main-api/src/main/java/com/whoz_in/main_api/query/private_ip/PrivateIpListGetHandler.java create mode 100644 modules/main-api/src/main/java/com/whoz_in/main_api/query/private_ip/PrivateIpQueryController.java diff --git a/modules/main-api/src/main/java/com/whoz_in/main_api/query/private_ip/PrivateIpList.java b/modules/main-api/src/main/java/com/whoz_in/main_api/query/private_ip/PrivateIpList.java new file mode 100644 index 00000000..3ecf46db --- /dev/null +++ b/modules/main-api/src/main/java/com/whoz_in/main_api/query/private_ip/PrivateIpList.java @@ -0,0 +1,8 @@ +package com.whoz_in.main_api.query.private_ip; + +import com.whoz_in.main_api.query.shared.application.Response; +import java.util.List; + +public record PrivateIpList( + List ipList +) implements Response {} diff --git a/modules/main-api/src/main/java/com/whoz_in/main_api/query/private_ip/PrivateIpListGet.java b/modules/main-api/src/main/java/com/whoz_in/main_api/query/private_ip/PrivateIpListGet.java new file mode 100644 index 00000000..44e441d3 --- /dev/null +++ b/modules/main-api/src/main/java/com/whoz_in/main_api/query/private_ip/PrivateIpListGet.java @@ -0,0 +1,7 @@ +package com.whoz_in.main_api.query.private_ip; + +import com.whoz_in.main_api.query.shared.application.Query; + +public record PrivateIpListGet( + String room +) implements Query {} diff --git a/modules/main-api/src/main/java/com/whoz_in/main_api/query/private_ip/PrivateIpListGetHandler.java b/modules/main-api/src/main/java/com/whoz_in/main_api/query/private_ip/PrivateIpListGetHandler.java new file mode 100644 index 00000000..f80f1094 --- /dev/null +++ b/modules/main-api/src/main/java/com/whoz_in/main_api/query/private_ip/PrivateIpListGetHandler.java @@ -0,0 +1,17 @@ +package com.whoz_in.main_api.query.private_ip; + +import com.whoz_in.main_api.query.shared.application.QueryHandler; +import com.whoz_in.main_api.shared.application.Handler; +import com.whoz_in.main_api.shared.caching.private_ip.PrivateIpStore; +import lombok.RequiredArgsConstructor; + +@Handler +@RequiredArgsConstructor +public class PrivateIpListGetHandler implements QueryHandler { + private final PrivateIpStore privateIpStore; + @Override + public PrivateIpList handle(PrivateIpListGet query) { + return new PrivateIpList(privateIpStore.get(query.room()).values().stream() + .toList()); + } +} diff --git a/modules/main-api/src/main/java/com/whoz_in/main_api/query/private_ip/PrivateIpQueryController.java b/modules/main-api/src/main/java/com/whoz_in/main_api/query/private_ip/PrivateIpQueryController.java new file mode 100644 index 00000000..164a5404 --- /dev/null +++ b/modules/main-api/src/main/java/com/whoz_in/main_api/query/private_ip/PrivateIpQueryController.java @@ -0,0 +1,25 @@ +package com.whoz_in.main_api.query.private_ip; + +import com.whoz_in.main_api.query.shared.application.QueryBus; +import com.whoz_in.main_api.query.shared.presentation.QueryController; +import com.whoz_in.main_api.shared.presentation.CrudResponseCode; +import com.whoz_in.main_api.shared.presentation.ResponseEntityGenerator; +import com.whoz_in.main_api.shared.presentation.SuccessBody; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/api/v1") +public class PrivateIpQueryController extends QueryController { + public PrivateIpQueryController(QueryBus queryBus) { + super(queryBus); + } + + @GetMapping("/private-ip/{room}") + public ResponseEntity> getPrivateIps(@PathVariable String room){ + return ResponseEntityGenerator.success(ask(new PrivateIpListGet(room)), CrudResponseCode.READ); + } +}