From 029b9cbf69c232bb463807fe1a3200901144e6bc Mon Sep 17 00:00:00 2001 From: Robin Olsen Date: Fri, 13 Feb 2026 13:40:16 +0100 Subject: [PATCH] make generic form parser --- pkg/web/handler/forms.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 pkg/web/handler/forms.go diff --git a/pkg/web/handler/forms.go b/pkg/web/handler/forms.go new file mode 100644 index 0000000..960464a --- /dev/null +++ b/pkg/web/handler/forms.go @@ -0,0 +1,30 @@ +package handler + +import ( + "net/http" + + "github.com/go-playground/form/v4" + "github.com/go-playground/validator/v10" +) + +var ( + decoder = form.NewDecoder() + validate = validator.New(validator.WithRequiredStructEnabled()) +) + +func ParseForm[T any](r *http.Request) (*T, error) { + if err := r.ParseForm(); err != nil { + return nil, err + } + + var data T + if err := decoder.Decode(&data, r.PostForm); err != nil { + return nil, err + } + + return &data, nil +} + +func ValidateForm[T any](data *T) error { + return validate.Struct(data) +}