package cn.iocoder.yudao.module.pms.controller.admin.iotmodeltemplate.model;

import cn.iocoder.yudao.framework.common.validation.InEnum;
import cn.iocoder.yudao.module.pms.controller.admin.iotmodeltemplate.model.datatype.ModelTemplateAttrDataSpecs;
import cn.iocoder.yudao.module.pms.enums.devicetemplate.DeviceTemplateAttrAccessModeEnum;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import java.util.List;

/**
 * 设备模板属性 json
 *
 * dataSpecs 和 dataSpecsList 之中必须传入且只能传入一个
 *
 * @author ruiqi
 */
@Data
public class ModelTemplateAttrs {

    /**
     * 属性名称
     */
    @NotEmpty(message = "属性名称")
    private String name;
    /**
     * placeholder 提示语
     */
    private String placeHolder;
    /**
     * 属性编码
     */
    private String code;
    /**
     * 属性数据类型 string number boolean
     *
     */
    @NotEmpty(message = "数据类型")
    private String type;
    /**
     * 是否必填 0不必填 1必填
     */
    private Integer requiredFlag;
    /**
     * 排序
     */
    private Integer sort;
    /**
     * 属性标识符
     */
    private String identifier;
    /**
     * 默认值
     */
    private String defaultValue;
    /**
     * 云端可以对该属性进行的操作类型
     *
     * 枚举 {@link DeviceTemplateAttrAccessModeEnum}
     */
    @InEnum(DeviceTemplateAttrAccessModeEnum.class)
    private String accessMode;
    /**
     * 数据类型（dataType）为非列表型（int、float、double、text、date、array）的数据规范存储在 dataSpecs 中
     */
    private ModelTemplateAttrDataSpecs dataSpecs;
    /**
     * 数据类型（dataType）为列表型（enum、bool、struct）的数据规范存储在 dataSpecsList 中
     */
    private List<ModelTemplateAttrDataSpecs> dataSpecsList;

}
