UserResourceSpecification.java

package fr.avenirsesr.portfolio.file.infrastructure.adapter.specification;

import fr.avenirsesr.portfolio.file.domain.model.EUserPhotoType;
import fr.avenirsesr.portfolio.file.infrastructure.adapter.model.UserPhotoEntity;
import fr.avenirsesr.portfolio.user.domain.model.enums.EUserCategory;
import fr.avenirsesr.portfolio.user.infrastructure.adapter.model.UserEntity;
import org.springframework.data.jpa.domain.Specification;

public interface UserResourceSpecification {
  static Specification<UserPhotoEntity> ofUser(
      UserEntity user, EUserCategory userCategory, EUserPhotoType type) {
    return (root, query, criteriaBuilder) ->
        criteriaBuilder.and(
            criteriaBuilder.equal(root.get("user"), user),
            criteriaBuilder.equal(root.get("userCategory"), userCategory),
            criteriaBuilder.equal(root.get("userPhotoType"), type));
  }

  static Specification<UserPhotoEntity> onlyActiveVersion() {
    return (root, query, criteriaBuilder) ->
        criteriaBuilder.equal(root.get("isActiveVersion"), true);
  }
}