package com.bio.bio_backend.global.config;

import com.querydsl.jpa.impl.JPAQueryFactory;
import jakarta.persistence.EntityManager;
import jakarta.persistence.PersistenceContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * QueryDSL 설정을 위한 Configuration 클래스
 * JPAQueryFactory Bean을 등록하여 QueryDSL을 사용할 수 있도록 합니다.
 */
@Configuration
public class QuerydslConfig {

    /**
     * JPA EntityManager를 주입받습니다.
     * @PersistenceContext 어노테이션을 사용하여 Spring이 관리하는 EntityManager를 주입받습니다.
     */
    @PersistenceContext
    private EntityManager entityManager;

    /**
     * JPAQueryFactory Bean을 생성하여 등록합니다.
     * 이 Bean은 QueryDSL을 사용하는 Repository에서 주입받아 사용됩니다.
     *
     * @return JPAQueryFactory 인스턴스
     */
    @Bean
    public JPAQueryFactory jpaQueryFactory() {
        return new JPAQueryFactory(entityManager);
    }
}
