package com.prgrms.team03linkbookbe.user.service;

import com.prgrms.team03linkbookbe.user.dto.UserCreateRequestDto;
import com.prgrms.team03linkbookbe.user.exception.DuplicatedEmailException;
import com.prgrms.team03linkbookbe.user.repository.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
@Transactional(readOnly = true)
@RequiredArgsConstructor
public class UserService implements UserDetailsService {

    private final UserRepository userRepository;

    @Transactional
    public void register(UserCreateRequestDto requestDto) {
        // 랜덤 닉네임 생성
        if(userRepository.existsByEmail(requestDto.getEmail())) {
            throw new DuplicatedEmailException("이미 가입된 이메일입니다.");
        }

        userRepository.save(requestDto.toEntity());
    }

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        return null;
    }
}