package xtools.boot.elasticsearch.enums;

import xtools.boot.api.enums.BaseEnum;

/**
 * <p>Title : ElasticsearchMonitorEnums</p>
 * <p>Description : ElasticsearchMonitorEnums</p>
 * <p>DevelopTools : Idea_x64_v2026.1</p>
 * <p>DevelopSystem : macOS Sequoia 15.7.5</p>
 * <p>Company : org.xujun</p>
 *
 * @author : XuJun
 * @version : 5.0.0
 * @date : 2026/2/3 10:31
 */
public enum ElasticsearchMonitorEnums implements BaseEnum {

    // 集群索引信息
    INDICES(1, "集群索引信息", "/_cat/indices?v"),
    // 集群健康信息
    HEALTH(2, "集群健康信息", "/_cat/health?v"),
    // 集群分片信息
    SHARDS(3, "集群分片信息", "/_cat/shards?v"),
    // 集群节点信息
    NODES(4, "集群节点信息", "/_cat/nodes?v"),
    // 集群任务
    TASKS(5, "集群任务", "/_cat/tasks?v"),
    // 集群段信息
    SEGMENTS(6, "集群段信息", "/_cat/segments?v"),
    // 集群文档总数
    COUNT(7, "集群文档总数", "/_cat/count?v"),
    // 集群shard的recovery过程
    RECOVERY(8, "集群shard的recovery过程", "/_cat/recovery?v"),
    // 集群别名组
    ALIASES(9, "集群别名组", "/_cat/aliases?v"),
    // 集群线程池任务
    THREAD_POOL(10, "集群线程池任务", "/_cat/thread_pool?v"),
    // 集群插件信息
    PLUGINS(11, "集群插件信息", "/_cat/plugins?v"),
    // 单节点的自定义属性
    NODEATTRS(12, "单节点的自定义属性", "/_cat/nodeattrs?v"),
    ;

    /**
     * 编码
     */
    private final int code;

    /**
     * 说明
     */
    private final String desc;

    /**
     * 命令
     */
    private final String cmd;

    /**
     * 初始化方法
     *
     * @param code Code
     * @param desc 说明
     * @param cmd  命令
     */
    ElasticsearchMonitorEnums(int code, String desc, String cmd) {
        this.code = code;
        this.desc = desc;
        this.cmd = cmd;
    }

    /**
     * 判断枚举值类型
     *
     * @param code 枚举值
     * @return 枚举值类型
     */
    public static ElasticsearchMonitorEnums valueOf(int code) {
        for (ElasticsearchMonitorEnums type : values()) {
            if (type.code == code) {
                return type;
            }
        }
        throw new IllegalArgumentException("unknown code, code=" + code);
    }

    /**
     * 获取所有枚举
     *
     * @return 所有枚举
     */
    @Override
    public BaseEnum[] all() {
        return values();
    }

    /**
     * 获取枚举编码
     *
     * @return 枚举编码
     */
    @Override
    public int code() {
        return code;
    }

    /**
     * 获取枚举说明
     *
     * @return 枚举说明
     */
    @Override
    public String desc() {
        return desc;
    }

    /**
     * 获取命令
     *
     * @return 命令
     */
    public String cmd() {
        return cmd;
    }

}