diff --git a/casper-user/src/main/kotlin/hs/kr/entrydsm/user/domain/admin/application/port/in/QueryAdminByUUIDUseCase.kt b/casper-user/src/main/kotlin/hs/kr/entrydsm/user/domain/admin/application/port/in/QueryAdminByUUIDUseCase.kt index 5d34082..7e0d611 100644 --- a/casper-user/src/main/kotlin/hs/kr/entrydsm/user/domain/admin/application/port/in/QueryAdminByUUIDUseCase.kt +++ b/casper-user/src/main/kotlin/hs/kr/entrydsm/user/domain/admin/application/port/in/QueryAdminByUUIDUseCase.kt @@ -1,6 +1,6 @@ package hs.kr.entrydsm.user.domain.admin.application.port.`in` -import hs.kr.entrydsm.user.domain.admin.adapter.`in`.web.dto.response.InternalAdminResponse +import hs.kr.entrydsm.user.infrastructure.grpc.server.dto.InternalAdminResponse import java.util.UUID /** diff --git a/casper-user/src/main/kotlin/hs/kr/entrydsm/user/domain/admin/application/service/QueryAdminByUUIDService.kt b/casper-user/src/main/kotlin/hs/kr/entrydsm/user/domain/admin/application/service/QueryAdminByUUIDService.kt index 1ddf192..dfd7c5c 100644 --- a/casper-user/src/main/kotlin/hs/kr/entrydsm/user/domain/admin/application/service/QueryAdminByUUIDService.kt +++ b/casper-user/src/main/kotlin/hs/kr/entrydsm/user/domain/admin/application/service/QueryAdminByUUIDService.kt @@ -1,6 +1,6 @@ package hs.kr.entrydsm.user.domain.admin.application.service -import hs.kr.entrydsm.user.domain.admin.adapter.`in`.web.dto.response.InternalAdminResponse +import hs.kr.entrydsm.user.infrastructure.grpc.server.dto.InternalAdminResponse import hs.kr.entrydsm.user.domain.admin.application.port.`in`.QueryAdminByUUIDUseCase import hs.kr.entrydsm.user.domain.admin.application.port.out.QueryAdminPort import hs.kr.entrydsm.user.domain.admin.exception.AdminNotFoundException diff --git a/casper-user/src/main/kotlin/hs/kr/entrydsm/user/infrastructure/grpc/server/AdminGrpcService.kt b/casper-user/src/main/kotlin/hs/kr/entrydsm/user/infrastructure/grpc/server/AdminGrpcService.kt new file mode 100644 index 0000000..2fea78b --- /dev/null +++ b/casper-user/src/main/kotlin/hs/kr/entrydsm/user/infrastructure/grpc/server/AdminGrpcService.kt @@ -0,0 +1,28 @@ +package hs.kr.entrydsm.user.infrastructure.grpc.server + +import hs.kr.entrydsm.casper.admin.proto.AdminServiceGrpcKt +import hs.kr.entrydsm.casper.admin.proto.AdminServiceProto +import hs.kr.entrydsm.user.domain.admin.application.port.`in`.QueryAdminByUUIDUseCase +import hs.kr.entrydsm.user.infrastructure.grpc.server.mapper.UserGrpcMapper +import net.devh.boot.grpc.server.service.GrpcService +import java.util.UUID + +@GrpcService +class AdminGrpcService( + private val queryAdminByUUIDUseCase: QueryAdminByUUIDUseCase, + private val userGrpcMapper: UserGrpcMapper +) : AdminServiceGrpcKt.AdminServiceCoroutineImplBase() { + + /** + * 어드민 ID로 어드민 ID를 조회합니다. + * + * @param request 어드민 ID가 포함된 gRPC 요청 + * @return 어드민 ID gRPC 응답 + * @throws AdminNotFoundException admin을 찾을 수 없을 때 + */ + override suspend fun getAdminByUUID(request: AdminServiceProto.GetAdminIdRequest): AdminServiceProto.GetAdminIdResponse { + val adminId = UUID.fromString(request.adminId) + val currentAdminId = queryAdminByUUIDUseCase.queryByUUID(adminId) + return userGrpcMapper.toGetAdminIdResponse(currentAdminId) + } +} \ No newline at end of file diff --git a/casper-user/src/main/kotlin/hs/kr/entrydsm/user/domain/admin/adapter/in/web/dto/response/InternalAdminResponse.kt b/casper-user/src/main/kotlin/hs/kr/entrydsm/user/infrastructure/grpc/server/dto/InternalAdminResponse.kt similarity index 64% rename from casper-user/src/main/kotlin/hs/kr/entrydsm/user/domain/admin/adapter/in/web/dto/response/InternalAdminResponse.kt rename to casper-user/src/main/kotlin/hs/kr/entrydsm/user/infrastructure/grpc/server/dto/InternalAdminResponse.kt index 38d00e4..82ac6c4 100644 --- a/casper-user/src/main/kotlin/hs/kr/entrydsm/user/domain/admin/adapter/in/web/dto/response/InternalAdminResponse.kt +++ b/casper-user/src/main/kotlin/hs/kr/entrydsm/user/infrastructure/grpc/server/dto/InternalAdminResponse.kt @@ -1,10 +1,12 @@ -package hs.kr.entrydsm.user.domain.admin.adapter.`in`.web.dto.response +package hs.kr.entrydsm.user.infrastructure.grpc.server.dto import java.util.UUID /** * 내부 시스템 간 관리자 정보 응답 데이터를 담는 DTO 클래스입니다. + * + * @property id 고유 식별자 */ data class InternalAdminResponse( val id: UUID, -) +) \ No newline at end of file diff --git a/casper-user/src/main/kotlin/hs/kr/entrydsm/user/infrastructure/grpc/server/mapper/UserGrpcMapper.kt b/casper-user/src/main/kotlin/hs/kr/entrydsm/user/infrastructure/grpc/server/mapper/UserGrpcMapper.kt index fbb0bce..8465bec 100644 --- a/casper-user/src/main/kotlin/hs/kr/entrydsm/user/infrastructure/grpc/server/mapper/UserGrpcMapper.kt +++ b/casper-user/src/main/kotlin/hs/kr/entrydsm/user/infrastructure/grpc/server/mapper/UserGrpcMapper.kt @@ -1,6 +1,8 @@ package hs.kr.entrydsm.user.infrastructure.grpc.server.mapper +import hs.kr.entrydsm.casper.admin.proto.AdminServiceProto import hs.kr.entrydsm.casper.user.proto.UserServiceProto +import hs.kr.entrydsm.user.infrastructure.grpc.server.dto.InternalAdminResponse import hs.kr.entrydsm.user.infrastructure.grpc.server.dto.InternalUserResponse import hs.kr.entrydsm.user.domain.user.adapter.out.domain.UserRole import org.springframework.stereotype.Component @@ -27,6 +29,18 @@ class UserGrpcMapper { .setRole(toProtoUserRole(userResponse.role)) .build() } + + /** + * InternalAdminResponse 객체를 gRPC 사용자 정보 응답으로 변환합니다. + * + * @param adminResponse 변환할 사용자 응답 DTO + * @return gRPC 사용자 정보 응답 + */ + fun toGetAdminIdResponse(adminResponse: InternalAdminResponse): AdminServiceProto.GetAdminIdResponse { + return AdminServiceProto.GetAdminIdResponse.newBuilder() + .setAdminId(adminResponse.id.toString()) + .build() + } /** * 도메인 사용자 역할을 gRPC 프로토콜 사용자 역할로 변환합니다. diff --git a/casper-user/src/main/proto/admin.proto b/casper-user/src/main/proto/admin.proto new file mode 100644 index 0000000..3a5be72 --- /dev/null +++ b/casper-user/src/main/proto/admin.proto @@ -0,0 +1,18 @@ +syntax = "proto3"; + +package casper.user; + +option java_package = "hs.kr.entrydsm.casper.admin.proto"; +option java_outer_classname = "AdminServiceProto"; + +service AdminService { + rpc GetAdminByUUID(GetAdminIdRequest) returns (GetAdminIdResponse); +} + +message GetAdminIdRequest { + string admin_id =1; +} + +message GetAdminIdResponse{ + string admin_id = 1; +}