From af24234ae033caef8baf59a9b9a7e0808e8de483 Mon Sep 17 00:00:00 2001
From: YoungJun Park <youngjun108059@gmail.com>
Date: Thu, 23 Jun 2022 12:39:26 +0900
Subject: [PATCH] =?UTF-8?q?=F0=9F=91=94=20=ED=9A=8C=EC=9B=90=EA=B0=80?=
 =?UTF-8?q?=EC=9E=85=20Web(IN)=20=E2=86=92=20UseCase(#3)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../adapter/in/web/MemberController.java      | 28 +++++++++++++++----
 .../port/in/RegisterMemberUseCase.java        |  2 +-
 2 files changed, 23 insertions(+), 7 deletions(-)

diff --git a/api/src/main/java/hexagonal/api/member/adapter/in/web/MemberController.java b/api/src/main/java/hexagonal/api/member/adapter/in/web/MemberController.java
index 344f314..2576291 100644
--- a/api/src/main/java/hexagonal/api/member/adapter/in/web/MemberController.java
+++ b/api/src/main/java/hexagonal/api/member/adapter/in/web/MemberController.java
@@ -1,16 +1,32 @@
 package hexagonal.api.member.adapter.in.web;
 
 import hexagonal.api.member.adapter.in.web.request.RegisterMemberReq;
+import hexagonal.api.member.adapter.in.web.response.RegisterMemberResponse;
+import hexagonal.api.member.application.port.in.RegisterMemberCommand;
+import hexagonal.api.member.application.port.in.RegisterMemberUseCase;
+import lombok.RequiredArgsConstructor;
+import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
 
+@RestController
+@RequiredArgsConstructor
 public class MemberController {
 
-    @PostMapping("/member")
-    long registerMember(@RequestBody RegisterMemberReq memberInfo) {
-        // 입력모델 Valid Check 예외 처리
-        // 1. 회원 가입 요청 in port 추가
-        // 2. 영속성 out port 추가
-        return 0l;
+    private final RegisterMemberUseCase registerMemberUseCase;
+
+    @PostMapping("/v1/member")
+    ResponseEntity<RegisterMemberResponse> registerMember(@RequestBody RegisterMemberReq memberInfo) {
+        // ToDo 입력모델 Valid Check 예외 처리
+        RegisterMemberCommand command = new RegisterMemberCommand(
+                memberInfo.getName(),
+                memberInfo.getEmail(),
+                memberInfo.getType());
+
+        Long memberId = registerMemberUseCase.registerMember(command);
+        RegisterMemberResponse response = new RegisterMemberResponse(memberId, memberInfo.getEmail());
+        // Todo ResponseEntity + Global Exception 고민
+        return ResponseEntity.ok(response);
     }
 }
diff --git a/api/src/main/java/hexagonal/api/member/application/port/in/RegisterMemberUseCase.java b/api/src/main/java/hexagonal/api/member/application/port/in/RegisterMemberUseCase.java
index f8d817a..5943afb 100644
--- a/api/src/main/java/hexagonal/api/member/application/port/in/RegisterMemberUseCase.java
+++ b/api/src/main/java/hexagonal/api/member/application/port/in/RegisterMemberUseCase.java
@@ -2,5 +2,5 @@
 
 public interface RegisterMemberUseCase {
 
-    boolean registerMember();
+    Long registerMember(RegisterMemberCommand command);
 }