package com.ruoyi.info.collection.annotation;

import com.ruoyi.info.collection.validation.EnumValidator;
import jakarta.validation.Constraint;
import jakarta.validation.Payload;

import java.lang.annotation.*;

/**
 * 枚举值校验注解
 * 用于校验字段值是否在指定枚举类的定义范围内
 *
 * @author ruoyi
 */
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = EnumValidator.class)
@Documented
public @interface EnumValid {

    /**
     * 枚举类
     */
    Class<?> enumClass();

    /**
     * 校验失败时的错误消息
     */
    String message() default "枚举值不合法";

    /**
     * 分组
     */
    Class<?>[] groups() default {};

    /**
     * 负载
     */
    Class<? extends Payload>[] payload() default {};

    /**
     * 是否忽略空值
     * 如果为true，当字段为null或空字符串时不进行校验
     */
    boolean ignoreEmpty() default true;
}
