From dd6a9551169d15ca1f35d1c099e2e77302a0fb3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=84=80=E1=85=AF=E1=86=AB=E1=84=8C=E1=85=A1=E1=86=BC?= =?UTF-8?q?=E1=84=89=E1=85=AE=E1=86=AB?= Date: Sun, 1 Sep 2024 14:04:46 +0900 Subject: [PATCH] =?UTF-8?q?[=E2=99=BB=EF=B8=8F=20refactor/#114]:=20signIn?= =?UTF-8?q?=20=EB=A9=94=EC=84=9C=EB=93=9C=20=EB=A6=AC=ED=8C=A9=ED=86=A0?= =?UTF-8?q?=EB=A7=81=20=EB=B0=8F=20=EC=BD=94=EB=93=9C=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - signIn 메서드 내 여러 책임을 분리하여 가독성과 재사용성을 향상시켰습니다. - 기존의 조건문을 Optional과 람다 표현식을 활용하여 간결하게 개선했습니다. --- .../service/AuthServiceImpl.java | 39 +++++++++++-------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/terning/terningserver/service/AuthServiceImpl.java b/src/main/java/org/terning/terningserver/service/AuthServiceImpl.java index 5dc96c3..71b79aa 100644 --- a/src/main/java/org/terning/terningserver/service/AuthServiceImpl.java +++ b/src/main/java/org/terning/terningserver/service/AuthServiceImpl.java @@ -47,22 +47,10 @@ public class AuthServiceImpl implements AuthService { @Transactional public SignInResponseDto signIn(String authAccessToken, SignInRequestDto request) { String authId = getAuthId(request.authType(), authAccessToken); - Optional userOptional = userRepository.findByAuthIdAndAuthType(authId, request.authType()); - - if (userOptional.isPresent()) { - User user = userOptional.get(); - Token token = getToken(user); - user.updateRefreshToken(token.getRefreshToken()); - return SignInResponseDto.of( - token, - authId, - request.authType(), - user.getId() - ); - } - else { - return SignInResponseDto.of(null, authId, request.authType(), null); - } + + return findUserByAuthIdAndType(authId, request.authType()) + .map(user -> createSignInResponseForExistingUser(user, authId, request.authType())) + .orElseGet(() -> createSignInResponseForNonExistingUser(authId, request.authType())); } @Transactional @@ -113,6 +101,25 @@ public void connectFilterToUser(long userId, long filterId) { userRepository.save(user); } + private Optional findUserByAuthIdAndType(String authId, AuthType authType) { + return userRepository.findByAuthIdAndAuthType(authId, authType); + } + + private SignInResponseDto createSignInResponseForExistingUser(User user, String authId, AuthType authType) { + Token token = getToken(user); + user.updateRefreshToken(token.getRefreshToken()); + return SignInResponseDto.of( + token, + authId, + authType, + user.getId() + ); + } + + private SignInResponseDto createSignInResponseForNonExistingUser(String authId, AuthType authType) { + return SignInResponseDto.of(null, authId, authType, null); + } + private String getAuthId(AuthType authType, String authAccessToken) { return switch (authType) { case APPLE -> appleService.getAppleData(authAccessToken);