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

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

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

/**
 * 템플릿 조회 Gateway Interface (Out Port)
 */
public interface TemplateReader {

    /**
     * ID로 템플릿 조회
     */
    Optional<Template> findById(String templateId);

    /**
     * 카테고리로 템플릿 목록 조회
     */
    List<Template> findByCategory(String category);

    /**
     * 공개 여부로 템플릿 목록 조회
     */
    List<Template> findByIsPublic(Boolean isPublic);

    /**
     * 작성자 ID로 템플릿 목록 조회
     */
    List<Template> findByCreatedBy(String createdBy);

    /**
     * 카테고리와 공개 여부로 템플릿 목록 조회
     */
    List<Template> findByCategoryAndIsPublic(String category, Boolean isPublic);

    /**
     * 이름으로 템플릿 검색 (부분 일치)
     */
    List<Template> findByNameContaining(String name);
}
