DummyGroupFactory.java

package qwerty.chaekit.global.init;

import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import qwerty.chaekit.domain.group.ReadingGroup;
import qwerty.chaekit.domain.group.repository.GroupRepository;
import qwerty.chaekit.domain.member.user.UserProfile;
import qwerty.chaekit.domain.member.user.UserProfileRepository;
import qwerty.chaekit.global.init.dummy.DummyGroup;
import qwerty.chaekit.global.init.dummy.DummyUser;

import java.util.Optional;

@Slf4j
@Component
@RequiredArgsConstructor
public class DummyGroupFactory {
    private final GroupRepository groupRepository;
    private final UserProfileRepository userProfileRepository;

    public void saveDummyGroups() {
        Optional<UserProfile> foundUser = userProfileRepository.findByNickname(DummyUser.LEADER.getNickname());
        if (foundUser.isEmpty()) {
            return;
        }
        UserProfile leader = foundUser.get();
        
        DummyGroup dummyGroup = DummyGroup.CLASSIC;
        ReadingGroup newGroup = ReadingGroup.builder()
                .name(dummyGroup.getName())
                .groupLeader(leader)
                .description(dummyGroup.getDescription())
                .groupImageKey(dummyGroup.getGroupImageKey())
                .build();
        
        if(!groupRepository.existsReadingGroupByName(newGroup.getName())) {
            ReadingGroup savedGroup = groupRepository.save(newGroup);
            savedGroup.addMember(leader).approve();
            savedGroup.addTags(dummyGroup.getTags());
            log.info("독서 모임\"{}\"이 새로 생성되었습니다.", newGroup.getName());
        }
    }
}