package com.kt.event.content.infra.gateway.repository;

import com.kt.event.content.infra.gateway.entity.ContentEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;

import java.util.Optional;

/**
 * 콘텐츠 JPA 리포지토리
 */
public interface ContentJpaRepository extends JpaRepository<ContentEntity, Long> {

    /**
     * 이벤트 초안 ID로 콘텐츠 조회 (이미지 목록 포함)
     *
     * @param eventDraftId 이벤트 초안 ID
     * @return 콘텐츠 엔티티
     */
    @Query("SELECT DISTINCT c FROM ContentEntity c " +
           "LEFT JOIN FETCH c.images " +
           "WHERE c.eventDraftId = :eventDraftId")
    Optional<ContentEntity> findByEventDraftIdWithImages(@Param("eventDraftId") Long eventDraftId);

    /**
     * 이벤트 초안 ID로 콘텐츠 조회
     *
     * @param eventDraftId 이벤트 초안 ID
     * @return 콘텐츠 엔티티
     */
    Optional<ContentEntity> findByEventDraftId(Long eventDraftId);

    /**
     * 이벤트 초안 ID로 콘텐츠 존재 여부 확인
     *
     * @param eventDraftId 이벤트 초안 ID
     * @return 존재 여부
     */
    boolean existsByEventDraftId(Long eventDraftId);
}
