package com.lokesh.userservice.service.impl; import com.lokesh.userservice.model.User; import com.lokesh.userservice.repository.UserRepository; import com.lokesh.userservice.service.UserService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @Slf4j @Service public class UserServiceImpl implements UserService { @Autowired private UserRepository userRepository; @Override public Mono<User> save(User user) { return this.userRepository.save(user); } @Override public Mono<User> delete(String id) { return this.userRepository .findById(id).flatMap(p -> this.userRepository .deleteById(p.getUserId()) .thenReturn(p)); } @Override public Mono<User> update(String id, User user) { return this.userRepository.findById(id) .flatMap(u -> { u.setUserId(id); u.setEmailId(user.getEmailId()); u.setName(user.getName()); return save(u); }).switchIfEmpty(Mono.empty()); } @Override public Flux<User> findAll() { log.info("getting all users..."); return this.userRepository.findAll(); } @Override public Mono<User> findById(String id) { return this.userRepository.findById(id); } }