From 6707e646da142a67ccca12a92343e5bec8f302ed Mon Sep 17 00:00:00 2001 From: zhuyasen Date: Sun, 24 Aug 2025 20:25:07 +0800 Subject: [PATCH] fix: update slice bug --- internal/dao/userExample.go.mgo | 8 ++++---- internal/dao/userExample.go.mgo.exp | 8 ++++---- pkg/mgo/model.go | 12 +++++------- pkg/sql2code/parser/parser.go | 27 +++++++++++---------------- 4 files changed, 24 insertions(+), 31 deletions(-) diff --git a/internal/dao/userExample.go.mgo b/internal/dao/userExample.go.mgo index 7e49629..e90275f 100644 --- a/internal/dao/userExample.go.mgo +++ b/internal/dao/userExample.go.mgo @@ -61,10 +61,10 @@ func (d *userExampleDao) Create(ctx context.Context, record *model.UserExample) if record.ID.IsZero() { record.ID = primitive.NewObjectID() } - if record.CreatedAt.IsZero() { - record.CreatedAt = time.Now() - record.UpdatedAt = time.Now() - } + now := time.Now() + record.CreatedAt = &now + record.UpdatedAt = &now + _, err := d.collection.InsertOne(ctx, record) _ = d.deleteCache(ctx, record.ID.Hex()) diff --git a/internal/dao/userExample.go.mgo.exp b/internal/dao/userExample.go.mgo.exp index d98a824..7f66418 100644 --- a/internal/dao/userExample.go.mgo.exp +++ b/internal/dao/userExample.go.mgo.exp @@ -66,10 +66,10 @@ func (d *userExampleDao) Create(ctx context.Context, record *model.UserExample) if record.ID.IsZero() { record.ID = primitive.NewObjectID() } - if record.CreatedAt.IsZero() { - record.CreatedAt = time.Now() - record.UpdatedAt = time.Now() - } + now := time.Now() + record.CreatedAt = &now + record.UpdatedAt = &now + _, err := d.collection.InsertOne(ctx, record) _ = d.deleteCache(ctx, record.ID.Hex()) diff --git a/pkg/mgo/model.go b/pkg/mgo/model.go index 84b361a..1e4c19f 100644 --- a/pkg/mgo/model.go +++ b/pkg/mgo/model.go @@ -10,22 +10,20 @@ import ( // Model embedded structs, add `bson: ",inline"` when defining table structs type Model struct { ID primitive.ObjectID `bson:"_id" json:"id"` - CreatedAt time.Time `bson:"created_at" json:"createdAt"` - UpdatedAt time.Time `bson:"updated_at" json:"updatedAt"` + CreatedAt *time.Time `bson:"created_at" json:"createdAt"` + UpdatedAt *time.Time `bson:"updated_at" json:"updatedAt"` DeletedAt *time.Time `bson:"deleted_at,omitempty" json:"deletedAt,omitempty"` } // SetModelValue set model fields func (p *Model) SetModelValue() { - now := time.Now() if !p.ID.IsZero() { p.ID = primitive.NewObjectID() } - if p.CreatedAt.IsZero() { - p.CreatedAt = now - p.UpdatedAt = now - } + now := time.Now() + p.CreatedAt = &now + p.UpdatedAt = &now } // ExcludeDeleted exclude soft deleted records diff --git a/pkg/sql2code/parser/parser.go b/pkg/sql2code/parser/parser.go index c084184..3a807d8 100644 --- a/pkg/sql2code/parser/parser.go +++ b/pkg/sql2code/parser/parser.go @@ -212,7 +212,7 @@ func (t tmplField) ConditionZero() string { return ` != ""` case "time.Time", "*time.Time", "sql.NullTime": //nolint return ` != nil && table.` + t.Name + `.IsZero() == false` - case "[]byte", "[]string", "[]int", "interface{}": //nolint + case "interface{}": //nolint return ` != nil` //nolint case "bool": //nolint return ` != false` @@ -222,12 +222,13 @@ func (t tmplField) ConditionZero() string { if t.GoType == goTypeOID { return ` != primitive.NilObjectID` } - if t.GoType == "*"+t.Name { - return ` != nil` //nolint - } - if strings.Contains(t.GoType, "[]") { - return ` != nil` //nolint - } + } + + if t.GoType == "*"+t.Name { + return ` != nil` //nolint + } + if strings.Contains(t.GoType, "[]") { + return ` != nil && len(table.` + t.Name + `) > 0` //nolint } if t.GoType == "" { @@ -686,9 +687,6 @@ func getModelStructCode(data tmplData, importPaths []string, isEmbed bool, jsonN } if field.rewriterField != nil { switch field.rewriterField.goType { - //case jsonTypeName, decimalTypeName: - // field.GoType = field.rewriterField.goType - // importPaths = append(importPaths, field.rewriterField.path) case jsonTypeName, decimalTypeName, boolTypeName, boolTypeTinyName: field.GoType = "*" + field.rewriterField.goType importPaths = append(importPaths, field.rewriterField.path) @@ -716,6 +714,9 @@ func getModelStructCode(data tmplData, importPaths []string, isEmbed bool, jsonN newImportPaths = append(newImportPaths, "github.com/go-dev-frame/sponge/pkg/sgorm") } else { for _, field := range data.Fields { + if strings.Contains(field.GoType, "time.Time") { + field.GoType = "*time.Time" + } switch field.DBDriver { case DBDriverMongodb: if field.Name == "ID" { @@ -724,9 +725,6 @@ func getModelStructCode(data tmplData, importPaths []string, isEmbed bool, jsonN } default: - if strings.Contains(field.GoType, "time.Time") { - field.GoType = "*time.Time" - } // force conversion of ID field to uint64 type if field.Name == "ID" { field.GoType = "uint64" @@ -737,9 +735,6 @@ func getModelStructCode(data tmplData, importPaths []string, isEmbed bool, jsonN if field.DBDriver == DBDriverMysql || field.DBDriver == DBDriverPostgresql || field.DBDriver == DBDriverTidb { if field.rewriterField != nil { switch field.rewriterField.goType { - //case jsonTypeName, decimalTypeName: - // field.GoType = field.rewriterField.goType - // importPaths = append(importPaths, field.rewriterField.path) case jsonTypeName, decimalTypeName, boolTypeName, boolTypeTinyName: field.GoType = "*" + field.rewriterField.goType importPaths = append(importPaths, field.rewriterField.path)