commit f693a5ed5f366fc63d4fd3600756b5f553789b1e Author: Mateusz Mikołajczyk Date: Tue Aug 5 08:46:43 2025 +0200 initial diff --git a/date.go b/date.go new file mode 100644 index 0000000..fc97213 --- /dev/null +++ b/date.go @@ -0,0 +1,25 @@ +package ogen_types + +import ( + "time" + + "github.com/go-faster/jx" +) + +type Date struct { + time.Time +} + +func (d *Date) Encode(e *jx.Encoder) error { + e.Str(d.Format("2006-01-02")) + return nil +} + +func (d *Date) Decode(de *jx.Decoder) error { + value, err := de.Str() + if err != nil { + return err + } + d.Time, err = time.Parse("2006-01-02", value) + return err +} diff --git a/decimal.go b/decimal.go new file mode 100644 index 0000000..cbf7368 --- /dev/null +++ b/decimal.go @@ -0,0 +1,42 @@ +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 +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..8be17af --- /dev/null +++ b/go.mod @@ -0,0 +1,11 @@ +module git.dreakmore.info/ogen_types + +go 1.24.2 + +require github.com/go-faster/jx v1.1.0 + +require ( + github.com/go-faster/errors v0.6.1 // indirect + github.com/segmentio/asm v1.2.0 // indirect + golang.org/x/sys v0.1.0 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..0dc8442 --- /dev/null +++ b/go.sum @@ -0,0 +1,18 @@ +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/go-faster/errors v0.6.1 h1:nNIPOBkprlKzkThvS/0YaX8Zs9KewLCOSFQS5BU06FI= +github.com/go-faster/errors v0.6.1/go.mod h1:5MGV2/2T9yvlrbhe9pD9LO5Z/2zCSq2T8j+Jpi2LAyY= +github.com/go-faster/jx v1.1.0 h1:ZsW3wD+snOdmTDy9eIVgQdjUpXRRV4rqW8NS3t+20bg= +github.com/go-faster/jx v1.1.0/go.mod h1:vKDNikrKoyUmpzaJ0OkIkRQClNHFX/nF3dnTJZb3skg= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= +github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +golang.org/x/exp v0.0.0-20230116083435-1de6713980de h1:DBWn//IJw30uYCgERoxCg84hWtA97F4wMiKOIh00Uf0= +golang.org/x/exp v0.0.0-20230116083435-1de6713980de/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= +golang.org/x/sys v0.1.0 h1:kunALQeHf1/185U1i0GOB/fy1IPRDDpuoOOqRReG57U= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=