package com.usky.demo.domain;

import io.swagger.annotations.ApiModel;
import lombok.Getter;

import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;

@Getter
@ApiModel(value = "DataTypeEnum", description = "TD数据类型-枚举")
public enum DataTypeEnum {
    /**
     * 时间戳 缺省精度毫秒（格林威治时间开始）
     */
    TIMESTAMP("timestamp", false),

    /**
     * 整形 范围[-2^31+1, 2^31-1] -2^31用作于NULL
     */
    INT("int", false),

    /**
     * 双精度浮点型 有效位数15-16 范围[-1.7E308, 1.7E308]
     */
    DOUBLE("double", false),

    /**
     * 记录包含多字节字符在内的字符串（如中文字符）最大长度4093
     */
    VARCHAR("varchar", true),

    /**
     * 布尔型 {true, false}
     */
    BOOL("bool", false);

    private final String dataType;
    private final boolean quoted;


    /**
     * 判断类型是否一致
     *
     * @param otherDataType
     * @return {@link Boolean} ture|false
     */
    public boolean isTypeEqual(String otherDataType) {
        return Optional.ofNullable(otherDataType)
                .map(String::trim)
                .map(this.dataType::equalsIgnoreCase)
                .orElse(false);
    }

    DataTypeEnum(String dataType, boolean quoted) {
        this.dataType = dataType;
        this.quoted = quoted;
    }

}
