Files
relspecgo/pkg/pgsql/datatypes.go
Hein 7c7054d2e2
Some checks are pending
CI / Test (1.23) (push) Waiting to run
CI / Test (1.24) (push) Waiting to run
CI / Test (1.25) (push) Waiting to run
CI / Lint (push) Waiting to run
CI / Build (push) Waiting to run
So far so good
2025-12-16 18:10:40 +02:00

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
}