Files
config/value/empty.go
2025-12-26 14:26:55 +03:00

111 lines
1.5 KiB
Go

package value
import (
"errors"
"time"
"gitoa.ru/go-4devs/config"
)
var (
emptyValue = Empty{Err: nil}
)
func EmptyValue() config.Value {
return emptyValue
}
type Empty struct {
Err error
}
func IsEmpty(v config.Value) bool {
return v == nil || v == emptyValue
}
func (e Empty) Unmarshal(_ any) error {
return e.Err
}
func (e Empty) ParseString() (string, error) {
return "", e.Err
}
func (e Empty) ParseInt() (int, error) {
return 0, e.Err
}
func (e Empty) ParseInt64() (int64, error) {
return 0, e.Err
}
func (e Empty) ParseUint() (uint, error) {
return 0, e.Err
}
func (e Empty) ParseUint64() (uint64, error) {
return 0, e.Err
}
func (e Empty) ParseFloat64() (float64, error) {
return 0, e.Err
}
func (e Empty) ParseBool() (bool, error) {
return false, e.Err
}
func (e Empty) ParseDuration() (time.Duration, error) {
return 0, e.Err
}
func (e Empty) ParseTime() (time.Time, error) {
return time.Time{}, e.Err
}
func (e Empty) String() string {
return ""
}
func (e Empty) Int() int {
return 0
}
func (e Empty) Int64() int64 {
return 0
}
func (e Empty) Uint() uint {
return 0
}
func (e Empty) Uint64() uint64 {
return 0
}
func (e Empty) Float64() float64 {
return 0
}
func (e Empty) Bool() bool {
return false
}
func (e Empty) Duration() time.Duration {
return 0
}
func (e Empty) Time() time.Time {
return time.Time{}
}
func (e Empty) Any() any {
return e.Err
}
func (e Empty) IsEquals(v config.Value) bool {
em, ok := v.(Empty)
return ok && errors.Is(em.Err, e.Err)
}