package tech.easyflow.admin.controller.ai;

import cn.dev33.satoken.annotation.SaCheckPermission;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import tech.easyflow.ai.entity.PluginItem;
import tech.easyflow.ai.service.BotPluginService;
import tech.easyflow.common.annotation.UsePermission;
import tech.easyflow.common.domain.Result;
import tech.easyflow.common.web.jsonbody.JsonBody;

import java.math.BigInteger;
import java.util.List;

/**
 * 旧 Bot 插件工具绑定查询控制器。
 *
 * <p>保留历史接口地址，同时将 Bot 表依赖限制在 Bot 专属代码中。</p>
 */
@RestController
@RequestMapping("/api/v1/pluginItem")
@UsePermission(moduleName = "/api/v1/plugin")
public class BotPluginItemController {

    private final BotPluginService botPluginService;

    /**
     * 创建 Bot 插件工具绑定查询控制器。
     *
     * @param botPluginService Bot 插件绑定服务
     */
    public BotPluginItemController(BotPluginService botPluginService) {
        this.botPluginService = botPluginService;
    }

    /**
     * 查询插件工具，并标记指定 Bot 已绑定的工具。
     *
     * @param pluginId 插件 ID
     * @param botId Bot ID
     * @return 插件工具列表
     */
    @PostMapping("/toolsList")
    @SaCheckPermission("/api/v1/plugin/query")
    public Result<List<PluginItem>> searchPluginTools(
            @JsonBody(value = "pluginId", required = true) BigInteger pluginId,
            @JsonBody(value = "botId", required = false) BigInteger botId) {
        return Result.ok(botPluginService.searchPluginTools(pluginId, botId));
    }

    /**
     * 查询指定 Bot 已绑定的插件工具。
     *
     * @param botId Bot ID
     * @return 已绑定插件工具列表
     */
    @PostMapping("/tool/list")
    @SaCheckPermission("/api/v1/plugin/query")
    public Result<List<PluginItem>> getPluginTools(
            @JsonBody(value = "botId", required = true) BigInteger botId) {
        return Result.ok(botPluginService.getPluginTools(botId));
    }
}
