From 8a4dd9fb3bd812d29ec69ac08a62896ef0254821 Mon Sep 17 00:00:00 2001 From: mikestefanello <552328+mikestefanello@users.noreply.github.com> Date: Tue, 15 Apr 2025 07:36:35 -0400 Subject: [PATCH] Clear empty optional fields. --- ent/admin/handler.go | 13 ++++++++++++- ent/admin/templates/handler.tmpl | 9 ++++++--- ent/admin/types.go | 13 +++++++++---- pkg/ui/pages/entity.go | 2 +- 4 files changed, 28 insertions(+), 9 deletions(-) diff --git a/ent/admin/handler.go b/ent/admin/handler.go index 20b42d0..ca8fcef 100644 --- a/ent/admin/handler.go +++ b/ent/admin/handler.go @@ -96,6 +96,9 @@ func (h *Handler) PasswordTokenCreate(ctx echo.Context) error { if payload.CreatedAt != nil { op.SetCreatedAt(*payload.CreatedAt) } + if payload.Abc != nil { + op.SetAbc(*payload.Abc) + } _, err := op.Save(ctx.Request().Context()) return err } @@ -122,6 +125,11 @@ func (h *Handler) PasswordTokenUpdate(ctx echo.Context, id int) error { } else { op.SetCreatedAt(*payload.CreatedAt) } + if payload.Abc == nil { + op.ClearAbc() + } else { + op.SetAbc(*payload.Abc) + } _, err = op.Save(ctx.Request().Context()) return err } @@ -147,6 +155,7 @@ func (h *Handler) PasswordTokenList(ctx echo.Context) (*EntityList, error) { Columns: []string{ "User ID", "Created at", + "Abc", }, Entities: make([]EntityValues, 0, len(res)), HasNextPage: len(res) > h.Config.ItemsPerPage, @@ -158,6 +167,7 @@ func (h *Handler) PasswordTokenList(ctx echo.Context) (*EntityList, error) { Values: []string{ fmt.Sprint(res[i].UserID), res[i].CreatedAt.Format(h.Config.TimeFormat), + fmt.Sprint(res[i].Abc), }, }) } @@ -174,6 +184,7 @@ func (h *Handler) PasswordTokenGet(ctx echo.Context, id int) (url.Values, error) v := url.Values{} v.Set("user_id", fmt.Sprint(entity.UserID)) v.Set("created_at", entity.CreatedAt.Format(time.RFC3339)) + v.Set("abc", fmt.Sprint(entity.Abc)) return v, err } @@ -285,7 +296,7 @@ func (h *Handler) getOffset(ctx echo.Context) int { } func (h *Handler) bind(ctx echo.Context, entity any) error { - // Remove empty field values so Echo's bind does to fail when trying to parse things like + // Remove empty field values so Echo's bind does not fail when trying to parse things like // times, etc. for k, v := range ctx.Request().Form { if len(v) == 1 && len(v[0]) == 0 { diff --git a/ent/admin/templates/handler.tmpl b/ent/admin/templates/handler.tmpl index 7dddee6..df13f5d 100644 --- a/ent/admin/templates/handler.tmpl +++ b/ent/admin/templates/handler.tmpl @@ -128,8 +128,11 @@ } {{- else if $f.Nillable }} op.SetNillable{{ fieldName $f.Name }}(payload.{{ fieldName $f.Name }}) - if payload.{{ fieldName $f.Name }} != nil { - // TODO this is not available op.Clear{{ fieldName $f.Name }}() + {{- else if $f.Optional }} + if payload.{{ fieldName $f.Name }} == nil { + op.Clear{{ fieldName $f.Name }}() + } else { + op.Set{{ fieldName $f.Name }}(*payload.{{ fieldName $f.Name }}) } {{- else if (fieldIsPointer $f) }} if payload.{{ fieldName $f.Name }} == nil { @@ -230,7 +233,7 @@ } func (h *Handler) bind(ctx echo.Context, entity any) error { - // Remove empty field values so Echo's bind does to fail when trying to parse things like + // Remove empty field values so Echo's bind does not fail when trying to parse things like // times, etc. for k, v := range ctx.Request().Form { if len(v) == 1 && len(v[0]) == 0 { diff --git a/ent/admin/types.go b/ent/admin/types.go index ced63cc..3aa6fec 100644 --- a/ent/admin/types.go +++ b/ent/admin/types.go @@ -1,12 +1,17 @@ // Code generated by ent, DO NOT EDIT. package admin -import "time" +import ( + "time" + + "github.com/mikestefanello/pagoda/ent/passwordtoken" +) type PasswordToken struct { - Hash *string `form:"hash"` - UserID int `form:"user_id"` - CreatedAt *time.Time `form:"created_at"` + Hash *string `form:"hash"` + UserID int `form:"user_id"` + CreatedAt *time.Time `form:"created_at"` + Abc *passwordtoken.Abc `form:"abc"` } type User struct { diff --git a/pkg/ui/pages/entity.go b/pkg/ui/pages/entity.go index b6eb3f6..ba7de96 100644 --- a/pkg/ui/pages/entity.go +++ b/pkg/ui/pages/entity.go @@ -112,7 +112,7 @@ func AdminEntityForm(ctx echo.Context, isNew bool, schema *load.Schema, values u })) case field.TypeEnum: options := make([]Choice, 0, len(f.Enums)+1) - if f.Nillable { + if f.Optional { options = append(options, Choice{ Label: "-", Value: "",