Ppeixianzhongupdate 1.0.0
4b030e58创建于 2025年8月19日历史提交
/*
 * @Copyright (c) Huawei Technologies Co., Ltd. 2025-2025. All rights reserved.
 */
package mysqlclient_ffi

public enum MysqlTypeEnum <: Equatable<MysqlTypeEnum> & ToString{
    | SqlString 
    | SqlArrayByte
    | SqlInputStream 
    | SqlBool 
    | SqlInt8 
    | SqlInt16 
    | SqlInt32 
    | SqlInt64 
    | SqlFloat32 
    | SqlFloat64 
    | SqlDateTime 
    | SqlMysqlTypeDate 
    | SqlMysqlTypeTime 
    | SqlMysqlTypeTimeTimestamp
    | SqlDecimal
    | SqlNull
    | SqlBigInt
    | SqlOther

    /*
     * 枚举是否相等
     *
     * 参数 that - 枚举
     * 返回值 Bool - 是否相等
     */
    public operator func ==(that: MysqlTypeEnum): Bool {
        match ((this, that)) {
            case (SqlString, SqlString) => true
            case (SqlArrayByte, SqlArrayByte) => true
            case (SqlInputStream, SqlInputStream) => true
            case (SqlBool, SqlBool) => true
            case (SqlInt8, SqlInt8) => true
            case (SqlInt16, SqlInt16) => true
            case (SqlInt32, SqlInt32) => true
            case (SqlInt64, SqlInt64) => true
            case (SqlFloat32, SqlFloat32) => true
            case (SqlFloat64, SqlFloat64) => true
            case (SqlDateTime, SqlDateTime) => true
            case (SqlMysqlTypeDate, SqlMysqlTypeDate) => true
            case (SqlMysqlTypeTime, SqlMysqlTypeTime) => true
            case (SqlMysqlTypeTimeTimestamp, SqlMysqlTypeTimeTimestamp) => true
            case (SqlDecimal, SqlDecimal) => true
            case (SqlNull, SqlNull) => true
            case (SqlBigInt, SqlBigInt) => true
            case (SqlOther, SqlOther) => true
            case _ => false
        }
    }

    /*
     * 枚举是否不相等
     *
     * 参数 that - 枚举
     * 返回值 Bool - 是否不相等
     */
    public operator func !=(that: MysqlTypeEnum): Bool {
        return !(this == that)
    }

    public override func toString():String{
        match (this) {
            case SqlString => return "SqlString"
            case SqlArrayByte => return "SqlArrayByte"
            case SqlInputStream => return "SqlInputStream"
            case SqlBool => return "SqlBool"
            case SqlInt8 => return "SqlInt8"
            case SqlInt16 => return "SqlInt16"
            case SqlInt32 => return "SqlInt32"
            case SqlInt64 => return "SqlInt64"
            case SqlFloat32 => return "SqlFloat32"
            case SqlFloat64 => return "SqlFloat64"
            case SqlDateTime => return "SqlDateTime"
            case SqlMysqlTypeDate => return "SqlMysqlTypeDate"
            case SqlMysqlTypeTime => return "SqlMysqlTypeTime"
            case SqlMysqlTypeTimeTimestamp => return "SqlMysqlTypeTimeTimestamp"
            case SqlDecimal => return "SqlDecimal"
            case SqlNull => return "SqlNull"
            case SqlBigInt => return "SqlBigInt"
            case SqlOther => return "SqlOther"
        }
    }

    public static func fromToString(str:String):MysqlTypeEnum{
        match (str) {
            case "SqlString" => return SqlString
            case "SqlArrayByte" => return SqlArrayByte
            case "SqlInputStream" => return SqlInputStream
            case "SqlBool" => return SqlBool
            case "SqlInt8" => return SqlInt8
            case "SqlInt16" => return SqlInt16
            case "SqlInt32" => return SqlInt32
            case "SqlInt64" => return SqlInt64
            case "SqlFloat32" => return SqlFloat32
            case "SqlFloat64" => return SqlFloat64
            case "SqlDateTime" => return SqlDateTime
            case "SqlMysqlTypeDate" => return SqlMysqlTypeDate
            case "SqlMysqlTypeTime" => return SqlMysqlTypeTime
            case "SqlMysqlTypeTimeTimestamp" => return SqlMysqlTypeTimeTimestamp
            case "SqlDecimal" => return SqlDecimal
            case "SqlNull" => return SqlNull
            case "SqlBigInt" => return SqlBigInt
            case "SqlOther" => return SqlOther
            case _ => throw SqlException("The Statement has been closed")
        }
    }
}