From 72321b865b827f5bbe8ce86d2112adc4bc79b3e2 Mon Sep 17 00:00:00 2001 From: yangyile Date: Mon, 9 Dec 2024 05:10:43 +0700 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=92=8C=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E7=BB=91=E5=AE=9A=E7=9A=84=E5=88=97=E5=90=8D?= =?UTF-8?q?=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/examples/example3/example3_test.go | 30 ++++++------------- new_column_name.go | 9 ++++++ new_column_name_test.go | 32 +++++++++++++++++++++ 3 files changed, 50 insertions(+), 21 deletions(-) create mode 100644 new_column_name.go create mode 100644 new_column_name_test.go diff --git a/internal/examples/example3/example3_test.go b/internal/examples/example3/example3_test.go index 2af586e..4d772c2 100644 --- a/internal/examples/example3/example3_test.go +++ b/internal/examples/example3/example3_test.go @@ -85,21 +85,14 @@ func selectFunc2(t *testing.T, db *gorm.DB) []*UserOrder { order := &Order{} orderColumns := order.Columns() - const ( - columnUserID = gormcnm.ColumnName[uint]("user_id") - columnUserName = gormcnm.ColumnName[string]("user_name") - columnOrderID = gormcnm.ColumnName[uint]("order_id") - columnOrderAmount = gormcnm.ColumnName[float64]("order_amount") - ) - //这是使用名称的逻辑 var results []*UserOrder require.NoError(t, db.Table(user.TableName()). Select(userColumns.ColumnOperationClass.MergeStmts( - userColumns.ID.WithTable(user).AsName(columnUserID), - userColumns.Name.WithTable(user).AsName(columnUserName), - orderColumns.ID.WithTable(order).AsName(columnOrderID), - orderColumns.Amount.WithTable(order).AsName(columnOrderAmount), + userColumns.ID.WithTable(user).AsName(gormcnm.ColumnName[uint]("user_id")), + userColumns.Name.WithTable(user).AsName("user_name"), + orderColumns.ID.WithTable(order).AsName(gormcnm.New[uint]("order_id")), + orderColumns.Amount.WithTable(order).AsName("order_amount"), )). Joins(userColumns.LEFTJOIN(order.TableName()).On(orderColumns.UserID.WithTable(order).Eq(userColumns.ID.WithTable(user)))). Order(userColumns.ID.WithTable(user).Ob("asc").Ob(orderColumns.ID.WithTable(order).Ob("asc")).Ox()). @@ -114,21 +107,16 @@ func selectFunc3(t *testing.T, db *gorm.DB) []*UserOrder { order := &Order{} orderColumns := order.Columns() - const ( - columnUserID = gormcnm.ColumnName[uint]("user_id") - columnUserName = gormcnm.ColumnName[string]("user_name") - columnOrderID = gormcnm.ColumnName[uint]("order_id") - columnOrderAmount = gormcnm.ColumnName[float64]("order_amount") - ) + userOrder := &UserOrder{} //这是使用名称的逻辑 var results []*UserOrder require.NoError(t, db.Table(user.TableName()). Select(userColumns.ColumnOperationClass.MergeStmts( - userColumns.ID.TC(user).AsName(columnUserID), - userColumns.Name.TC(user).AsName(columnUserName), - orderColumns.ID.TC(order).AsName(columnOrderID), - orderColumns.Amount.TC(order).AsName(columnOrderAmount), + userColumns.ID.TC(user).AsName(gormcnm.Cnm(userOrder.UserID, "user_id")), + userColumns.Name.TC(user).AsName(gormcnm.Cnm(userOrder.UserName, "user_name")), + orderColumns.ID.TC(order).AsName(gormcnm.Cnm(userOrder.OrderID, "order_id")), + orderColumns.Amount.TC(order).AsName(gormcnm.Cnm(userOrder.OrderAmount, "order_amount")), )). Joins(userColumns.LEFTJOIN(order.TableName()).On(orderColumns.UserID.TC(order).Eq(userColumns.ID.TC(user)))). Order(userColumns.ID.TC(user).Ob("asc").Ob(orderColumns.ID.TC(order).Ob("asc")).Ox()). diff --git a/new_column_name.go b/new_column_name.go new file mode 100644 index 0000000..6e639ac --- /dev/null +++ b/new_column_name.go @@ -0,0 +1,9 @@ +package gormcnm + +func New[T any](name string) ColumnName[T] { + return ColumnName[T](name) +} + +func Cnm[T any](v T, name string) ColumnName[T] { + return ColumnName[T](name) +} diff --git a/new_column_name_test.go b/new_column_name_test.go new file mode 100644 index 0000000..7292a31 --- /dev/null +++ b/new_column_name_test.go @@ -0,0 +1,32 @@ +package gormcnm + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestNew(t *testing.T) { + columnName := New[string]("name") + + qs, value := columnName.Eq("abc") + t.Log(qs, value) + + require.Equal(t, "name=?", qs) + require.Equal(t, "abc", value) +} + +func TestCnm(t *testing.T) { + type Example struct { + Name string `gorm:"column:name;primary_key;type:varchar(100);"` + } + + res := Example{} + columnName := Cnm(res.Name, "name") + + qs, value := columnName.Eq("abc") + t.Log(qs, value) + + require.Equal(t, "name=?", qs) + require.Equal(t, "abc", value) +}