Compare commits

...

2 Commits

Author SHA1 Message Date
tx7do
093172ebca feat: ent update fields. 2023-11-08 18:17:47 +08:00
tx7do
d65e7bb928 feat: ent update fields. 2023-11-08 18:15:48 +08:00
3 changed files with 56 additions and 1 deletions

25
entgo/update/update.go Normal file
View File

@@ -0,0 +1,25 @@
package entgo
import (
"entgo.io/ent/dialect/sql"
"github.com/tx7do/go-utils/stringcase"
)
func BuildSetNullUpdate(u *sql.UpdateBuilder, fields []string) {
if len(fields) > 0 {
for _, field := range fields {
field = stringcase.ToSnakeCase(field)
u.SetNull(field)
}
}
}
func BuildSetNullUpdater(fields []string) (error, func(u *sql.UpdateBuilder)) {
if len(fields) > 0 {
return nil, func(u *sql.UpdateBuilder) {
BuildSetNullUpdate(u, fields)
}
} else {
return nil, nil
}
}

View File

@@ -0,0 +1,30 @@
package entgo
import (
"testing"
"entgo.io/ent/dialect"
"entgo.io/ent/dialect/sql"
"github.com/stretchr/testify/require"
)
func TestBuildSetNullUpdate(t *testing.T) {
t.Run("MySQL_Set2", func(t *testing.T) {
s := sql.Dialect(dialect.MySQL).Update("users")
BuildSetNullUpdate(s, []string{"id", "username"})
query, args := s.Query()
require.Equal(t, "UPDATE `users` SET `id` = NULL, `username` = NULL", query)
require.Empty(t, args)
})
t.Run("PostgreSQL_Set2", func(t *testing.T) {
s := sql.Dialect(dialect.Postgres).Update("users")
BuildSetNullUpdate(s, []string{"id", "username"})
query, args := s.Query()
require.Equal(t, `UPDATE "users" SET "id" = NULL, "username" = NULL`, query)
require.Empty(t, args)
})
}

View File

@@ -1,6 +1,6 @@
git tag v1.1.8
git tag bank_card/v1.1.0
git tag entgo/v1.1.8
git tag entgo/v1.1.10
git tag geoip/v1.1.0
git push origin --tags