From 0a9a80a6058d06f531d310c39b0211bc0451f299 Mon Sep 17 00:00:00 2001 From: dungbik Date: Sat, 14 Mar 2026 20:51:05 +0900 Subject: [PATCH] =?UTF-8?q?Feat:=20=EC=9D=B4=EB=A9=94=EC=9D=BC=EB=A1=9C=20?= =?UTF-8?q?=ED=9A=8C=EC=9B=90=20=EC=A1=B0=ED=9A=8C=20GRPC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../grpc/GrpcUserQueryService.java | 24 +++++++++++++++++++ src/main/proto/user_query.proto | 10 ++++++++ 2 files changed, 34 insertions(+) diff --git a/src/main/java/flipnote/user/user/presentation/grpc/GrpcUserQueryService.java b/src/main/java/flipnote/user/user/presentation/grpc/GrpcUserQueryService.java index 54a49de..24647e5 100644 --- a/src/main/java/flipnote/user/user/presentation/grpc/GrpcUserQueryService.java +++ b/src/main/java/flipnote/user/user/presentation/grpc/GrpcUserQueryService.java @@ -2,6 +2,8 @@ import flipnote.user.user.domain.User; import flipnote.user.user.domain.UserRepository; +import flipnote.user.grpc.GetUserByEmailRequest; +import flipnote.user.grpc.GetUserByEmailResponse; import flipnote.user.grpc.GetUserRequest; import flipnote.user.grpc.GetUserResponse; import flipnote.user.grpc.GetUsersRequest; @@ -61,6 +63,28 @@ public void getUsers(GetUsersRequest request, StreamObserver r } } + @Override + public void getUserByEmail(GetUserByEmailRequest request, StreamObserver responseObserver) { + try { + User user = userRepository.findByEmailAndStatus(request.getEmail(), User.Status.ACTIVE) + .orElse(null); + + GetUserByEmailResponse.Builder responseBuilder = GetUserByEmailResponse.newBuilder(); + + if (user != null) { + responseBuilder.setExists(true).setUser(toResponse(user)); + } else { + responseBuilder.setExists(false); + } + + responseObserver.onNext(responseBuilder.build()); + responseObserver.onCompleted(); + } catch (Exception e) { + log.error("gRPC getUserByEmail error. email: {}", request.getEmail(), e); + responseObserver.onError(Status.INTERNAL.withDescription("Internal error").asRuntimeException()); + } + } + private GetUserResponse toResponse(User user) { return GetUserResponse.newBuilder() .setId(user.getId()) diff --git a/src/main/proto/user_query.proto b/src/main/proto/user_query.proto index 93b3afb..688e7c1 100644 --- a/src/main/proto/user_query.proto +++ b/src/main/proto/user_query.proto @@ -9,6 +9,7 @@ package user_query; service UserQueryService { rpc GetUser(GetUserRequest) returns (GetUserResponse); rpc GetUsers(GetUsersRequest) returns (GetUsersResponse); + rpc GetUserByEmail(GetUserByEmailRequest) returns (GetUserByEmailResponse); } message GetUserRequest { @@ -29,3 +30,12 @@ message GetUsersRequest { message GetUsersResponse { repeated GetUserResponse users = 1; } + +message GetUserByEmailRequest { + string email = 1; +} + +message GetUserByEmailResponse { + bool exists = 1; + GetUserResponse user = 2; +}