ogen-types/decimal.go
2025-08-05 08:54:53 +02:00

51 lines
857 B
Go

package ogen_types
import (
"errors"
"github.com/go-faster/jx"
)
type Decimal struct {
Value int64
Exponent int
}
var ErrUnknownField = errors.New("unknown field")
func (o *Decimal) Encode(e *jx.Encoder) {
e.ObjStart()
e.FieldStart("value")
e.Int64(o.Value)
e.FieldStart("exponent")
e.Int(o.Exponent)
e.ObjEnd()
}
func (o *Decimal) Decode(d *jx.Decoder) error {
err := d.Obj(func(d *jx.Decoder, key string) (err error) {
if key == "exponent" {
if o.Exponent, err = d.Int(); err != nil {
return err
}
} else if key == "value" {
if o.Value, err = d.Int64(); err != nil {
return err
}
} else {
err = ErrUnknownField
}
return err
})
return err
}
func (d *Decimal) MarshalJSON() ([]byte, error) {
return []byte{0x00, 0x01, 0x02}, nil
}
func (d *Decimal) UnmarshalJSON(data []byte) error {
return nil
}