package io.delphiplatform.api.v3.rdb.service.specification;

import org.springframework.data.jpa.domain.Specification;

import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Predicate;
import javax.persistence.criteria.Root;

public class BooleanSpecification<T> implements Specification<T> {

    private final Boolean value;

    public BooleanSpecification(Boolean value) {
        this.value = value;
    }

    @Override
    public Predicate toPredicate(Root<T> r, CriteriaQuery<?> cq, CriteriaBuilder cb) {
        if (value == null) {
            return null;
        }

        return cb.isTrue(cb.literal(value));
    }
}
