package com.pingcap.community.blogserver.config;

import com.blazebit.persistence.Criteria;
import com.blazebit.persistence.CriteriaBuilderFactory;
import com.blazebit.persistence.querydsl.JPQLNextQueryFactory;
import com.blazebit.persistence.spi.CriteriaBuilderConfiguration;
import lombok.AllArgsConstructor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;

@Configuration
@AllArgsConstructor
public class QueryDSLConfiguration {

  private final EntityManager entityManager;

  private final EntityManagerFactory entityManagerFactory;

  @Bean
  public JPQLNextQueryFactory jpqlNextQueryFactory() {
    CriteriaBuilderConfiguration config = Criteria.getDefault();
    CriteriaBuilderFactory cbf = config.createCriteriaBuilderFactory(entityManagerFactory);
    return new JPQLNextQueryFactory(entityManager, cbf);
  }
}
