155 lines
3.9 KiB
Go
155 lines
3.9 KiB
Go
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
|
|
}
|