mirror of
https://github.com/AdguardTeam/AdGuardHome.git
synced 2024-12-24 07:38:16 +03:00
1d6d85cff4
Squashed commit of the following: commit586b0eb180
Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Tue Nov 12 19:58:56 2024 +0300 next: upd more commitd729aa150f
Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Tue Nov 12 16:53:15 2024 +0300 next/websvc: upd more commit0c64e6cfc6
Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Mon Nov 11 21:08:51 2024 +0300 next: upd more commit05eec75222
Author: Ainar Garipov <A.Garipov@AdGuard.COM> Date: Fri Nov 8 19:20:02 2024 +0300 next: upd code
31 lines
920 B
Go
31 lines
920 B
Go
package configmgr
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/AdguardTeam/golibs/errors"
|
|
"github.com/AdguardTeam/golibs/timeutil"
|
|
"golang.org/x/exp/constraints"
|
|
)
|
|
|
|
// validator is the interface for configuration entities that can validate
|
|
// themselves.
|
|
type validator interface {
|
|
// validate returns an error if the entity isn't valid.
|
|
validate() (err error)
|
|
}
|
|
|
|
// numberOrDuration is the constraint for integer types along with
|
|
// timeutil.Duration.
|
|
type numberOrDuration interface {
|
|
constraints.Integer | timeutil.Duration
|
|
}
|
|
|
|
// newErrNotPositive returns an error about the value that must be positive but
|
|
// isn't. prop is the name of the property to mention in the error message.
|
|
//
|
|
// TODO(a.garipov): Consider moving such helpers to golibs and use in AdGuardDNS
|
|
// as well.
|
|
func newErrNotPositive[T numberOrDuration](prop string, v T) (err error) {
|
|
return fmt.Errorf("%s: %w, got %v", prop, errors.ErrNotPositive, v)
|
|
}
|