package com.example.demo.repository;

import com.example.demo.model.TaskTemplate;

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

/**
 * 任务模板仓储接口。
 * <p>
 * 定义任务模板数据的存储操作，当前基于内存实现。
 * 后续可扩展为 PostgreSQL / 达梦DM8 数据库实现。
 * </p>
 */
public interface TaskTemplateRepository {

    /**
     * 保存模板。
     *
     * @param template 任务模板
     * @return 保存后的模板
     */
    TaskTemplate save(TaskTemplate template);

    /**
     * 根据ID查询模板。
     *
     * @param templateId 模板ID
     * @return 模板（Optional）
     */
    Optional<TaskTemplate> findById(String templateId);

    /**
     * 查询所有启用的模板。
     *
     * @return 模板列表
     */
    List<TaskTemplate> findAllActive();

    /**
     * 根据目标类型查询启用的模板。
     *
     * @param targetType 目标类型
     * @return 模板列表
     */
    List<TaskTemplate> findByTargetType(int targetType);

    /**
     * 查询所有模板。
     *
     * @return 模板列表
     */
    List<TaskTemplate> findAll();
}
