UserService.java
package com.MedilaboSolutions.gateway.service;
import com.MedilaboSolutions.gateway.model.User;
import com.MedilaboSolutions.gateway.repository.UserRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Mono;
@Service
@RequiredArgsConstructor
public class UserService {
private final UserRepository userRepository;
// The @Transactional annotation is not required nor fully supported in reactive R2DBC context.
// For multistep transactional logic, manual transaction management is needed.
// For simple CRUD operations, this setup is sufficient and recommended for reactive applications.
public Mono<User> findByUsername(String username) {
return userRepository.findByUsername(username)
.switchIfEmpty(Mono.error(new UsernameNotFoundException("User not found.")));
}
public Mono<User> updateUserPicture(User user, String pictureUrl) {
user.setUrlPicture(pictureUrl);
return userRepository.save(user);
}
}