From 13fc0cb9ebb43679420c2c4f735486d7c42736c6 Mon Sep 17 00:00:00 2001 From: jinmao88 <50581550+jinmao88@users.noreply.github.com> Date: Wed, 6 Jul 2022 21:06:20 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20pgsql=20=E5=AD=97=E6=AE=B5=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=20=E6=94=AF=E6=8C=81=20=E6=95=B0=E7=BB=84=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=20(#1881)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/gf/internal/cmd/cmd_gen_dao.go | 14 +++++++++++++- database/gdb/gdb_core_structure.go | 19 ++++++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/cmd/gf/internal/cmd/cmd_gen_dao.go b/cmd/gf/internal/cmd/cmd_gen_dao.go index 6d8ae5af8..af8ab107f 100644 --- a/cmd/gf/internal/cmd/cmd_gen_dao.go +++ b/cmd/gf/internal/cmd/cmd_gen_dao.go @@ -568,6 +568,7 @@ func generateStructFieldDefinition(field *gdb.TableField, in generateStructDefin t, _ := gregex.ReplaceString(`\(.+\)`, "", field.Type) t = gstr.Split(gstr.Trim(t), " ")[0] t = gstr.ToLower(t) + switch t { case "binary", "varbinary", "blob", "tinyblob", "mediumblob", "longblob": typeName = "[]byte" @@ -585,7 +586,18 @@ func generateStructFieldDefinition(field *gdb.TableField, in generateStructDefin } else { typeName = "int64" } - + case "_int2": + if gstr.ContainsI(field.Type, "unsigned") { + typeName = "[]uint" + } else { + typeName = "[]int" + } + case "_int4", "_int8": + if gstr.ContainsI(field.Type, "unsigned") { + typeName = "[]uint64" + } else { + typeName = "[]int64" + } case "real": typeName = "float32" diff --git a/database/gdb/gdb_core_structure.go b/database/gdb/gdb_core_structure.go index 38daa20f2..762b9f65e 100644 --- a/database/gdb/gdb_core_structure.go +++ b/database/gdb/gdb_core_structure.go @@ -153,7 +153,24 @@ func (c *Core) convertFieldValueToLocalValue(fieldValue interface{}, fieldType s gconv.Uint(gconv.String(fieldValue)) } return gconv.Int(gconv.String(fieldValue)) - + case + "_int2": + if gstr.ContainsI(fieldType, "unsigned") { + gconv.Uints(gconv.String(fieldValue)) + } + return gconv.Ints(gstr.ReplaceByMap(gconv.String(fieldValue), map[string]string{ + "{": "[", + "}": "]", + })) + case + "_int4", "_int8": + if gstr.ContainsI(fieldType, "unsigned") { + gconv.Uint64(gconv.String(fieldValue)) + } + return gconv.Int64s(gstr.ReplaceByMap(gconv.String(fieldValue), map[string]string{ + "{": "[", + "}": "]", + })) case "int8", // For pgsql, int8 = bigint. "big_int",