package com.unicorn.hgzero.meeting.infra.gateway.repository;

import com.unicorn.hgzero.meeting.infra.gateway.entity.TodoEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.time.LocalDate;
import java.util.List;

/**
 * Todo JPA Repository
 */
@Repository
public interface TodoJpaRepository extends JpaRepository<TodoEntity, String> {

    /**
     * 회의 ID로 Todo 목록 조회
     */
    List<TodoEntity> findByMeetingId(String meetingId);

    /**
     * 회의록 ID로 Todo 목록 조회
     */
    List<TodoEntity> findByMinutesId(String minutesId);

    /**
     * 담당자 ID로 Todo 목록 조회
     */
    List<TodoEntity> findByAssigneeId(String assigneeId);

    /**
     * 상태로 Todo 목록 조회
     */
    List<TodoEntity> findByStatus(String status);

    /**
     * 담당자 ID와 상태로 Todo 목록 조회
     */
    List<TodoEntity> findByAssigneeIdAndStatus(String assigneeId, String status);

    /**
     * 마감일로 Todo 목록 조회
     */
    List<TodoEntity> findByDueDate(LocalDate dueDate);

    /**
     * 마감일 이전 Todo 목록 조회
     */
    List<TodoEntity> findByDueDateBefore(LocalDate date);

    /**
     * 우선순위로 Todo 목록 조회
     */
    List<TodoEntity> findByPriority(String priority);

    /**
     * 담당자 ID와 마감일 범위로 Todo 목록 조회
     */
    List<TodoEntity> findByAssigneeIdAndDueDateBetween(String assigneeId, LocalDate startDate, LocalDate endDate);
}
