package com.hw.tdengine.api.domain;

import com.hw.common.core.validated.tdengine.AddTdSTableColumn;
import lombok.Data;

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

/**
 * @ClassDescription: 创建超级表需要的入参的实体类
 * @ClassName: TdSuperTableVo
 * @Author: xins
 * @Date: 2023-08-28 09:30:45
 * @Version 1.0
 */
@Data
public class TdSuperTableVo {

    //数据库名称
    @NotEmpty(message="databaseName cannot be empty",groups = AddTdSTableColumn.class)
    private String databaseName;

    //超级表名称
    @NotEmpty(message="supertableName cannot be empty",groups = AddTdSTableColumn.class)
    private String superTableName;

    /**
     * 第一个字段，数据类型必须是timestamp
     */
    private String firstFieldName;

    /**
     * 超级表的表结构Schema，根据物模型创建
     * 第一列必须为时间戳timestamp，也就是第一个字段的数据类型必须是timestamp
     * 字符相关数据类型必须指定大小
     * 字段名称和字段数据类型不能为空
     */
    @NotEmpty(message="schemeFields cannot be empty")
    private List<TdField> schemaFields;


    /**
     * 超级表的标签字段Schema，采集点的静态属性，可以作为子表在超级表里的标识
     * TAGS 列名不能与其他列名相同。
     * TAGS 列名不能为预留关键字。
     * TAGS 最多允许 128 个，至少 1 个，总长度不超过 16 KB。
     */
    @NotEmpty(message="tagsFields cannot be empty")
    private List<TdField> tagsFields;


    /**
     * 字段信息对象，超级表添加列时使用该属性
     */
    private TdField field;

}
