package tech.easyflow.ai.service;

import com.mybatisflex.core.service.IService;
import tech.easyflow.ai.entity.Plugin;
import tech.easyflow.common.domain.Result;

import java.util.List;

/**
 *  服务层。
 *
 * @author WangGangqiang
 * @since 2025-04-25
 */
public interface PluginService extends IService<Plugin> {

    Plugin savePlugin(Plugin plugin);

    boolean removePlugin(String id);

    List<Plugin> getList();

    Result pageByCategory(Long pageNumber, Long pageSize, int category);

    boolean updatePlugin(Plugin plugin);

    /**
     * 按当前用户视角过滤并补充工作流插件可用性信息。
     *
     * @param plugins         插件列表
     * @param managementView  是否为管理视角
     * @param availableOnly   是否仅保留当前可用插件
     * @return 过滤后的插件列表
     */
    List<Plugin> preparePluginsForCurrentUser(List<Plugin> plugins, boolean managementView, boolean availableOnly);

    /**
     * 补充单个插件的工作流可用性信息。
     *
     * @param plugin 插件
     * @return 原插件
     */
    Plugin preparePluginForCurrentUser(Plugin plugin);
}
