UserService.java

package api.services;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import api.dtos.UserDto;
import api.entities.User;
import api.exceptions.EntityNotFoundException;
import api.repositories.UserRepository;
import lombok.extern.slf4j.Slf4j;

/**
 * UserService.
 */
@Slf4j
@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;

    /**
     * Create new user.
     *
     * @return User id
     */
    @Transactional
    public User createUser() {
        User user = new User();
        userRepository.save(user);
        log.info("User created: " + user);
        return user;
    }

    /**
     * Get user.
     *
     * @param id User id
     * @return User
     */
    @Transactional(readOnly = true)
    public User getUser(int id) {
        if (!userRepository.existsById(id)) {
            throw new EntityNotFoundException("User " + id + " not found.");
        }
        User user = userRepository.getReferenceById(id);
        return user;
    }

    /**
     * Update user.
     *
     * @param updated Updated user info
     * @return User
     */
    @Transactional
    public User updateUser(UserDto updated) {
        User user = getUser(updated.getId());
        user.setName(updated.getName());
        log.info("User update: " + updated);
        return user;
    }

    /**
     * Delete user.
     *
     * @param id User id
     */
    @Transactional
    public void deleteUser(int id) {
        if (!userRepository.existsById(id)) {
            throw new EntityNotFoundException("User " + id + " not found.");
        }
        userRepository.deleteById(id);
        log.info("User deleted: " + id);
    }
}