package com.unicorn.hgzero.ai.biz.gateway;

import com.unicorn.hgzero.ai.biz.domain.ProcessedTranscript;

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

/**
 * 회의록 데이터 Gateway 인터페이스
 * 회의록 영속성 관리를 추상화
 */
public interface TranscriptGateway {

    /**
     * 회의록 저장
     *
     * @param transcript 처리된 회의록
     * @return 저장된 회의록
     */
    ProcessedTranscript save(ProcessedTranscript transcript);

    /**
     * 회의록 ID로 조회
     *
     * @param transcriptId 회의록 ID
     * @return 회의록 (Optional)
     */
    Optional<ProcessedTranscript> findById(String transcriptId);

    /**
     * 회의 ID로 조회
     *
     * @param meetingId 회의 ID
     * @return 회의록 (Optional)
     */
    Optional<ProcessedTranscript> findByMeetingId(String meetingId);

    /**
     * 회의 ID 목록으로 조회
     *
     * @param meetingIds 회의 ID 목록
     * @return 회의록 목록
     */
    List<ProcessedTranscript> findByMeetingIds(List<String> meetingIds);

    /**
     * 상태로 조회
     *
     * @param status 상태
     * @return 회의록 목록
     */
    List<ProcessedTranscript> findByStatus(String status);

    /**
     * 회의록 존재 여부 확인
     *
     * @param meetingId 회의 ID
     * @return 존재 여부
     */
    boolean existsByMeetingId(String meetingId);

    /**
     * 회의록 삭제
     *
     * @param transcriptId 회의록 ID
     */
    void delete(String transcriptId);
}
