using QYZH.InteractiveMagazine.Models.Dto;
using QYZH.InteractiveMagazine.Models.Entity;

namespace QYZH.InteractiveMagazine.IService;

/// <summary>
/// AIPrompt配置服务接口
/// </summary>
public interface IAiBasePromptService : IBaseService<AiBasePrompt>
{
    /// <summary>
    /// 创建Prompt配置
    /// </summary>
    /// <param name="input">Prompt配置输入</param>
    /// <returns>创建的Prompt配置信息</returns>
    Task<AiBasePromptOutput> CreateAsync(AiBasePromptInput input);

    /// <summary>
    /// 更新Prompt配置
    /// </summary>
    /// <param name="id">Prompt配置ID</param>
    /// <param name="input">Prompt配置输入</param>
    /// <returns>更新后的Prompt配置信息</returns>
    Task<AiBasePromptOutput> UpdateAsync(long id, AiBasePromptInput input);

    /// <summary>
    /// 删除Prompt配置（软删除）
    /// </summary>
    /// <param name="id">Prompt配置ID</param>
    Task DeleteAsync(long id);

    /// <summary>
    /// 根据ID获取Prompt配置
    /// </summary>
    /// <param name="id">Prompt配置ID</param>
    /// <returns>Prompt配置信息</returns>
    Task<AiBasePromptOutput> GetByIdAsync(long id);

    /// <summary>
    /// 分页查询Prompt配置列表
    /// </summary>
    /// <param name="input">查询条件</param>
    /// <returns>分页结果</returns>
    Task<PageListModel<AiBasePromptOutput>> GetListAsync(AiBasePromptQueryInput input);

    /// <summary>
    /// 获取全部Prompt配置（无分页）
    /// </summary>
    /// <returns>全部Prompt配置列表</returns>
    Task<List<AiBasePromptOutput>> GetAllAsync();

    /// <summary>
    /// 切换Prompt启用/禁用状态
    /// </summary>
    /// <param name="id">Prompt配置ID</param>
    Task ToggleStatusAsync(long id);
}
