패스트캠퍼스
                
              패스트캠퍼스 환급챌린지 10일차 : 9개 도메인 프로젝트로 끝내는 백엔드 웹 개발 (Java/Spring) 초격차 패키지 Online 강의 후기
                이태우(1990년)
                 2025. 3. 14. 22:36
              
                          
            본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
공부 시작 시각 인증

수강 인증 사진

UserService.java
package org.fastcampus.user.application;
import java.util.IllformedLocaleException;
import org.fastcampus.user.application.Interfaces.*;
import org.fastcampus.user.application.dto.*;
import org.fastcampus.user.domain.*;
class UserService {
    private final UserRepository userRepository;
    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }
    public User createUser(CreateUserRequestDto dto) {
        UserInfo info = new UserInfo(dto.name(), dto.profileImageUrl());
        User user = new User(null, info);
        return userRepository.save(user);
    }
    public User getUser(Long id) {
        return userRepository.findById(id).orElseThrow(IllformedLocaleException::new);
    }
}
※ UserInfo 클래스에 'public' 예약어 추가됨!
UserRepository.java
package org.fastcampus.user.application.Interfaces;
import java.util.Optional;
import org.fastcampus.user.domain.*;
public interface UserRepository {
    User save(User user);
    Optional<User> findById(Long id);
}
UserRelationService.java
package org.fastcampus.user.application;
import org.fastcampus.user.application.Interfaces.*;
import org.fastcampus.user.application.dto.*;
import org.fastcampus.user.domain.*;
class UserRelationService {
    private final UserService userService;
    private final UserRelationRepository userRelationRepository;
    public UserRelationService(UserService userService,
            UserRelationRepository userRelationRepository) {
        this.userService = userService;
        this.userRelationRepository = userRelationRepository;
    }
    public void follow(FollowUserRequestDto dto) {
        User user = userService.getUser(dto.userId());
        User targetUser = userService.getUser(dto.targetUserId());
        if (userRelationRepository.isAlreadyFollow(user, targetUser)) {
            throw new IllegalArgumentException();
        }
        user.follow(targetUser);
        userRelationRepository.save(user, targetUser);
    }
    public void unfollow(FollowUserRequestDto dto) {
        User user = userService.getUser(dto.userId());
        User targetUser = userService.getUser(dto.targetUserId());
        if (!userRelationRepository.isAlreadyFollow(user, targetUser)) {
            throw new IllegalArgumentException();
        }
        user.follow(targetUser);
        userRelationRepository.delete(user, targetUser);
    }
}
UserRelationRepository.java
package org.fastcampus.user.application.Interfaces;
import org.fastcampus.user.domain.*;
public interface UserRelationRepository {
    boolean isAlreadyFollow(User user, User targetUser);
    void save(User user, User targetUser);
    void delete(User user, User targetUser);
}
학습 인증샷

공부 종료 시각 인증
