Handle updates on pointer fields.
This commit is contained in:
parent
8c3f04e859
commit
aacb3d358f
5 changed files with 45 additions and 13 deletions
|
|
@ -56,9 +56,17 @@ func FieldLabel(name string) string {
|
||||||
return name
|
return name
|
||||||
}
|
}
|
||||||
|
|
||||||
name = strings.ReplaceAll(name, "_id", "_ID")
|
parts := strings.Split(name, "_")
|
||||||
name = strings.ReplaceAll(name, "_", " ")
|
for i := 0; i < len(parts); i++ {
|
||||||
return upperFirst(name)
|
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 {
|
func fieldIsPointer(f *gen.Field) bool {
|
||||||
|
|
@ -67,6 +75,7 @@ func fieldIsPointer(f *gen.Field) bool {
|
||||||
return false
|
return false
|
||||||
case f.Optional,
|
case f.Optional,
|
||||||
f.Default,
|
f.Default,
|
||||||
|
f.Sensitive(),
|
||||||
f.Nillable:
|
f.Nillable:
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,9 @@ func (h *Handler) PasswordTokenCreate(ctx echo.Context) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
op := h.client.PasswordToken.Create()
|
op := h.client.PasswordToken.Create()
|
||||||
op.SetHash(payload.Hash)
|
if payload.Hash != nil {
|
||||||
|
op.SetHash(*payload.Hash)
|
||||||
|
}
|
||||||
op.SetUserID(payload.UserID)
|
op.SetUserID(payload.UserID)
|
||||||
if payload.CreatedAt != nil {
|
if payload.CreatedAt != nil {
|
||||||
op.SetCreatedAt(*payload.CreatedAt)
|
op.SetCreatedAt(*payload.CreatedAt)
|
||||||
|
|
@ -110,9 +112,14 @@ func (h *Handler) PasswordTokenUpdate(ctx echo.Context, id int) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
op := entity.Update()
|
op := entity.Update()
|
||||||
op.SetHash(payload.Hash)
|
if payload.Hash != nil {
|
||||||
|
op.SetHash(*payload.Hash)
|
||||||
|
}
|
||||||
op.SetUserID(payload.UserID)
|
op.SetUserID(payload.UserID)
|
||||||
if payload.CreatedAt != nil {
|
if payload.CreatedAt == nil {
|
||||||
|
var empty time.Time
|
||||||
|
op.SetCreatedAt(empty)
|
||||||
|
} else {
|
||||||
op.SetCreatedAt(*payload.CreatedAt)
|
op.SetCreatedAt(*payload.CreatedAt)
|
||||||
}
|
}
|
||||||
_, err = op.Save(ctx.Request().Context())
|
_, err = op.Save(ctx.Request().Context())
|
||||||
|
|
@ -179,7 +186,9 @@ func (h *Handler) UserCreate(ctx echo.Context) error {
|
||||||
op := h.client.User.Create()
|
op := h.client.User.Create()
|
||||||
op.SetName(payload.Name)
|
op.SetName(payload.Name)
|
||||||
op.SetEmail(payload.Email)
|
op.SetEmail(payload.Email)
|
||||||
op.SetPassword(payload.Password)
|
if payload.Password != nil {
|
||||||
|
op.SetPassword(*payload.Password)
|
||||||
|
}
|
||||||
op.SetVerified(payload.Verified)
|
op.SetVerified(payload.Verified)
|
||||||
if payload.CreatedAt != nil {
|
if payload.CreatedAt != nil {
|
||||||
op.SetCreatedAt(*payload.CreatedAt)
|
op.SetCreatedAt(*payload.CreatedAt)
|
||||||
|
|
@ -202,7 +211,9 @@ func (h *Handler) UserUpdate(ctx echo.Context, id int) error {
|
||||||
op := entity.Update()
|
op := entity.Update()
|
||||||
op.SetName(payload.Name)
|
op.SetName(payload.Name)
|
||||||
op.SetEmail(payload.Email)
|
op.SetEmail(payload.Email)
|
||||||
op.SetPassword(payload.Password)
|
if payload.Password != nil {
|
||||||
|
op.SetPassword(*payload.Password)
|
||||||
|
}
|
||||||
op.SetVerified(payload.Verified)
|
op.SetVerified(payload.Verified)
|
||||||
_, err = op.Save(ctx.Request().Context())
|
_, err = op.Save(ctx.Request().Context())
|
||||||
return err
|
return err
|
||||||
|
|
|
||||||
|
|
@ -122,10 +122,22 @@
|
||||||
op := entity.Update()
|
op := entity.Update()
|
||||||
{{- range $f := $n.Fields }}
|
{{- range $f := $n.Fields }}
|
||||||
{{- if not $f.Immutable }}
|
{{- if not $f.Immutable }}
|
||||||
{{- if (fieldIsPointer $f) }}
|
{{- if $f.Sensitive }}
|
||||||
if payload.{{ fieldName $f.Name }} != nil {
|
if payload.{{ fieldName $f.Name }} != nil {
|
||||||
op.Set{{ fieldName $f.Name }}(*payload.{{ fieldName $f.Name }})
|
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 }}
|
{{- else }}
|
||||||
op.Set{{ fieldName $f.Name }}(payload.{{ fieldName $f.Name }})
|
op.Set{{ fieldName $f.Name }}(payload.{{ fieldName $f.Name }})
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
|
||||||
|
|
@ -25,9 +25,9 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
type HandlerConfig struct {
|
type HandlerConfig struct {
|
||||||
ItemsPerPage int
|
ItemsPerPage int
|
||||||
PageQueryKey string
|
PageQueryKey string
|
||||||
TimeFormat string
|
TimeFormat string
|
||||||
}
|
}
|
||||||
|
|
||||||
{{ end }}
|
{{ end }}
|
||||||
|
|
@ -4,7 +4,7 @@ package admin
|
||||||
import "time"
|
import "time"
|
||||||
|
|
||||||
type PasswordToken struct {
|
type PasswordToken struct {
|
||||||
Hash string `form:"hash"`
|
Hash *string `form:"hash"`
|
||||||
UserID int `form:"user_id"`
|
UserID int `form:"user_id"`
|
||||||
CreatedAt *time.Time `form:"created_at"`
|
CreatedAt *time.Time `form:"created_at"`
|
||||||
}
|
}
|
||||||
|
|
@ -12,7 +12,7 @@ type PasswordToken struct {
|
||||||
type User struct {
|
type User struct {
|
||||||
Name string `form:"name"`
|
Name string `form:"name"`
|
||||||
Email string `form:"email"`
|
Email string `form:"email"`
|
||||||
Password string `form:"password"`
|
Password *string `form:"password"`
|
||||||
Verified bool `form:"verified"`
|
Verified bool `form:"verified"`
|
||||||
CreatedAt *time.Time `form:"created_at"`
|
CreatedAt *time.Time `form:"created_at"`
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue