SelfKnowledgeElementDatabaseRepository.java
package fr.avenirsesr.portfolio.selfknowledge.infrastructure.adapter.repository;
import fr.avenirsesr.portfolio.common.data.domain.model.PageCriteria;
import fr.avenirsesr.portfolio.common.data.domain.model.PagedResult;
import fr.avenirsesr.portfolio.common.data.infrastructure.adapter.repository.GenericJpaRepositoryAdapter;
import fr.avenirsesr.portfolio.selfknowledge.domain.model.SelfKnowledgeCategory;
import fr.avenirsesr.portfolio.selfknowledge.domain.model.SelfKnowledgeElement;
import fr.avenirsesr.portfolio.selfknowledge.domain.port.output.repository.SelfKnowledgeElementRepository;
import fr.avenirsesr.portfolio.selfknowledge.infrastructure.adapter.mapper.SelfKnowledgeCategoryMapper;
import fr.avenirsesr.portfolio.selfknowledge.infrastructure.adapter.mapper.SelfKnowledgeElementMapper;
import fr.avenirsesr.portfolio.selfknowledge.infrastructure.adapter.model.SelfKnowledgeElementEntity;
import fr.avenirsesr.portfolio.selfknowledge.infrastructure.adapter.specification.SelfKnowledgeElementSpecification;
import fr.avenirsesr.portfolio.user.domain.model.Student;
import fr.avenirsesr.portfolio.user.infrastructure.adapter.mapper.StudentMapper;
import java.util.UUID;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Component;
@Component
public class SelfKnowledgeElementDatabaseRepository
extends GenericJpaRepositoryAdapter<SelfKnowledgeElement, SelfKnowledgeElementEntity>
implements SelfKnowledgeElementRepository {
private final SelfKnowledgeElementJpaRepository jpaRepository;
public SelfKnowledgeElementDatabaseRepository(SelfKnowledgeElementJpaRepository jpaRepository) {
super(
jpaRepository,
jpaRepository,
SelfKnowledgeElementEntity.class,
SelfKnowledgeElementMapper.INSTANCE);
this.jpaRepository = jpaRepository;
}
@Override
public PagedResult<SelfKnowledgeElement> findAllByStudentIdAndCategoryId(
UUID studentId, UUID selfKnowledgeCategoryId, PageCriteria pageCriteria) {
Specification<SelfKnowledgeElementEntity> spec =
SelfKnowledgeElementSpecification.hasStudentId(studentId)
.and(
SelfKnowledgeElementSpecification.hasSelfKnowledgeCategoryId(
selfKnowledgeCategoryId));
return findAll(spec, PageRequest.of(pageCriteria.page(), pageCriteria.pageSize()));
}
@Override
public void deleteAllByStudentAndCategory(Student student, SelfKnowledgeCategory category) {
jpaRepository.deleteByStudentAndSelfKnowledgeCategory(
StudentMapper.INSTANCE.fromDomain(student),
SelfKnowledgeCategoryMapper.INSTANCE.fromDomain(category));
}
}