Initial cloud-services repo - gateway service + pkg modules

This commit is contained in:
Chris Rai
2026-01-30 23:14:52 -05:00
commit fbb820d7b3
1037 changed files with 171318 additions and 0 deletions

67
pkg/validator/error.go Normal file
View File

@@ -0,0 +1,67 @@
package validator
import (
"fmt"
"strings"
"github.com/go-pg/pg/v10"
"github.com/go-playground/validator/v10"
)
func GetValidationErrorMsg(err error) (bool, string) {
valerr, ok := err.(validator.ValidationErrors)
if ok {
return true, GetError(&valerr)
}
fielderr, ok := err.(*FieldError)
if ok {
return true, fielderr.Error()
}
pgerr, ok := err.(pg.Error)
if ok && pgerr.IntegrityViolation() {
return true, pgerr.Field(68)
}
return false, err.Error()
}
func GetError(errs *validator.ValidationErrors) string {
size := len(*errs)
msg := make([]string, size)
for i, err := range *errs {
key := err.Field()
if len(key) == 0 {
key = err.Tag()
}
msg[i] = fmt.Sprintf("%s %s", key, readableValidationError(err.Tag(), err.Param(), err.Value()))
}
return strings.Join(msg, ". ")
}
func readableValidationError(tag string, param string, value interface{}) string {
switch tag {
case "required":
return tag
case "lte":
return fmt.Sprintf("greater than %s", param)
case "gte":
return fmt.Sprintf("less than %s", param)
case "len":
return fmt.Sprintf("not %s length", param)
case "max":
return fmt.Sprintf("greater than %s length", param)
case "min":
return fmt.Sprintf("less than %s length", param)
case "serial":
return fmt.Sprintf("'%v' invalid", value)
case "vin":
return fmt.Sprintf("'%v' invalid", value)
case "url":
return "invalid url"
default:
return fmt.Sprintf("%s %s", tag, param)
}
}