package org.initialde.yakasave.Application;

import org.initialde.yakasave.Api.Requests.RegisterRequest;
import org.initialde.yakasave.Domain.Entities.User;
import org.initialde.yakasave.Domain.Exceptions.UserAlreadyExitsException;
import org.initialde.yakasave.Infrastructure.Persistence.UserRepository;
import org.springframework.stereotype.Service;

import java.util.UUID;

@Service
public class Register {
    private final UserRepository userRepository;

    public Register(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public void handle(RegisterRequest registerRequest) {
        if (userRepository.existsByUsername(registerRequest.username())) {
            throw new UserAlreadyExitsException();
        }
        var newUser = new User(UUID.randomUUID(), registerRequest.username(), registerRequest.password());
        newUser.hashPassword();
        userRepository.save(newUser);
    }
}
