diff --git a/ent/admin/extension.go b/ent/admin/extension.go index 3b16260..e857450 100644 --- a/ent/admin/extension.go +++ b/ent/admin/extension.go @@ -56,9 +56,17 @@ func FieldLabel(name string) string { return name } - name = strings.ReplaceAll(name, "_id", "_ID") - name = strings.ReplaceAll(name, "_", " ") - return upperFirst(name) + parts := strings.Split(name, "_") + for i := 0; i < len(parts); i++ { + if parts[i] == "id" { + parts[i] = "ID" + } + if i == 0 { + parts[i] = upperFirst(parts[i]) + } + } + + return strings.Join(parts, " ") } func fieldIsPointer(f *gen.Field) bool { @@ -67,6 +75,7 @@ func fieldIsPointer(f *gen.Field) bool { return false case f.Optional, f.Default, + f.Sensitive(), f.Nillable: return true } diff --git a/ent/admin/handler.go b/ent/admin/handler.go index 75f1e9e..20b42d0 100644 --- a/ent/admin/handler.go +++ b/ent/admin/handler.go @@ -89,7 +89,9 @@ func (h *Handler) PasswordTokenCreate(ctx echo.Context) error { } op := h.client.PasswordToken.Create() - op.SetHash(payload.Hash) + if payload.Hash != nil { + op.SetHash(*payload.Hash) + } op.SetUserID(payload.UserID) if payload.CreatedAt != nil { op.SetCreatedAt(*payload.CreatedAt) @@ -110,9 +112,14 @@ func (h *Handler) PasswordTokenUpdate(ctx echo.Context, id int) error { } op := entity.Update() - op.SetHash(payload.Hash) + if payload.Hash != nil { + op.SetHash(*payload.Hash) + } op.SetUserID(payload.UserID) - if payload.CreatedAt != nil { + if payload.CreatedAt == nil { + var empty time.Time + op.SetCreatedAt(empty) + } else { op.SetCreatedAt(*payload.CreatedAt) } _, err = op.Save(ctx.Request().Context()) @@ -179,7 +186,9 @@ func (h *Handler) UserCreate(ctx echo.Context) error { op := h.client.User.Create() op.SetName(payload.Name) op.SetEmail(payload.Email) - op.SetPassword(payload.Password) + if payload.Password != nil { + op.SetPassword(*payload.Password) + } op.SetVerified(payload.Verified) if payload.CreatedAt != nil { op.SetCreatedAt(*payload.CreatedAt) @@ -202,7 +211,9 @@ func (h *Handler) UserUpdate(ctx echo.Context, id int) error { op := entity.Update() op.SetName(payload.Name) op.SetEmail(payload.Email) - op.SetPassword(payload.Password) + if payload.Password != nil { + op.SetPassword(*payload.Password) + } op.SetVerified(payload.Verified) _, err = op.Save(ctx.Request().Context()) return err diff --git a/ent/admin/templates/handler.tmpl b/ent/admin/templates/handler.tmpl index ba7eab6..140babc 100644 --- a/ent/admin/templates/handler.tmpl +++ b/ent/admin/templates/handler.tmpl @@ -122,10 +122,22 @@ op := entity.Update() {{- range $f := $n.Fields }} {{- if not $f.Immutable }} - {{- if (fieldIsPointer $f) }} + {{- if $f.Sensitive }} if payload.{{ fieldName $f.Name }} != nil { op.Set{{ fieldName $f.Name }}(*payload.{{ fieldName $f.Name }}) } + {{- else if $f.Nillable }} + op.SetNillable{{ fieldName $f.Name }}(payload.{{ fieldName $f.Name }}) + if payload.{{ fieldName $f.Name }} != nil { + op.Clear{{ fieldName $f.Name }}() + } + {{- else if (fieldIsPointer $f) }} + if payload.{{ fieldName $f.Name }} == nil { + var empty {{ $f.Type }} + op.Set{{ fieldName $f.Name }}(empty) + } else { + op.Set{{ fieldName $f.Name }}(*payload.{{ fieldName $f.Name }}) + } {{- else }} op.Set{{ fieldName $f.Name }}(payload.{{ fieldName $f.Name }}) {{- end }} diff --git a/ent/admin/templates/types.tmpl b/ent/admin/templates/types.tmpl index 86fca5f..31892dd 100644 --- a/ent/admin/templates/types.tmpl +++ b/ent/admin/templates/types.tmpl @@ -25,9 +25,9 @@ } type HandlerConfig struct { - ItemsPerPage int + ItemsPerPage int PageQueryKey string - TimeFormat string + TimeFormat string } {{ end }} \ No newline at end of file diff --git a/ent/admin/types.go b/ent/admin/types.go index 833ec71..ced63cc 100644 --- a/ent/admin/types.go +++ b/ent/admin/types.go @@ -4,7 +4,7 @@ package admin import "time" type PasswordToken struct { - Hash string `form:"hash"` + Hash *string `form:"hash"` UserID int `form:"user_id"` CreatedAt *time.Time `form:"created_at"` } @@ -12,7 +12,7 @@ type PasswordToken struct { type User struct { Name string `form:"name"` Email string `form:"email"` - Password string `form:"password"` + Password *string `form:"password"` Verified bool `form:"verified"` CreatedAt *time.Time `form:"created_at"` }