package com.sonymusic.dx.dxadvsearchservice.service;

import com.sonymusic.dx.dxadvsearchservice.dto.ProductPurposeDTO;
import com.sonymusic.dx.persistence.gras.ProductPurpose;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import jakarta.persistence.TypedQuery;
import jakarta.persistence.criteria.CriteriaBuilder;
import jakarta.persistence.criteria.CriteriaQuery;
import jakarta.persistence.criteria.Root;
import org.springframework.stereotype.Service;

import java.util.List;
@Service
public class ProductPurposeService {

    @PersistenceContext(name = "dx-gras-persistence")
    private EntityManager em;

    public List<ProductPurposeDTO> getProductPurposeList() {
        CriteriaBuilder cb = em.getCriteriaBuilder();
        CriteriaQuery<ProductPurposeDTO> cq=cb.createQuery(ProductPurposeDTO.class);
        Root<ProductPurpose> root =cq.from(ProductPurpose.class);
        cq.select(cb.construct(
                ProductPurposeDTO.class,
                root.get("productPurposeKey"),
                root.get("productPurposeName")
        ));
        cq.orderBy(cb.asc(root.get("productPurposeName")));
        cq.distinct(true);
        TypedQuery<ProductPurposeDTO> query = em.createQuery(cq);

        List<ProductPurposeDTO> resultSet = query.getResultList();

        return resultSet;
    }
}
