package com.kt.event.eventservice.domain.repository;

import com.kt.event.eventservice.domain.entity.Job;
import com.kt.event.eventservice.domain.enums.JobStatus;
import com.kt.event.eventservice.domain.enums.JobType;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

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

/**
 * 비동기 작업 Repository
 *
 * @author Event Service Team
 * @version 1.0.0
 * @since 2025-10-23
 */
@Repository
public interface JobRepository extends JpaRepository<Job, UUID> {

    /**
     * 이벤트별 작업 목록 조회
     */
    List<Job> findByEventId(UUID eventId);

    /**
     * 이벤트 및 작업 유형별 조회
     */
    Optional<Job> findByEventIdAndJobType(UUID eventId, JobType jobType);

    /**
     * 이벤트 및 작업 유형별 최신 작업 조회
     */
    Optional<Job> findFirstByEventIdAndJobTypeOrderByCreatedAtDesc(UUID eventId, JobType jobType);

    /**
     * 상태별 작업 목록 조회
     */
    List<Job> findByStatus(JobStatus status);
}
