package pgsql import "strings" var GoToStdTypes = map[string]string{ "bool": "boolean", "int64": "integer", "int": "integer", "int8": "integer", "int16": "integer", "int32": "integer", "uint": "integer", "uint8": "integer", "uint16": "integer", "uint32": "integer", "uint64": "integer", "uintptr": "integer", "znullint64": "integer", "znullint32": "integer", "znullbyte": "integer", "float64": "double", "float32": "double", "complex64": "double", "complex128": "double", "customfloat64": "double", "string": "string", "Pointer": "integer", "[]byte": "blob", "customdate": "string", "customtime": "string", "customtimestamp": "string", "sqlfloat64": "double", "sqlfloat16": "double", "sqluuid": "uuid", "sqljsonb": "jsonb", "sqljson": "json", "sqlint64": "bigint", "sqlint32": "integer", "sqlint16": "integer", "sqlbool": "boolean", "sqlstring": "string", "nullablejsonb": "jsonb", "nullablejson": "json", "nullableuuid": "uuid", "sqldate": "date", "sqltime": "time", "sqltimestamp": "timestamp", } var GoToPGSQLTypes = map[string]string{ "bool": "boolean", "int64": "bigint", "int": "integer", "int8": "smallint", "int16": "smallint", "int32": "integer", "uint": "integer", "uint8": "smallint", "uint16": "smallint", "uint32": "integer", "uint64": "bigint", "uintptr": "bigint", "znullint64": "bigint", "znullint32": "integer", "znullbyte": "integer", "float64": "double precision", "float32": "real", "complex64": "double precision", "complex128": "double precision", "customfloat64": "double precisio", "string": "text", "Pointer": "bigint", "[]byte": "bytea", "customdate": "date", "customtime": "time", "customtimestamp": "timestamp", "sqlfloat64": "double precision", "sqlfloat16": "double precision", "sqluuid": "uuid", "sqljsonb": "jsonb", "sqljson": "json", "sqlint64": "bigint", "sqlint32": "integer", "sqlint16": "integer", "sqlbool": "boolean", "sqlstring": "string", "nullablejsonb": "jsonb", "nullablejson": "json", "nullableuuid": "uuid", "sqldate": "date", "sqltime": "time", "sqltimestamp": "timestamp", "citext": "citext", } func ValidSQLType(sqltype string) bool { for _, sql := range GoToPGSQLTypes { if strings.EqualFold(sql, sqltype) { return true } } for _, sql := range GoToStdTypes { if strings.EqualFold(sql, sqltype) { return true } } return false } func GetSQLType(anytype string) string { for gotype, sql := range GoToPGSQLTypes { if strings.EqualFold(gotype, anytype) || strings.EqualFold(sql, anytype) { return sql } } for gotype, sql := range GoToStdTypes { if strings.EqualFold(gotype, anytype) || strings.EqualFold(sql, anytype) { return sql } } return "text" } func ConvertSQLType(anytype string) string { for gotype, sql := range GoToPGSQLTypes { if strings.EqualFold(gotype, anytype) || strings.EqualFold(sql, anytype) { return sql } } for gotype, sql := range GoToStdTypes { if strings.EqualFold(gotype, anytype) || strings.EqualFold(sql, anytype) { return sql } } return anytype } func IsGoType(pTypeName string) bool { for k := range GoToStdTypes { if strings.EqualFold(pTypeName, k) { return true } } return false } func GetStdTypeFromGo(pTypeName string) string { for k, s := range GoToStdTypes { if strings.EqualFold(pTypeName, k) { return s } } return pTypeName }