package xtools.boot.api.enums;

import java.util.Objects;

/**
 * <p>Title : DeleteEnum</p>
 * <p>Description : DeleteEnum</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/20 11:08
 */
public enum DeleteEnum implements BaseEnum {

    // 正常
    NORMAL(0, "正常"),
    // 删除
    DELETE(1, "删除"),
    ;

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

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

    /**
     * 构造函数
     *
     * @param code 编码
     * @param desc 说明
     */
    DeleteEnum(int code, String desc) {
        this.code = code;
        this.desc = desc;
    }

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

    /**
     * 获取枚举值类型
     *
     * @param desc 枚举说明
     * @return 枚举值类型
     */
    public static DeleteEnum valueOfDesc(String desc) {
        for (DeleteEnum type : values()) {
            if (Objects.equals(type.desc, desc)) {
                return type;
            }
        }
        throw new IllegalArgumentException("unknown desc, desc=" + desc);
    }

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

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

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

}
