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

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

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

/**
 * 회의록 섹션 조회 Gateway Interface (Out Port)
 */
public interface MinutesSectionReader {

    /**
     * ID로 섹션 조회
     */
    Optional<MinutesSection> findById(String sectionId);

    /**
     * 회의록 ID로 섹션 목록 조회 (순서대로)
     */
    List<MinutesSection> findByMinutesIdOrderByOrder(String minutesId);

    /**
     * 회의록 ID와 타입으로 섹션 목록 조회
     */
    List<MinutesSection> findByMinutesIdAndType(String minutesId, String type);

    /**
     * 회의록 ID와 검증 여부로 섹션 목록 조회
     */
    List<MinutesSection> findByMinutesIdAndVerified(String minutesId, Boolean verified);

    /**
     * 회의록 ID와 잠금 여부로 섹션 목록 조회
     */
    List<MinutesSection> findByMinutesIdAndLocked(String minutesId, Boolean locked);

    /**
     * 잠금한 사용자 ID로 섹션 목록 조회
     */
    List<MinutesSection> findByLockedBy(String lockedBy);
}
