package com.unicorn.hgzero.meeting.biz.usecase.out;

import com.unicorn.hgzero.meeting.biz.domain.Meeting;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;

/**
 * 회의 조회 Gateway Interface (Out Port)
 */
public interface MeetingReader {

    /**
     * ID로 회의 조회
     */
    Optional<Meeting> findById(String meetingId);

    /**
     * 주최자 ID로 회의 목록 조회
     */
    List<Meeting> findByOrganizerId(String organizerId);

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

    /**
     * 주최자 ID와 상태로 회의 목록 조회
     */
    List<Meeting> findByOrganizerIdAndStatus(String organizerId, String status);

    /**
     * 일정 시간 범위로 회의 목록 조회
     */
    List<Meeting> findByScheduledTimeBetween(LocalDateTime startTime, LocalDateTime endTime);

    /**
     * 템플릿 ID로 회의 목록 조회
     */
    List<Meeting> findByTemplateId(String templateId);
}
