package com.sonymusic.dx.dxadvsearchservice.service;

import java.util.List;

import org.springframework.stereotype.Service;

import com.sonymusic.dx.dxadvsearchservice.dto.DataSourceDTO;
import com.sonymusic.dx.persistence.gras.DataSource;

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;

@Service
public class DataSourceService {

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

	public List<DataSourceDTO> getDataSourceList() {

		CriteriaBuilder cb = em.getCriteriaBuilder();
		CriteriaQuery<DataSourceDTO> cq=cb.createQuery(DataSourceDTO.class);
		Root<DataSource>root =cq.from(DataSource.class);
		cq.select(cb.construct(
				DataSourceDTO.class,
				root.get("dataSourceId"),
				root.get("dataSourceName")
		));
		
		cq.orderBy(cb.asc(root.get("dataSourceName")));
		cq.distinct(true);
		TypedQuery<DataSourceDTO> query = em.createQuery(cq);

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

		return resultSet;

	}

}
