package tech.easyflow.ai.enums;

/**
 * 插件类型枚举。
 */
public enum PluginType {

    HTTP(1),
    WORKFLOW(2);

    private final int code;

    PluginType(int code) {
        this.code = code;
    }

    /**
     * 获取类型编码。
     *
     * @return 类型编码
     */
    public int getCode() {
        return code;
    }

    /**
     * 根据编码解析类型，空值或未知值均按 HTTP 处理，兼容历史数据。
     *
     * @param code 类型编码
     * @return 插件类型
     */
    public static PluginType from(Integer code) {
        if (code != null) {
            for (PluginType value : values()) {
                if (value.code == code) {
                    return value;
                }
            }
        }
        return HTTP;
    }

    /**
     * 判断是否为工作流插件。
     *
     * @param code 类型编码
     * @return 是否为工作流插件
     */
    public static boolean isWorkflow(Integer code) {
        return from(code) == WORKFLOW;
    }
}
