From 224a83c232524541be0329cf2e91bede74893362 Mon Sep 17 00:00:00 2001 From: unanchoi Date: Sat, 23 Mar 2024 19:24:59 +0900 Subject: [PATCH] =?UTF-8?q?[REFACTOR]=20Service=EC=97=90=EC=84=9C=20Adapte?= =?UTF-8?q?r=20=EA=B3=84=EC=B8=B5=EC=9D=84=20=EC=9D=98=EC=A1=B4=ED=95=98?= =?UTF-8?q?=EB=8F=84=EB=A1=9D=20=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../smeem/api/auth/service/AuthService.java | 35 +++++++---------- .../smeem/api/auth/service/TokenService.java | 5 ++- .../smeem/api/badge/service/BadgeService.java | 4 +- .../member/service/MemberBadgeService.java | 18 ++++----- .../api/member/service/MemberService.java | 34 +++++++--------- .../member/service/TrainingTimeService.java | 20 +++++----- .../member/adapter/member/MemberDeleter.java | 16 ++++++++ .../member/adapter/member/MemberFinder.java | 39 +++++++++++++++++++ .../member/adapter/member/MemberSaver.java | 18 +++++++++ .../member/adapter/member/MemberUpdater.java | 14 +++++++ .../MemberBadgeDeleter.java} | 10 ++--- .../memberbadge/MemberBadgeFinder.java | 26 +++++++++++++ .../{ => memberbadge}/MemberBadgeSaver.java | 3 +- .../trainingtime/TrainingTimeDeleter.java | 25 ++++++++++++ .../trainingtime/TrainingTimeFinder.java | 23 +++++++++++ .../trainingtime/TrainingTimeSaver.java | 16 ++++++++ 16 files changed, 236 insertions(+), 70 deletions(-) create mode 100644 smeem-domain/src/main/java/com/smeem/domain/member/adapter/member/MemberDeleter.java create mode 100644 smeem-domain/src/main/java/com/smeem/domain/member/adapter/member/MemberFinder.java create mode 100644 smeem-domain/src/main/java/com/smeem/domain/member/adapter/member/MemberSaver.java create mode 100644 smeem-domain/src/main/java/com/smeem/domain/member/adapter/member/MemberUpdater.java rename smeem-domain/src/main/java/com/smeem/domain/member/adapter/{MemberBadgeFinder.java => memberbadge/MemberBadgeDeleter.java} (60%) create mode 100644 smeem-domain/src/main/java/com/smeem/domain/member/adapter/memberbadge/MemberBadgeFinder.java rename smeem-domain/src/main/java/com/smeem/domain/member/adapter/{ => memberbadge}/MemberBadgeSaver.java (83%) create mode 100644 smeem-domain/src/main/java/com/smeem/domain/member/adapter/trainingtime/TrainingTimeDeleter.java create mode 100644 smeem-domain/src/main/java/com/smeem/domain/member/adapter/trainingtime/TrainingTimeFinder.java create mode 100644 smeem-domain/src/main/java/com/smeem/domain/member/adapter/trainingtime/TrainingTimeSaver.java diff --git a/smeem-api/src/main/java/com/smeem/api/auth/service/AuthService.java b/smeem-api/src/main/java/com/smeem/api/auth/service/AuthService.java index 35efff8b..981b0001 100644 --- a/smeem-api/src/main/java/com/smeem/api/auth/service/AuthService.java +++ b/smeem-api/src/main/java/com/smeem/api/auth/service/AuthService.java @@ -6,11 +6,12 @@ import com.smeem.api.diary.service.DiaryCommandService; import com.smeem.api.member.service.MemberBadgeService; import com.smeem.api.member.service.TrainingTimeService; -import com.smeem.common.exception.MemberException; import com.smeem.common.exception.TokenException; +import com.smeem.domain.member.adapter.member.MemberDeleter; +import com.smeem.domain.member.adapter.member.MemberFinder; +import com.smeem.domain.member.adapter.member.MemberSaver; import com.smeem.domain.member.model.Member; import com.smeem.domain.member.model.SocialType; -import com.smeem.domain.member.repository.MemberRepository; import com.smeem.external.oauth.apple.AppleService; import com.smeem.external.oauth.kakao.KakaoService; import lombok.RequiredArgsConstructor; @@ -22,7 +23,6 @@ import java.security.spec.InvalidKeySpecException; import static com.smeem.common.code.failure.AuthFailureCode.INVALID_TOKEN; -import static com.smeem.common.code.failure.MemberFailureCode.INVALID_MEMBER; import static java.util.Objects.nonNull; @Service @@ -30,8 +30,9 @@ @Transactional(readOnly = true) public class AuthService { - private final MemberRepository memberRepository; - + private final MemberFinder memberFinder; + private final MemberSaver memberSaver; + private final MemberDeleter memberDeleter; private final TokenService tokenService; private final AppleService appleService; private final KakaoService kakaoService; @@ -46,7 +47,7 @@ public SignInServiceResponse signIn(final String socialAccessToken, final SignIn val existMember = isMemberBySocialAndSocialId(socialType, socialId); if (!existMember) { val initialMember = Member.createInitialMember(socialType, socialId, request.fcmToken()); - memberRepository.save(initialMember); + memberSaver.save(initialMember); } val signedMember = getMemberBySocialAndSocialId(socialType, socialId); val isRegistered = nonNull(signedMember.getUsername()); @@ -58,37 +59,31 @@ public SignInServiceResponse signIn(final String socialAccessToken, final SignIn @Transactional public void signOut(final long memberId) { - val member = get(memberId); + val member = memberFinder.findById(memberId); member.updateRefreshToken(null); } @Transactional public void withdraw(final long memberId) { - val member = get(memberId); + val member = memberFinder.findById(memberId); diaryService.deleteAllByMember(member); trainingTimeService.deleteAllByMember(member); memberBadgeService.deleteAllByMember(member); - memberRepository.deleteById(memberId); - } - - private Member get(final long memberId) { - return memberRepository.findById(memberId) - .orElseThrow(() -> new MemberException(INVALID_MEMBER)); + memberDeleter.deleteById(memberId); } private Member getMemberBySocialAndSocialId(final SocialType socialType, final String socialId) { - return memberRepository.findBySocialAndSocialId(socialType, socialId) - .orElseThrow(() -> new MemberException(INVALID_MEMBER)); + return memberFinder.findBySocialAndSocialId(socialType, socialId); } private boolean isMemberBySocialAndSocialId(SocialType socialType, String socialId) { - return memberRepository.existsBySocialAndSocialId(socialType, socialId); + return memberFinder.existsBySocialAndSocialId(socialType, socialId); } private String socialLogin(SocialType socialType, final String socialAccessToken) { - return switch (socialType.toString()) { - case "APPLE" -> appleService.getAppleData(socialAccessToken); - case "KAKAO" -> kakaoService.getKakaoData(socialAccessToken); + return switch (socialType) { + case APPLE -> appleService.getAppleData(socialAccessToken); + case KAKAO -> kakaoService.getKakaoData(socialAccessToken); default -> throw new TokenException(INVALID_TOKEN); }; } diff --git a/smeem-api/src/main/java/com/smeem/api/auth/service/TokenService.java b/smeem-api/src/main/java/com/smeem/api/auth/service/TokenService.java index b3d36cf6..88180a35 100644 --- a/smeem-api/src/main/java/com/smeem/api/auth/service/TokenService.java +++ b/smeem-api/src/main/java/com/smeem/api/auth/service/TokenService.java @@ -6,6 +6,7 @@ import com.smeem.api.auth.jwt.SmeemToken; import com.smeem.api.auth.service.dto.response.TokenServiceResponse; import com.smeem.api.member.service.MemberService; +import com.smeem.domain.member.adapter.member.MemberFinder; import lombok.RequiredArgsConstructor; import lombok.val; import org.springframework.security.core.Authentication; @@ -20,13 +21,13 @@ public class TokenService { private static final Long ACCESS_TOKEN_EXPIRATION_TIME = 60 * 60 * 1000 * 2 * 12 * 1000000L; // 2시간 private static final Long REFRESH_TOKEN_EXPIRATION_TIME = 60 * 60 * 1000 * 24 * 14L; // 2주 - private final MemberService memberService; + private final MemberFinder memberFinder; private final TokenProvider tokenProvider; @Transactional public TokenServiceResponse issueToken(final long memberId) { val token = generateSmeemToken(UserAuthentication.create(memberId)); - val member = memberService.get(memberId); + val member = memberFinder.findById(memberId); member.updateRefreshToken(token.getRefreshToken()); return TokenServiceResponse.of(token); } diff --git a/smeem-api/src/main/java/com/smeem/api/badge/service/BadgeService.java b/smeem-api/src/main/java/com/smeem/api/badge/service/BadgeService.java index 00a72fa7..2d091c49 100644 --- a/smeem-api/src/main/java/com/smeem/api/badge/service/BadgeService.java +++ b/smeem-api/src/main/java/com/smeem/api/badge/service/BadgeService.java @@ -4,8 +4,8 @@ import com.smeem.domain.badge.adapter.BadgeFinder; import com.smeem.domain.badge.model.Badge; import com.smeem.domain.badge.model.BadgeType; -import com.smeem.domain.member.adapter.MemberBadgeFinder; -import com.smeem.domain.member.adapter.MemberBadgeSaver; +import com.smeem.domain.member.adapter.memberbadge.MemberBadgeFinder; +import com.smeem.domain.member.adapter.memberbadge.MemberBadgeSaver; import com.smeem.domain.member.model.Member; import com.smeem.domain.member.model.MemberBadge; import lombok.RequiredArgsConstructor; diff --git a/smeem-api/src/main/java/com/smeem/api/member/service/MemberBadgeService.java b/smeem-api/src/main/java/com/smeem/api/member/service/MemberBadgeService.java index 31e302a4..90bf345e 100644 --- a/smeem-api/src/main/java/com/smeem/api/member/service/MemberBadgeService.java +++ b/smeem-api/src/main/java/com/smeem/api/member/service/MemberBadgeService.java @@ -1,28 +1,29 @@ package com.smeem.api.member.service; -import com.smeem.common.exception.BadgeException; import com.smeem.domain.badge.model.Badge; +import com.smeem.domain.member.adapter.memberbadge.MemberBadgeDeleter; +import com.smeem.domain.member.adapter.memberbadge.MemberBadgeFinder; +import com.smeem.domain.member.adapter.memberbadge.MemberBadgeSaver; import com.smeem.domain.member.model.Member; import com.smeem.domain.member.model.MemberBadge; -import com.smeem.domain.member.repository.MemberBadgeRepository; import lombok.RequiredArgsConstructor; import lombok.val; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import static com.smeem.common.code.failure.BadgeFailureCode.EMPTY_BADGE; - @Service @RequiredArgsConstructor @Transactional(readOnly = true) public class MemberBadgeService { - private final MemberBadgeRepository memberBadgeRepository; + private final MemberBadgeFinder memberBadgeFinder; + private final MemberBadgeSaver memberBadgeSaver; + private final MemberBadgeDeleter memberBadgeDeleter; @Transactional public void deleteAllByMember(final Member member) { - memberBadgeRepository.deleteAllInBatch(member.getBadges()); + memberBadgeDeleter.deleteAllInBatch(member.getBadges()); } @Transactional @@ -31,11 +32,10 @@ public void save(Member member, Badge badge) { .member(member) .badge(badge) .build(); - memberBadgeRepository.save(memberBadge); + memberBadgeSaver.save(memberBadge); } public Badge getBadgeByMemberId(final long memberId) { - return memberBadgeRepository.findFirstByMemberIdOrderByCreatedAtDesc(memberId).orElseThrow( - () -> new BadgeException(EMPTY_BADGE)).getBadge(); + return memberBadgeFinder.findFirstByMemberIdOrderByCreatedAtDesc(memberId).getBadge(); } } diff --git a/smeem-api/src/main/java/com/smeem/api/member/service/MemberService.java b/smeem-api/src/main/java/com/smeem/api/member/service/MemberService.java index 74f78145..b16a027d 100644 --- a/smeem-api/src/main/java/com/smeem/api/member/service/MemberService.java +++ b/smeem-api/src/main/java/com/smeem/api/member/service/MemberService.java @@ -1,7 +1,6 @@ package com.smeem.api.member.service; -import com.smeem.api.badge.service.BadgeService; import com.smeem.api.badge.service.dto.response.BadgeServiceResponse; import com.smeem.api.goal.service.GoalService; import com.smeem.api.goal.service.dto.request.GoalGetServiceRequest; @@ -16,9 +15,11 @@ import com.smeem.common.config.ValueConfig; import com.smeem.common.exception.MemberException; import com.smeem.common.exception.TrainingTimeException; +import com.smeem.domain.badge.adapter.BadgeFinder; import com.smeem.domain.badge.model.Badge; +import com.smeem.domain.member.adapter.member.MemberFinder; +import com.smeem.domain.member.adapter.member.MemberUpdater; import com.smeem.domain.member.model.Member; -import com.smeem.domain.member.repository.MemberRepository; import com.smeem.domain.training.model.DayType; import com.smeem.domain.training.model.TrainingTime; import com.smeem.external.discord.DiscordAlarmSender; @@ -33,7 +34,6 @@ import java.util.stream.Collectors; import static com.smeem.common.code.failure.MemberFailureCode.DUPLICATE_USERNAME; -import static com.smeem.common.code.failure.MemberFailureCode.EMPTY_MEMBER; import static com.smeem.common.code.failure.TrainingTimeFailureCode.NOT_SET_TRAINING_TIME; import static com.smeem.common.config.ValueConfig.SIGN_IN_MESSAGE; import static com.smeem.external.discord.DiscordAlarmCase.INFO; @@ -45,20 +45,21 @@ @RequiredArgsConstructor public class MemberService { - private final MemberRepository memberRepository; - private final TrainingTimeService trainingTimeService; private final GoalService goalService; - private final BadgeService badgeService; private final MemberBadgeService memberBadgeService; private final DiscordAlarmSender discordAlarmSender; + private final BadgeFinder badgeFinder; + private final MemberFinder memberFinder; + private final MemberUpdater memberUpdater; + private final ValueConfig valueConfig; @Transactional public MemberUpdateServiceResponse updateUserProfile(final long memberId, final MemberServiceUpdateUserProfileRequest request) { checkMemberDuplicate(request.username()); - val member = get(memberId); + val member = memberFinder.findById(memberId); updateTermAccepted(member, request); ArrayList badges = new ArrayList<>(); @@ -71,7 +72,7 @@ public MemberUpdateServiceResponse updateUserProfile(final long memberId, final } public MemberGetServiceResponse getMemberProfile(final long memberId) { - val member = get(memberId); + val member = memberFinder.findById(memberId); val goal = goalService.getByType(GoalGetServiceRequest.of(member.getGoal())); val trainingTimes = trainingTimeService.getAllByMember(member); @@ -91,7 +92,7 @@ public MemberGetServiceResponse getMemberProfile(final long memberId) { @Transactional public void updateLearningPlan(final long memberId, final MemberUpdatePlanServiceRequest request) { - val member = get(memberId); + val member = memberFinder.findById(memberId); member.updateGoal(request.goalType()); member.updateHasAlarm(request.hasAlarm()); updateTrainingTime(member, request.trainingTime()); @@ -99,20 +100,15 @@ public void updateLearningPlan(final long memberId, final MemberUpdatePlanServic @Transactional public void updateHasAlarm(final long memberId, final MemberPushUpdateServiceRequest request) { - val member = get(memberId); + val member = memberFinder.findById(memberId); member.updateHasAlarm(request.hasAlarm()); } public MemberNameServiceResponse checkDuplicatedName(final String name) { - val isExist = memberRepository.existsByUsername(name); + val isExist = memberFinder.existsByUsername(name); return MemberNameServiceResponse.of(isExist); } - public Member get(final long id) { - return memberRepository.findById(id) - .orElseThrow(() -> new MemberException(EMPTY_MEMBER)); - } - private void updateTrainingTime(Member member, TrainingTimeServiceRequest request) { if (nonNull(request) && StringUtils.hasText(request.day())) { trainingTimeService.deleteAll(member); @@ -145,13 +141,13 @@ private String getDays(List trainingTimes) { } private void checkMemberDuplicate(final String username) { - if (memberRepository.existsByUsername(username)) { + if (memberFinder.existsByUsername(username)) { throw new MemberException(DUPLICATE_USERNAME); } } private void addWelcomeBadge(final Member member, List badges) { - Badge welcomeBadge = badgeService.get(valueConfig.getWELCOME_BADGE_ID()); + Badge welcomeBadge = badgeFinder.findById(valueConfig.getWELCOME_BADGE_ID()); memberBadgeService.save(member, welcomeBadge); badges.add(welcomeBadge); } @@ -170,7 +166,7 @@ private boolean isNewMember(Member member) { private void updateTermAccepted(final Member member, final MemberServiceUpdateUserProfileRequest request) { if (nonNull(request.termAccepted())) { - member.updateTermAccepted(request.termAccepted()); + memberUpdater.updateTermAccepted(member, request.termAccepted()); } } } \ No newline at end of file diff --git a/smeem-api/src/main/java/com/smeem/api/member/service/TrainingTimeService.java b/smeem-api/src/main/java/com/smeem/api/member/service/TrainingTimeService.java index 5f37f240..861f3f2b 100644 --- a/smeem-api/src/main/java/com/smeem/api/member/service/TrainingTimeService.java +++ b/smeem-api/src/main/java/com/smeem/api/member/service/TrainingTimeService.java @@ -1,9 +1,11 @@ package com.smeem.api.member.service; +import com.smeem.domain.member.adapter.trainingtime.TrainingTimeDeleter; +import com.smeem.domain.member.adapter.trainingtime.TrainingTimeFinder; +import com.smeem.domain.member.adapter.trainingtime.TrainingTimeSaver; import com.smeem.domain.member.model.Member; import com.smeem.domain.training.model.TrainingTime; -import com.smeem.domain.training.repository.TrainingTimeRepository; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -14,26 +16,24 @@ @RequiredArgsConstructor public class TrainingTimeService { - private final TrainingTimeRepository trainingTimeRepository; + private final TrainingTimeFinder trainingTimeFinder; + private final TrainingTimeDeleter trainingTimeDeleter; + private final TrainingTimeSaver trainingTimeSaver; public void deleteAllByMember(Member member) { - trainingTimeRepository.deleteAllByMember(member); - } - - protected TrainingTime get(Long id) { - return trainingTimeRepository.findById(id).orElse(null); + trainingTimeDeleter.deleteAllByMember(member); } protected void deleteAll(Member member) { - trainingTimeRepository.deleteAll(member.getTrainingTimes()); + trainingTimeDeleter.deleteAllInBatch(member.getTrainingTimes()); } protected void save(TrainingTime trainingTime) { - trainingTimeRepository.save(trainingTime); + trainingTimeSaver.save(trainingTime); } protected List getAllByMember(Member member) { - return trainingTimeRepository.findAllByMember(member); + return trainingTimeFinder.findAllByMember(member); } } diff --git a/smeem-domain/src/main/java/com/smeem/domain/member/adapter/member/MemberDeleter.java b/smeem-domain/src/main/java/com/smeem/domain/member/adapter/member/MemberDeleter.java new file mode 100644 index 00000000..57f33f2e --- /dev/null +++ b/smeem-domain/src/main/java/com/smeem/domain/member/adapter/member/MemberDeleter.java @@ -0,0 +1,16 @@ +package com.smeem.domain.member.adapter.member; + +import com.smeem.domain.member.repository.MemberRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +public class MemberDeleter { + + private final MemberRepository memberRepository; + + public void deleteById(Long id) { + memberRepository.deleteById(id); + } +} diff --git a/smeem-domain/src/main/java/com/smeem/domain/member/adapter/member/MemberFinder.java b/smeem-domain/src/main/java/com/smeem/domain/member/adapter/member/MemberFinder.java new file mode 100644 index 00000000..3e3bd3a6 --- /dev/null +++ b/smeem-domain/src/main/java/com/smeem/domain/member/adapter/member/MemberFinder.java @@ -0,0 +1,39 @@ +package com.smeem.domain.member.adapter.member; + +import com.smeem.common.exception.MemberException; +import com.smeem.domain.member.model.Member; +import com.smeem.domain.member.model.SocialType; +import com.smeem.domain.member.repository.MemberRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import static com.smeem.common.code.failure.MemberFailureCode.EMPTY_MEMBER; + +@Component +@RequiredArgsConstructor +public class MemberFinder { + + private final MemberRepository memberRepository; + + public boolean existsByUsername(String username) { + return memberRepository.existsByUsername(username); + } + + public boolean existsBySocialAndSocialId(SocialType socialType, String socialId) { + return memberRepository.existsBySocialAndSocialId(socialType, socialId); + } + + public Member findById(final long id) { + return memberRepository.findById(id) + .orElseThrow(() -> new MemberException(EMPTY_MEMBER)); + } + + public Member findBySocialAndSocialId(final SocialType socialType, final String socialId) { + return memberRepository.findBySocialAndSocialId(socialType, socialId) + .orElseThrow(() -> new MemberException(EMPTY_MEMBER)); + } + + +} + + diff --git a/smeem-domain/src/main/java/com/smeem/domain/member/adapter/member/MemberSaver.java b/smeem-domain/src/main/java/com/smeem/domain/member/adapter/member/MemberSaver.java new file mode 100644 index 00000000..a55934b6 --- /dev/null +++ b/smeem-domain/src/main/java/com/smeem/domain/member/adapter/member/MemberSaver.java @@ -0,0 +1,18 @@ +package com.smeem.domain.member.adapter.member; + + +import com.smeem.domain.member.model.Member; +import com.smeem.domain.member.repository.MemberRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +public class MemberSaver { + + private final MemberRepository memberRepository; + + public void save(Member member) { + memberRepository.save(member); + } +} diff --git a/smeem-domain/src/main/java/com/smeem/domain/member/adapter/member/MemberUpdater.java b/smeem-domain/src/main/java/com/smeem/domain/member/adapter/member/MemberUpdater.java new file mode 100644 index 00000000..09dfd692 --- /dev/null +++ b/smeem-domain/src/main/java/com/smeem/domain/member/adapter/member/MemberUpdater.java @@ -0,0 +1,14 @@ +package com.smeem.domain.member.adapter.member; + +import com.smeem.domain.member.model.Member; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +public class MemberUpdater { + + public void updateTermAccepted(final Member member, final boolean termAccepted) { + member.updateTermAccepted(termAccepted); + } +} diff --git a/smeem-domain/src/main/java/com/smeem/domain/member/adapter/MemberBadgeFinder.java b/smeem-domain/src/main/java/com/smeem/domain/member/adapter/memberbadge/MemberBadgeDeleter.java similarity index 60% rename from smeem-domain/src/main/java/com/smeem/domain/member/adapter/MemberBadgeFinder.java rename to smeem-domain/src/main/java/com/smeem/domain/member/adapter/memberbadge/MemberBadgeDeleter.java index 0e2d7203..e994848e 100644 --- a/smeem-domain/src/main/java/com/smeem/domain/member/adapter/MemberBadgeFinder.java +++ b/smeem-domain/src/main/java/com/smeem/domain/member/adapter/memberbadge/MemberBadgeDeleter.java @@ -1,4 +1,4 @@ -package com.smeem.domain.member.adapter; +package com.smeem.domain.member.adapter.memberbadge; import com.smeem.domain.member.model.MemberBadge; import com.smeem.domain.member.repository.MemberBadgeRepository; @@ -9,12 +9,10 @@ @Component @RequiredArgsConstructor -public class MemberBadgeFinder { - +public class MemberBadgeDeleter { private final MemberBadgeRepository memberBadgeRepository; - public List findAllByMemberId(final long id) { - return memberBadgeRepository.findAllByMemberId(id); + public void deleteAllInBatch(List memberBadges) { + memberBadgeRepository.deleteAllInBatch(memberBadges); } - } diff --git a/smeem-domain/src/main/java/com/smeem/domain/member/adapter/memberbadge/MemberBadgeFinder.java b/smeem-domain/src/main/java/com/smeem/domain/member/adapter/memberbadge/MemberBadgeFinder.java new file mode 100644 index 00000000..9f4b2950 --- /dev/null +++ b/smeem-domain/src/main/java/com/smeem/domain/member/adapter/memberbadge/MemberBadgeFinder.java @@ -0,0 +1,26 @@ +package com.smeem.domain.member.adapter.memberbadge; + +import com.smeem.common.code.failure.MemberFailureCode; +import com.smeem.common.exception.MemberException; +import com.smeem.domain.member.model.MemberBadge; +import com.smeem.domain.member.repository.MemberBadgeRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +@RequiredArgsConstructor +public class MemberBadgeFinder { + + private final MemberBadgeRepository memberBadgeRepository; + + public List findAllByMemberId(final long id) { + return memberBadgeRepository.findAllByMemberId(id); + } + + public MemberBadge findFirstByMemberIdOrderByCreatedAtDesc(final long id) { + return memberBadgeRepository.findFirstByMemberIdOrderByCreatedAtDesc(id) + .orElseThrow(() -> new MemberException(MemberFailureCode.EMPTY_MEMBER)); + } +} diff --git a/smeem-domain/src/main/java/com/smeem/domain/member/adapter/MemberBadgeSaver.java b/smeem-domain/src/main/java/com/smeem/domain/member/adapter/memberbadge/MemberBadgeSaver.java similarity index 83% rename from smeem-domain/src/main/java/com/smeem/domain/member/adapter/MemberBadgeSaver.java rename to smeem-domain/src/main/java/com/smeem/domain/member/adapter/memberbadge/MemberBadgeSaver.java index 6051fd09..012589a7 100644 --- a/smeem-domain/src/main/java/com/smeem/domain/member/adapter/MemberBadgeSaver.java +++ b/smeem-domain/src/main/java/com/smeem/domain/member/adapter/memberbadge/MemberBadgeSaver.java @@ -1,6 +1,5 @@ -package com.smeem.domain.member.adapter; +package com.smeem.domain.member.adapter.memberbadge; -import com.smeem.domain.member.model.Member; import com.smeem.domain.member.model.MemberBadge; import com.smeem.domain.member.repository.MemberBadgeRepository; import lombok.RequiredArgsConstructor; diff --git a/smeem-domain/src/main/java/com/smeem/domain/member/adapter/trainingtime/TrainingTimeDeleter.java b/smeem-domain/src/main/java/com/smeem/domain/member/adapter/trainingtime/TrainingTimeDeleter.java new file mode 100644 index 00000000..bfc8cb4e --- /dev/null +++ b/smeem-domain/src/main/java/com/smeem/domain/member/adapter/trainingtime/TrainingTimeDeleter.java @@ -0,0 +1,25 @@ +package com.smeem.domain.member.adapter.trainingtime; + + +import com.smeem.domain.member.model.Member; +import com.smeem.domain.training.model.TrainingTime; +import com.smeem.domain.training.repository.TrainingTimeRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +@RequiredArgsConstructor +public class TrainingTimeDeleter { + + private final TrainingTimeRepository trainingTimeRepository; + + public void deleteAllByMember(final Member member) { + trainingTimeRepository.deleteAllByMember(member); + } + + public void deleteAllInBatch(List trainingTimes) { + trainingTimeRepository.deleteAllInBatch(trainingTimes); + } +} diff --git a/smeem-domain/src/main/java/com/smeem/domain/member/adapter/trainingtime/TrainingTimeFinder.java b/smeem-domain/src/main/java/com/smeem/domain/member/adapter/trainingtime/TrainingTimeFinder.java new file mode 100644 index 00000000..c6122b29 --- /dev/null +++ b/smeem-domain/src/main/java/com/smeem/domain/member/adapter/trainingtime/TrainingTimeFinder.java @@ -0,0 +1,23 @@ +package com.smeem.domain.member.adapter.trainingtime; + +import com.smeem.domain.member.model.Member; +import com.smeem.domain.training.model.TrainingTime; +import com.smeem.domain.training.repository.TrainingTimeRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +import java.util.List; + +@Component +@RequiredArgsConstructor +public class TrainingTimeFinder { + private final TrainingTimeRepository trainingTimeRepository; + + public TrainingTime findById(final long id) { + return trainingTimeRepository.findById(id).orElse(null); + } + + public List findAllByMember(final Member member) { + return trainingTimeRepository.findAllByMember(member); + } +} diff --git a/smeem-domain/src/main/java/com/smeem/domain/member/adapter/trainingtime/TrainingTimeSaver.java b/smeem-domain/src/main/java/com/smeem/domain/member/adapter/trainingtime/TrainingTimeSaver.java new file mode 100644 index 00000000..9a24ff46 --- /dev/null +++ b/smeem-domain/src/main/java/com/smeem/domain/member/adapter/trainingtime/TrainingTimeSaver.java @@ -0,0 +1,16 @@ +package com.smeem.domain.member.adapter.trainingtime; + +import com.smeem.domain.training.model.TrainingTime; +import com.smeem.domain.training.repository.TrainingTimeRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Component; + +@Component +@RequiredArgsConstructor +public class TrainingTimeSaver { + private final TrainingTimeRepository trainingTimeRepository; + + public TrainingTime save(final TrainingTime trainingTime) { + return trainingTimeRepository.save(trainingTime); + } +}