DBUsersReadWriteRepository.java

package es.um.atica.faker.users.adapters.jpa;

import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;

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

import es.um.atica.faker.users.domain.model.User;
import es.um.atica.faker.users.domain.repository.UsersReadRepository;
import es.um.atica.faker.users.domain.repository.UsersWriteRepository;

@Service
@org.springframework.context.annotation.Primary
public class DBUsersReadWriteRepository implements UsersReadRepository,UsersWriteRepository {

    @Autowired
    private JPAUsersReadRepository jpaUsersReadRepository;
    

    @Override
    public void saveUser(User user) {
        jpaUsersReadRepository.save(UserEntity.of(user));
    }

    @Override
    public void deleteUser(User user) {
        jpaUsersReadRepository.delete(UserEntity.of(user));
    }

    @Override
    public Optional<User> findUser(String userId) {
        return jpaUsersReadRepository.findById(userId).map(UserEntity::toModel);
    }

    @Override
    public Iterable<User> findAllUsers() {
        return StreamSupport.stream(jpaUsersReadRepository.findAll().spliterator(), false)
            .map(UserEntity::toModel).collect(Collectors.toList());
    }
    
}