2023-10-07 11:24:34 +01:00
|
|
|
package validate
|
|
|
|
|
|
2023-10-07 13:42:17 +01:00
|
|
|
var (
|
2023-11-19 20:42:48 +00:00
|
|
|
ErrValueNotAllowed = NewError("not allowed")
|
2023-10-07 13:42:17 +01:00
|
|
|
)
|
|
|
|
|
|
2026-09-07 13:59:59 +01:00
|
|
|
// In validates that a value equals one of the allowed values.
|
2023-10-07 13:42:17 +01:00
|
|
|
func In[T comparable](allow ...T) func(T) error {
|
2023-10-07 11:24:34 +01:00
|
|
|
return func(value T) error {
|
|
|
|
|
for _, cmp := range allow {
|
|
|
|
|
if cmp == value {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
}
|
2023-10-07 13:42:17 +01:00
|
|
|
return ErrValueNotAllowed
|
2023-10-07 11:24:34 +01:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2026-09-07 13:59:59 +01:00
|
|
|
// NotIn validates that a value equals none of the disallowed values.
|
|
|
|
|
func NotIn[T comparable](disallow ...T) func(T) error {
|
2023-10-07 11:24:34 +01:00
|
|
|
return func(value T) error {
|
2026-09-07 13:59:59 +01:00
|
|
|
for _, cmp := range disallow {
|
2023-10-07 11:24:34 +01:00
|
|
|
if cmp == value {
|
2023-10-07 13:42:17 +01:00
|
|
|
return ErrValueNotAllowed
|
2023-10-07 11:24:34 +01:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
}
|