Skip to content

Commit

Permalink
Support field prefix rewrites
Browse files Browse the repository at this point in the history
  • Loading branch information
mpraski committed Sep 9, 2022
1 parent 963f2b4 commit 4fb64ca
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 1 deletion.
9 changes: 9 additions & 0 deletions logger/error.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (

type ValidationError struct {
Root error
Rewrite [2]string
Details validator.ValidationErrors
}

Expand Down Expand Up @@ -53,6 +54,14 @@ func (e *ValidationError) Error() string {
return sb.String()
}

func (e *ValidationError) RewritePrefix(original, updated string) {
e.Rewrite = [2]string{original, updated}
}

func (e *ValidationError) RewritesPrefix() bool {
return e.Rewrite != [2]string{}
}

func unwrap(err error) error {
for errors.Unwrap(err) != nil {
err = errors.Unwrap(err)
Expand Down
19 changes: 18 additions & 1 deletion logger/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ func (l Logger) LogServiceError(w http.ResponseWriter, r *http.Request, e error)
}

for i := range g.Details {
f = append(f, apiField{Name: formatField(g.Details[i].StructNamespace())})
f = append(f, apiField{Name: prepareField(g, g.Details[i])})
}

case validator.ValidationErrors:
Expand Down Expand Up @@ -136,6 +136,23 @@ func (l Logger) Log(v logging.Severity, m string, f Fields) {
})
}

func prepareField(e *ValidationError, f validator.FieldError) string {
v := formatField(f.StructNamespace())
if e.RewritesPrefix() {
v = rewriteField(v, e.Rewrite)
}

return v
}

func rewriteField(f string, rewrite [2]string) string {
if strings.HasPrefix(f, rewrite[0]) {
return rewrite[1] + strings.TrimPrefix(f, rewrite[0])
}

return f
}

func formatField(f string) string {
p := strings.Split(f, ".")
for i := range p {
Expand Down

0 comments on commit 4fb64ca

Please sign in to comment.