summaryrefslogtreecommitdiff
path: root/form/errors.go
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--form/errors.go30
1 files changed, 30 insertions, 0 deletions
diff --git a/form/errors.go b/form/errors.go
new file mode 100644
index 0000000..52206c4
--- /dev/null
+++ b/form/errors.go
@@ -0,0 +1,30 @@
+package form
+
+import (
+ "errors"
+ "fmt"
+)
+
+type FieldError struct {
+ Field string
+ Issue string
+}
+
+func (fe FieldError) Error() string {
+ return fmt.Sprintf("%s: %v", fe.Field, fe.Issue)
+}
+
+// errors will build a map where each key is the field name, and each
+// value is a slice of strings representing errors with that field.
+func fieldErrors(errs []error) map[string][]string {
+ ret := make(map[string][]string)
+ for _, err := range errs {
+ var fe FieldError
+ if !errors.As(err, &fe) {
+ fmt.Println(err, "isnt field error")
+ continue
+ }
+ ret[fe.Field] = append(ret[fe.Field], fe.Issue)
+ }
+ return ret
+}