/
drobash
/
AdBoard_service
Обзор
Документация
Войти
/
drobash
/
AdBoard_service
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/main/java/org/example/service/UserService.java
60 строк
2 KB
dushesp
Добавлен CorsConfig и HealthController для работы с фронтендом
15 апр 2025, 01:00
15 апр 2025, 01:00
09315c6
Код
Авторство
О чём код?
package org.example.service; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.example.dto.request.UserRequestDto; import org.example.dto.response.UserResponseDto; import org.example.exception.ResourceNotFoundException; import org.example.exception.UserAlreadyExistsException; import org.example.exception.UserNotFoundException; import org.example.mapper.UserMapper; import org.example.model.User; import org.example.repository.UserRepository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service @RequiredArgsConstructor @Slf4j public class UserService { private final UserRepository repository; private final UserMapper mapper; @Transactional public UserResponseDto create(UserRequestDto dto) { if (repository.existsByUsername(dto.getUsername())) { throw new UserAlreadyExistsException("Username already exists"); } if (repository.existsByEmail(dto.getEmail())) { throw new UserAlreadyExistsException("Email already exists"); } User user = mapper.toEntity(dto); return mapper.toDto(repository.save(user)); } @Transactional(readOnly = true) public UserResponseDto get(Long id) { return mapper.toDto(findByIdOrThrow(id)); } @Transactional public UserResponseDto update(Long id, UserRequestDto dto) { User existing = findByIdOrThrow(id); mapper.updateFromDto(dto, existing); return mapper.toDto(repository.save(existing)); } @Transactional public void delete(Long id) { if (!repository.existsById(id)) { throw new UserNotFoundException(id); } repository.deleteById(id); } private User findByIdOrThrow(Long id) { return repository.findById(id) .orElseThrow(() -> new UserNotFoundException(id)); } }