UserDatabaseRepository.java
package fr.avenirsesr.portfolio.api.infrastructure.adapter.repository;
import fr.avenirsesr.portfolio.api.domain.model.Student;
import fr.avenirsesr.portfolio.api.domain.model.Teacher;
import fr.avenirsesr.portfolio.api.domain.model.User;
import fr.avenirsesr.portfolio.api.domain.port.output.repository.UserRepository;
import fr.avenirsesr.portfolio.api.infrastructure.adapter.mapper.UserMapper;
import fr.avenirsesr.portfolio.api.infrastructure.adapter.model.UserEntity;
import java.util.List;
import org.springframework.stereotype.Component;
@Component
public class UserDatabaseRepository extends GenericJpaRepositoryAdapter<User, UserEntity>
implements UserRepository {
public UserDatabaseRepository(UserJpaRepository jpaRepository) {
super(jpaRepository, jpaRepository, UserMapper::fromDomain, UserMapper::toDomain);
}
@Override
public void save(Student student) {
jpaRepository.save(UserMapper.fromDomain(student));
}
@Override
public void saveAllStudents(List<Student> students) {
jpaRepository.saveAll(students.stream().map(UserMapper::fromDomain).toList());
}
@Override
public void save(Teacher teacher) {
jpaRepository.save(UserMapper.fromDomain(teacher));
}
@Override
public void saveAllTeachers(List<Teacher> teachers) {
jpaRepository.saveAll(teachers.stream().map(UserMapper::fromDomain).toList());
}
@Override
public long countAll() {
return jpaRepository.count();
}
}