feat: use a map for O(1) lookup instead of a linear search
This commit is contained in:
@@ -408,12 +408,15 @@ func validateOneOf(fieldName string, v reflect.Value, param string) *ValidationE
|
|||||||
|
|
||||||
value := v.String()
|
value := v.String()
|
||||||
allowedValues := strings.Split(param, " ")
|
allowedValues := strings.Split(param, " ")
|
||||||
|
allowedMap := make(map[string]bool, len(allowedValues))
|
||||||
|
|
||||||
for _, allowed := range allowedValues {
|
for _, allowed := range allowedValues {
|
||||||
if value == allowed {
|
allowedMap[allowed] = true
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if !allowedMap[value] {
|
||||||
return &ValidationError{Field: fieldName, Message: fieldName + " must be one of: " + param}
|
return &ValidationError{Field: fieldName, Message: fieldName + " must be one of: " + param}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user