package com.ycwl.basic.constant;

/**
 * 源文件类型枚举
 * 定义视频和图片两种源文件类型
 *
 * @author Claude
 * @since 2025-10-31
 */
public enum SourceType {
    /**
     * 视频类型
     */
    VIDEO(1, "视频"),

    /**
     * 图片类型
     */
    IMAGE(2, "图片"),

    /**
     * AI微单类型
     */
    AI_CAM(3, "AI微单");

    private final int code;
    private final String description;

    SourceType(int code, String description) {
        this.code = code;
        this.description = description;
    }

    public int getCode() {
        return code;
    }

    public String getDescription() {
        return description;
    }

    /**
     * 根据代码值获取枚举
     *
     * @param code 类型代码
     * @return 对应的枚举值，如果不存在返回 null
     */
    public static SourceType fromCode(int code) {
        for (SourceType type : values()) {
            if (type.code == code) {
                return type;
            }
        }
        return null;
    }

    /**
     * 判断给定的代码是否为视频类型
     *
     * @param code 类型代码
     * @return true-是视频，false-不是视频
     */
    public static boolean isVideo(Integer code) {
        return code != null && code == VIDEO.code;
    }

    /**
     * 判断给定的代码是否为图片类型
     *
     * @param code 类型代码
     * @return true-是图片，false-不是图片
     */
    public static boolean isImage(Integer code) {
        return code != null && code == IMAGE.code;
    }

    /**
     * 判断给定的代码是否为AI微单类型
     *
     * @param code 类型代码
     * @return true-是AI微单，false-不是AI微单
     */
    public static boolean isAiCam(Integer code) {
        return code != null && code == AI_CAM.code;
    }
}
