Some checks failed
CI / Test (1.24) (push) Successful in -26m32s
CI / Test (1.25) (push) Successful in -26m27s
CI / Build (push) Successful in -26m48s
CI / Lint (push) Successful in -26m33s
Integration Tests / Integration Tests (push) Failing after -26m51s
Release / Build and Release (push) Successful in -26m41s
155 lines
3.9 KiB
Go
155 lines
3.9 KiB
Go
package pgsql
|
|
|
|
import "strings"
|
|
|
|
var GoToStdTypes = 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": "smallint",
|
|
"float64": "double",
|
|
"float32": "double",
|
|
"complex64": "double",
|
|
"complex128": "double",
|
|
"customfloat64": "double",
|
|
"string": "text",
|
|
"Pointer": "bigint",
|
|
"[]byte": "blob",
|
|
"customdate": "date",
|
|
"customtime": "time",
|
|
"customtimestamp": "timestamp",
|
|
"sqlfloat64": "double",
|
|
"sqlfloat16": "double",
|
|
"sqluuid": "uuid",
|
|
"sqljsonb": "jsonb",
|
|
"sqljson": "json",
|
|
"sqlint64": "bigint",
|
|
"sqlint32": "integer",
|
|
"sqlint16": "smallint",
|
|
"sqlbool": "boolean",
|
|
"sqlstring": "text",
|
|
"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 precision",
|
|
"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": "smallint",
|
|
"sqlbool": "boolean",
|
|
"sqlstring": "text",
|
|
"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
|
|
}
|