Files
config/value/jbytes.go
andrey 0054ebf7e6
All checks were successful
Go Action / goaction (pull_request) Successful in 51s
fix typo
2025-12-30 21:55:25 +03:00

132 lines
2.0 KiB
Go

package value
import (
"errors"
"fmt"
"time"
"gitoa.ru/go-4devs/config"
)
var _ config.Value = (*JBytes)(nil)
type JBytes []byte
func (s JBytes) Unmarshal(v any) error {
return JUnmarshal(s.Bytes(), v)
}
func (s JBytes) ParseString() (string, error) {
var data string
return data, s.Unmarshal(&data)
}
func (s JBytes) ParseInt() (int, error) {
return JParse[int](s.Bytes())
}
func (s JBytes) ParseInt64() (int64, error) {
return JParse[int64](s.Bytes())
}
func (s JBytes) ParseUint() (uint, error) {
return JParse[uint](s.Bytes())
}
func (s JBytes) ParseUint64() (uint64, error) {
return JParse[uint64](s.Bytes())
}
func (s JBytes) ParseFloat64() (float64, error) {
return JParse[float64](s.Bytes())
}
func (s JBytes) ParseBool() (bool, error) {
return JParse[bool](s.Bytes())
}
func (s JBytes) ParseDuration() (time.Duration, error) {
jdata, jerr := JParse[time.Duration](s.Bytes())
if jerr == nil {
return jdata, nil
}
ustr, serr := s.ParseString()
if serr != nil {
return 0, errors.Join(jerr, fmt.Errorf("parse duration:%w", serr))
}
return ParseDuration(ustr)
}
func (s JBytes) ParseTime() (time.Time, error) {
return JParse[time.Time](s.Bytes())
}
func (s JBytes) Bytes() []byte {
return []byte(s)
}
func (s JBytes) String() string {
data, _ := s.ParseString()
return data
}
func (s JBytes) Int() int {
in, _ := s.ParseInt()
return in
}
func (s JBytes) Int64() int64 {
in, _ := s.ParseInt64()
return in
}
func (s JBytes) Uint() uint {
in, _ := s.ParseUint()
return in
}
func (s JBytes) Uint64() uint64 {
in, _ := s.ParseUint64()
return in
}
func (s JBytes) Float64() float64 {
in, _ := s.ParseFloat64()
return in
}
func (s JBytes) Bool() bool {
in, _ := s.ParseBool()
return in
}
func (s JBytes) Duration() time.Duration {
in, _ := s.ParseDuration()
return in
}
func (s JBytes) Time() time.Time {
in, _ := s.ParseTime()
return in
}
func (s JBytes) Any() any {
return s.Bytes()
}
func (s JBytes) IsEquals(in config.Value) bool {
return s.String() == in.String()
}