So far so good
This commit is contained in:
154
pkg/pgsql/datatypes.go
Normal file
154
pkg/pgsql/datatypes.go
Normal file
@@ -0,0 +1,154 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user