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

import com.kt.event.content.biz.domain.Job;
import com.kt.event.content.infra.gateway.entity.JobEntity;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.List;
import java.util.Optional;

/**
 * Job JPA 리포지토리
 */
public interface JobJpaRepository extends JpaRepository<JobEntity, String> {

    /**
     * 이벤트 초안 ID로 Job 목록 조회
     *
     * @param eventDraftId 이벤트 초안 ID
     * @return Job 엔티티 목록
     */
    List<JobEntity> findByEventDraftId(Long eventDraftId);

    /**
     * 이벤트 초안 ID와 상태로 Job 목록 조회
     *
     * @param eventDraftId 이벤트 초안 ID
     * @param status       Job 상태
     * @return Job 엔티티 목록
     */
    List<JobEntity> findByEventDraftIdAndStatus(Long eventDraftId, Job.Status status);

    /**
     * 이벤트 초안 ID와 Job 타입으로 최신 Job 조회
     *
     * @param eventDraftId 이벤트 초안 ID
     * @param jobType      Job 타입
     * @return Job 엔티티
     */
    Optional<JobEntity> findFirstByEventDraftIdAndJobTypeOrderByCreatedAtDesc(Long eventDraftId, String jobType);
}
