패스트캠퍼스

패스트캠퍼스 환급챌린지 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);
}

학습 인증샷

학습 인증샷

공부 종료 시각 인증

공부 종료 시각 인증

https://bit.ly/4hTSJNB