diff --git a/_testdata/positive/free_form.json b/_testdata/positive/free_form.json new file mode 100644 index 000000000..5aad2341b --- /dev/null +++ b/_testdata/positive/free_form.json @@ -0,0 +1,42 @@ +{ + "openapi": "3.0.3", + "info": { + "version": "1.0.0", + "title": "Free-Form Object Example" + }, + "paths": { + "/path1": { + "get": { + "operationId": "Path1", + "responses": { + "default": { + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + } + } + } + }, + "/path2": { + "get": { + "operationId": "Path2", + "responses": { + "default": { + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true + } + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/examples/ex_firecracker/oas_client_gen.go b/examples/ex_firecracker/oas_client_gen.go index cf7b9df49..970e51f46 100644 --- a/examples/ex_firecracker/oas_client_gen.go +++ b/examples/ex_firecracker/oas_client_gen.go @@ -91,13 +91,13 @@ type Invoker interface { // Updates the MMDS data store. // // PATCH /mmds - MmdsPatch(ctx context.Context, request *MmdsPatchReq) (MmdsPatchRes, error) + MmdsPatch(ctx context.Context, request OptMmdsPatchReq) (MmdsPatchRes, error) // MmdsPut invokes PUT /mmds operation. // // Creates a MMDS (Microvm Metadata Service) data store. // // PUT /mmds - MmdsPut(ctx context.Context, request *MmdsPutReq) (MmdsPutRes, error) + MmdsPut(ctx context.Context, request OptMmdsPutReq) (MmdsPutRes, error) // PatchBalloon invokes patchBalloon operation. // // Updates an existing balloon device, before or after machine startup. Will fail if update is not @@ -985,12 +985,12 @@ func (c *Client) sendMmdsGet(ctx context.Context) (res MmdsGetRes, err error) { // Updates the MMDS data store. // // PATCH /mmds -func (c *Client) MmdsPatch(ctx context.Context, request *MmdsPatchReq) (MmdsPatchRes, error) { +func (c *Client) MmdsPatch(ctx context.Context, request OptMmdsPatchReq) (MmdsPatchRes, error) { res, err := c.sendMmdsPatch(ctx, request) return res, err } -func (c *Client) sendMmdsPatch(ctx context.Context, request *MmdsPatchReq) (res MmdsPatchRes, err error) { +func (c *Client) sendMmdsPatch(ctx context.Context, request OptMmdsPatchReq) (res MmdsPatchRes, err error) { otelAttrs := []attribute.KeyValue{ semconv.HTTPMethodKey.String("PATCH"), semconv.HTTPRouteKey.String("/mmds"), @@ -1059,12 +1059,12 @@ func (c *Client) sendMmdsPatch(ctx context.Context, request *MmdsPatchReq) (res // Creates a MMDS (Microvm Metadata Service) data store. // // PUT /mmds -func (c *Client) MmdsPut(ctx context.Context, request *MmdsPutReq) (MmdsPutRes, error) { +func (c *Client) MmdsPut(ctx context.Context, request OptMmdsPutReq) (MmdsPutRes, error) { res, err := c.sendMmdsPut(ctx, request) return res, err } -func (c *Client) sendMmdsPut(ctx context.Context, request *MmdsPutReq) (res MmdsPutRes, err error) { +func (c *Client) sendMmdsPut(ctx context.Context, request OptMmdsPutReq) (res MmdsPutRes, err error) { otelAttrs := []attribute.KeyValue{ semconv.HTTPMethodKey.String("PUT"), semconv.HTTPRouteKey.String("/mmds"), diff --git a/examples/ex_firecracker/oas_faker_gen.go b/examples/ex_firecracker/oas_faker_gen.go index f9893f534..d9351bf6e 100644 --- a/examples/ex_firecracker/oas_faker_gen.go +++ b/examples/ex_firecracker/oas_faker_gen.go @@ -2,6 +2,12 @@ package api +import ( + "fmt" + + "github.com/go-faster/jx" +) + // SetFake set fake values. func (s *Balloon) SetFake() { { @@ -369,14 +375,35 @@ func (s *MmdsConfig) SetFake() { // SetFake set fake values. func (s *MmdsGetOK) SetFake() { + var ( + elem jx.Raw + m map[string]jx.Raw = s.init() + ) + for i := 0; i < 0; i++ { + m[fmt.Sprintf("fake%d", i)] = elem + } } // SetFake set fake values. func (s *MmdsPatchReq) SetFake() { + var ( + elem jx.Raw + m map[string]jx.Raw = s.init() + ) + for i := 0; i < 0; i++ { + m[fmt.Sprintf("fake%d", i)] = elem + } } // SetFake set fake values. func (s *MmdsPutReq) SetFake() { + var ( + elem jx.Raw + m map[string]jx.Raw = s.init() + ) + for i := 0; i < 0; i++ { + m[fmt.Sprintf("fake%d", i)] = elem + } } // SetFake set fake values. @@ -512,6 +539,24 @@ func (s *OptMmdsConfig) SetFake() { s.SetTo(elem) } +// SetFake set fake values. +func (s *OptMmdsPatchReq) SetFake() { + var elem MmdsPatchReq + { + elem.SetFake() + } + s.SetTo(elem) +} + +// SetFake set fake values. +func (s *OptMmdsPutReq) SetFake() { + var elem MmdsPutReq + { + elem.SetFake() + } + s.SetTo(elem) +} + // SetFake set fake values. func (s *OptRateLimiter) SetFake() { var elem RateLimiter diff --git a/examples/ex_firecracker/oas_handlers_gen.go b/examples/ex_firecracker/oas_handlers_gen.go index edb0a8929..c8ab8bfc0 100644 --- a/examples/ex_firecracker/oas_handlers_gen.go +++ b/examples/ex_firecracker/oas_handlers_gen.go @@ -1213,7 +1213,7 @@ func (s *Server) handleMmdsPatchRequest(args [0]string, argsEscaped bool, w http } type ( - Request = *MmdsPatchReq + Request = OptMmdsPatchReq Params = struct{} Response = MmdsPatchRes ) @@ -1335,7 +1335,7 @@ func (s *Server) handleMmdsPutRequest(args [0]string, argsEscaped bool, w http.R } type ( - Request = *MmdsPutReq + Request = OptMmdsPutReq Params = struct{} Response = MmdsPutRes ) diff --git a/examples/ex_firecracker/oas_json_gen.go b/examples/ex_firecracker/oas_json_gen.go index 5a035494e..416d72a94 100644 --- a/examples/ex_firecracker/oas_json_gen.go +++ b/examples/ex_firecracker/oas_json_gen.go @@ -2145,29 +2145,43 @@ func (s *MmdsConfig) UnmarshalJSON(data []byte) error { } // Encode implements json.Marshaler. -func (s *MmdsGetOK) Encode(e *jx.Encoder) { +func (s MmdsGetOK) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *MmdsGetOK) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s MmdsGetOK) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfMmdsGetOK = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes MmdsGetOK from json. func (s *MmdsGetOK) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode MmdsGetOK to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode MmdsGetOK") } @@ -2176,7 +2190,7 @@ func (s *MmdsGetOK) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *MmdsGetOK) MarshalJSON() ([]byte, error) { +func (s MmdsGetOK) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -2189,29 +2203,43 @@ func (s *MmdsGetOK) UnmarshalJSON(data []byte) error { } // Encode implements json.Marshaler. -func (s *MmdsPatchReq) Encode(e *jx.Encoder) { +func (s MmdsPatchReq) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *MmdsPatchReq) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s MmdsPatchReq) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfMmdsPatchReq = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes MmdsPatchReq from json. func (s *MmdsPatchReq) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode MmdsPatchReq to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode MmdsPatchReq") } @@ -2220,7 +2248,7 @@ func (s *MmdsPatchReq) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *MmdsPatchReq) MarshalJSON() ([]byte, error) { +func (s MmdsPatchReq) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -2233,29 +2261,43 @@ func (s *MmdsPatchReq) UnmarshalJSON(data []byte) error { } // Encode implements json.Marshaler. -func (s *MmdsPutReq) Encode(e *jx.Encoder) { +func (s MmdsPutReq) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *MmdsPutReq) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s MmdsPutReq) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfMmdsPutReq = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes MmdsPutReq from json. func (s *MmdsPutReq) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode MmdsPutReq to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode MmdsPutReq") } @@ -2264,7 +2306,7 @@ func (s *MmdsPutReq) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *MmdsPutReq) MarshalJSON() ([]byte, error) { +func (s MmdsPutReq) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -2826,6 +2868,74 @@ func (s *OptMmdsConfig) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode encodes MmdsPatchReq as json. +func (o OptMmdsPatchReq) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes MmdsPatchReq from json. +func (o *OptMmdsPatchReq) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptMmdsPatchReq to nil") + } + o.Set = true + o.Value = make(MmdsPatchReq) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptMmdsPatchReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptMmdsPatchReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes MmdsPutReq as json. +func (o OptMmdsPutReq) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes MmdsPutReq from json. +func (o *OptMmdsPutReq) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptMmdsPutReq to nil") + } + o.Set = true + o.Value = make(MmdsPutReq) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptMmdsPutReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptMmdsPutReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode encodes RateLimiter as json. func (o OptRateLimiter) Encode(e *jx.Encoder) { if !o.Set { diff --git a/examples/ex_firecracker/oas_request_decoders_gen.go b/examples/ex_firecracker/oas_request_decoders_gen.go index 554abfe55..dbd174f6c 100644 --- a/examples/ex_firecracker/oas_request_decoders_gen.go +++ b/examples/ex_firecracker/oas_request_decoders_gen.go @@ -284,7 +284,7 @@ func (s *Server) decodeMmdsConfigPutRequest(r *http.Request) ( } func (s *Server) decodeMmdsPatchRequest(r *http.Request) ( - req *MmdsPatchReq, + req OptMmdsPatchReq, close func() error, rerr error, ) { @@ -326,14 +326,12 @@ func (s *Server) decodeMmdsPatchRequest(r *http.Request) ( d := jx.DecodeBytes(buf) - var request *MmdsPatchReq + var request OptMmdsPatchReq if err := func() error { - request = nil - var elem MmdsPatchReq - if err := elem.Decode(d); err != nil { + request.Reset() + if err := request.Decode(d); err != nil { return err } - request = &elem if err := d.Skip(); err != io.EOF { return errors.New("unexpected trailing data") } @@ -353,7 +351,7 @@ func (s *Server) decodeMmdsPatchRequest(r *http.Request) ( } func (s *Server) decodeMmdsPutRequest(r *http.Request) ( - req *MmdsPutReq, + req OptMmdsPutReq, close func() error, rerr error, ) { @@ -395,14 +393,12 @@ func (s *Server) decodeMmdsPutRequest(r *http.Request) ( d := jx.DecodeBytes(buf) - var request *MmdsPutReq + var request OptMmdsPutReq if err := func() error { - request = nil - var elem MmdsPutReq - if err := elem.Decode(d); err != nil { + request.Reset() + if err := request.Decode(d); err != nil { return err } - request = &elem if err := d.Skip(); err != io.EOF { return errors.New("unexpected trailing data") } diff --git a/examples/ex_firecracker/oas_request_encoders_gen.go b/examples/ex_firecracker/oas_request_encoders_gen.go index b4d914075..5c2331180 100644 --- a/examples/ex_firecracker/oas_request_encoders_gen.go +++ b/examples/ex_firecracker/oas_request_encoders_gen.go @@ -68,13 +68,17 @@ func encodeMmdsConfigPutRequest( } func encodeMmdsPatchRequest( - req *MmdsPatchReq, + req OptMmdsPatchReq, r *http.Request, ) error { const contentType = "application/json" + if !req.Set { + // Keep request with empty body if value is not set. + return nil + } e := new(jx.Encoder) { - if req != nil { + if req.Set { req.Encode(e) } } @@ -84,13 +88,17 @@ func encodeMmdsPatchRequest( } func encodeMmdsPutRequest( - req *MmdsPutReq, + req OptMmdsPutReq, r *http.Request, ) error { const contentType = "application/json" + if !req.Set { + // Keep request with empty body if value is not set. + return nil + } e := new(jx.Encoder) { - if req != nil { + if req.Set { req.Encode(e) } } diff --git a/examples/ex_firecracker/oas_schemas_gen.go b/examples/ex_firecracker/oas_schemas_gen.go index f00ded829..a89eb424d 100644 --- a/examples/ex_firecracker/oas_schemas_gen.go +++ b/examples/ex_firecracker/oas_schemas_gen.go @@ -6,6 +6,7 @@ import ( "fmt" "github.com/go-faster/errors" + "github.com/go-faster/jx" ) func (s *ErrorStatusCode) Error() string { @@ -1008,7 +1009,16 @@ type MmdsConfigPutNoContent struct{} func (*MmdsConfigPutNoContent) mmdsConfigPutRes() {} -type MmdsGetOK struct{} +type MmdsGetOK map[string]jx.Raw + +func (s *MmdsGetOK) init() MmdsGetOK { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} func (*MmdsGetOK) mmdsGetRes() {} @@ -1017,14 +1027,32 @@ type MmdsPatchNoContent struct{} func (*MmdsPatchNoContent) mmdsPatchRes() {} -type MmdsPatchReq struct{} +type MmdsPatchReq map[string]jx.Raw + +func (s *MmdsPatchReq) init() MmdsPatchReq { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} // MmdsPutNoContent is response for MmdsPut operation. type MmdsPutNoContent struct{} func (*MmdsPutNoContent) mmdsPutRes() {} -type MmdsPutReq struct{} +type MmdsPutReq map[string]jx.Raw + +func (s *MmdsPutReq) init() MmdsPutReq { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} // Defines a network interface. // Ref: #/components/schemas/NetworkInterface @@ -1608,6 +1636,98 @@ func (o OptMmdsConfig) Or(d MmdsConfig) MmdsConfig { return d } +// NewOptMmdsPatchReq returns new OptMmdsPatchReq with value set to v. +func NewOptMmdsPatchReq(v MmdsPatchReq) OptMmdsPatchReq { + return OptMmdsPatchReq{ + Value: v, + Set: true, + } +} + +// OptMmdsPatchReq is optional MmdsPatchReq. +type OptMmdsPatchReq struct { + Value MmdsPatchReq + Set bool +} + +// IsSet returns true if OptMmdsPatchReq was set. +func (o OptMmdsPatchReq) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptMmdsPatchReq) Reset() { + var v MmdsPatchReq + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptMmdsPatchReq) SetTo(v MmdsPatchReq) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptMmdsPatchReq) Get() (v MmdsPatchReq, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptMmdsPatchReq) Or(d MmdsPatchReq) MmdsPatchReq { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptMmdsPutReq returns new OptMmdsPutReq with value set to v. +func NewOptMmdsPutReq(v MmdsPutReq) OptMmdsPutReq { + return OptMmdsPutReq{ + Value: v, + Set: true, + } +} + +// OptMmdsPutReq is optional MmdsPutReq. +type OptMmdsPutReq struct { + Value MmdsPutReq + Set bool +} + +// IsSet returns true if OptMmdsPutReq was set. +func (o OptMmdsPutReq) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptMmdsPutReq) Reset() { + var v MmdsPutReq + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptMmdsPutReq) SetTo(v MmdsPutReq) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptMmdsPutReq) Get() (v MmdsPutReq, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptMmdsPutReq) Or(d MmdsPutReq) MmdsPutReq { + if v, ok := o.Get(); ok { + return v + } + return d +} + // NewOptRateLimiter returns new OptRateLimiter with value set to v. func NewOptRateLimiter(v RateLimiter) OptRateLimiter { return OptRateLimiter{ diff --git a/examples/ex_firecracker/oas_server_gen.go b/examples/ex_firecracker/oas_server_gen.go index 5c59d8b0a..b0160052b 100644 --- a/examples/ex_firecracker/oas_server_gen.go +++ b/examples/ex_firecracker/oas_server_gen.go @@ -76,13 +76,13 @@ type Handler interface { // Updates the MMDS data store. // // PATCH /mmds - MmdsPatch(ctx context.Context, req *MmdsPatchReq) (MmdsPatchRes, error) + MmdsPatch(ctx context.Context, req OptMmdsPatchReq) (MmdsPatchRes, error) // MmdsPut implements PUT /mmds operation. // // Creates a MMDS (Microvm Metadata Service) data store. // // PUT /mmds - MmdsPut(ctx context.Context, req *MmdsPutReq) (MmdsPutRes, error) + MmdsPut(ctx context.Context, req OptMmdsPutReq) (MmdsPutRes, error) // PatchBalloon implements patchBalloon operation. // // Updates an existing balloon device, before or after machine startup. Will fail if update is not diff --git a/examples/ex_firecracker/oas_test_examples_gen_test.go b/examples/ex_firecracker/oas_test_examples_gen_test.go index 4313b2cd4..30ba91127 100644 --- a/examples/ex_firecracker/oas_test_examples_gen_test.go +++ b/examples/ex_firecracker/oas_test_examples_gen_test.go @@ -229,6 +229,7 @@ func TestMmdsConfig_EncodeDecode(t *testing.T) { } func TestMmdsGetOK_EncodeDecode(t *testing.T) { var typ MmdsGetOK + typ = make(MmdsGetOK) typ.SetFake() e := jx.Encoder{} @@ -237,10 +238,12 @@ func TestMmdsGetOK_EncodeDecode(t *testing.T) { require.True(t, std.Valid(data), "Encoded: %s", data) var typ2 MmdsGetOK + typ2 = make(MmdsGetOK) require.NoError(t, typ2.Decode(jx.DecodeBytes(data))) } func TestMmdsPatchReq_EncodeDecode(t *testing.T) { var typ MmdsPatchReq + typ = make(MmdsPatchReq) typ.SetFake() e := jx.Encoder{} @@ -249,10 +252,12 @@ func TestMmdsPatchReq_EncodeDecode(t *testing.T) { require.True(t, std.Valid(data), "Encoded: %s", data) var typ2 MmdsPatchReq + typ2 = make(MmdsPatchReq) require.NoError(t, typ2.Decode(jx.DecodeBytes(data))) } func TestMmdsPutReq_EncodeDecode(t *testing.T) { var typ MmdsPutReq + typ = make(MmdsPutReq) typ.SetFake() e := jx.Encoder{} @@ -261,6 +266,7 @@ func TestMmdsPutReq_EncodeDecode(t *testing.T) { require.True(t, std.Valid(data), "Encoded: %s", data) var typ2 MmdsPutReq + typ2 = make(MmdsPutReq) require.NoError(t, typ2.Decode(jx.DecodeBytes(data))) } func TestNetworkInterface_EncodeDecode(t *testing.T) { diff --git a/examples/ex_firecracker/oas_unimplemented_gen.go b/examples/ex_firecracker/oas_unimplemented_gen.go index 314748b5a..17da7a54e 100644 --- a/examples/ex_firecracker/oas_unimplemented_gen.go +++ b/examples/ex_firecracker/oas_unimplemented_gen.go @@ -111,7 +111,7 @@ func (UnimplementedHandler) MmdsGet(ctx context.Context) (r MmdsGetRes, _ error) // Updates the MMDS data store. // // PATCH /mmds -func (UnimplementedHandler) MmdsPatch(ctx context.Context, req *MmdsPatchReq) (r MmdsPatchRes, _ error) { +func (UnimplementedHandler) MmdsPatch(ctx context.Context, req OptMmdsPatchReq) (r MmdsPatchRes, _ error) { return r, ht.ErrNotImplemented } @@ -120,7 +120,7 @@ func (UnimplementedHandler) MmdsPatch(ctx context.Context, req *MmdsPatchReq) (r // Creates a MMDS (Microvm Metadata Service) data store. // // PUT /mmds -func (UnimplementedHandler) MmdsPut(ctx context.Context, req *MmdsPutReq) (r MmdsPutRes, _ error) { +func (UnimplementedHandler) MmdsPut(ctx context.Context, req OptMmdsPutReq) (r MmdsPutRes, _ error) { return r, ht.ErrNotImplemented } diff --git a/examples/ex_github/oas_faker_gen.go b/examples/ex_github/oas_faker_gen.go index 1463ce9b8..97ca87887 100644 --- a/examples/ex_github/oas_faker_gen.go +++ b/examples/ex_github/oas_faker_gen.go @@ -158,6 +158,13 @@ func (s *APIOverviewSSHKeyFingerprints) SetFake() { // SetFake set fake values. func (s *Accepted) SetFake() { + var ( + elem jx.Raw + m map[string]jx.Raw = s.init() + ) + for i := 0; i < 0; i++ { + m[fmt.Sprintf("fake%d", i)] = elem + } } // SetFake set fake values. @@ -2692,8 +2699,8 @@ func (s *AuthenticationToken) SetFake() { } } { - { // Keep pointer nil to prevent infinite recursion. - s.Permissions = nil + { + s.Permissions.SetFake() } } { @@ -2722,6 +2729,13 @@ func (s *AuthenticationToken) SetFake() { // SetFake set fake values. func (s *AuthenticationTokenPermissions) SetFake() { + var ( + elem jx.Raw + m map[string]jx.Raw = s.init() + ) + for i := 0; i < 0; i++ { + m[fmt.Sprintf("fake%d", i)] = elem + } } // SetFake set fake values. @@ -7487,6 +7501,13 @@ func (s *EnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue) // SetFake set fake values. func (s *EnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue1) SetFake() { + var ( + elem jx.Raw + m map[string]jx.Raw = s.init() + ) + for i := 0; i < 0; i++ { + m[fmt.Sprintf("fake%d", i)] = elem + } } // SetFake set fake values. @@ -7519,6 +7540,13 @@ func (s *EnterpriseAdminUpdateAttributeForEnterpriseUserReq) SetFake() { // SetFake set fake values. func (s *EnterpriseAdminUpdateAttributeForEnterpriseUserReqOperationsItem) SetFake() { + var ( + elem jx.Raw + m map[string]jx.Raw = s.init() + ) + for i := 0; i < 0; i++ { + m[fmt.Sprintf("fake%d", i)] = elem + } } // SetFake set fake values. @@ -17814,6 +17842,15 @@ func (s *OptAuditLogEventData) SetFake() { s.SetTo(elem) } +// SetFake set fake values. +func (s *OptAuthenticationTokenPermissions) SetFake() { + var elem AuthenticationTokenPermissions + { + elem.SetFake() + } + s.SetTo(elem) +} + // SetFake set fake values. func (s *OptAuthenticationTokenRepositorySelection) SetFake() { var elem AuthenticationTokenRepositorySelection diff --git a/examples/ex_github/oas_json_gen.go b/examples/ex_github/oas_json_gen.go index c617fc31e..cda17f024 100644 --- a/examples/ex_github/oas_json_gen.go +++ b/examples/ex_github/oas_json_gen.go @@ -514,29 +514,43 @@ func (s *APIOverviewSSHKeyFingerprints) UnmarshalJSON(data []byte) error { } // Encode implements json.Marshaler. -func (s *Accepted) Encode(e *jx.Encoder) { +func (s Accepted) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *Accepted) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s Accepted) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfAccepted = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes Accepted from json. func (s *Accepted) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode Accepted to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode Accepted") } @@ -545,7 +559,7 @@ func (s *Accepted) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *Accepted) MarshalJSON() ([]byte, error) { +func (s Accepted) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -13592,7 +13606,7 @@ func (s *AuthenticationToken) encodeFields(e *jx.Encoder) { json.EncodeDateTime(e, s.ExpiresAt) } { - if s.Permissions != nil { + if s.Permissions.Set { e.FieldStart("permissions") s.Permissions.Encode(e) } @@ -13665,12 +13679,10 @@ func (s *AuthenticationToken) Decode(d *jx.Decoder) error { } case "permissions": if err := func() error { - s.Permissions = nil - var elem AuthenticationTokenPermissions - if err := elem.Decode(d); err != nil { + s.Permissions.Reset() + if err := s.Permissions.Decode(d); err != nil { return err } - s.Permissions = &elem return nil }(); err != nil { return errors.Wrap(err, "decode field \"permissions\"") @@ -13769,29 +13781,43 @@ func (s *AuthenticationToken) UnmarshalJSON(data []byte) error { } // Encode implements json.Marshaler. -func (s *AuthenticationTokenPermissions) Encode(e *jx.Encoder) { +func (s AuthenticationTokenPermissions) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *AuthenticationTokenPermissions) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s AuthenticationTokenPermissions) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfAuthenticationTokenPermissions = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes AuthenticationTokenPermissions from json. func (s *AuthenticationTokenPermissions) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode AuthenticationTokenPermissions to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode AuthenticationTokenPermissions") } @@ -13800,7 +13826,7 @@ func (s *AuthenticationTokenPermissions) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *AuthenticationTokenPermissions) MarshalJSON() ([]byte, error) { +func (s AuthenticationTokenPermissions) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -36731,29 +36757,43 @@ func (s *EnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue) } // Encode implements json.Marshaler. -func (s *EnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue1) Encode(e *jx.Encoder) { +func (s EnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue1) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *EnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue1) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s EnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue1) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfEnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue1 = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes EnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue1 from json. func (s *EnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue1) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode EnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue1 to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode EnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue1") } @@ -36762,7 +36802,7 @@ func (s *EnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue1 } // MarshalJSON implements stdjson.Marshaler. -func (s *EnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue1) MarshalJSON() ([]byte, error) { +func (s EnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue1) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -36910,29 +36950,43 @@ func (s *EnterpriseAdminUpdateAttributeForEnterpriseUserReq) UnmarshalJSON(data } // Encode implements json.Marshaler. -func (s *EnterpriseAdminUpdateAttributeForEnterpriseUserReqOperationsItem) Encode(e *jx.Encoder) { +func (s EnterpriseAdminUpdateAttributeForEnterpriseUserReqOperationsItem) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *EnterpriseAdminUpdateAttributeForEnterpriseUserReqOperationsItem) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s EnterpriseAdminUpdateAttributeForEnterpriseUserReqOperationsItem) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfEnterpriseAdminUpdateAttributeForEnterpriseUserReqOperationsItem = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes EnterpriseAdminUpdateAttributeForEnterpriseUserReqOperationsItem from json. func (s *EnterpriseAdminUpdateAttributeForEnterpriseUserReqOperationsItem) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode EnterpriseAdminUpdateAttributeForEnterpriseUserReqOperationsItem to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode EnterpriseAdminUpdateAttributeForEnterpriseUserReqOperationsItem") } @@ -36941,7 +36995,7 @@ func (s *EnterpriseAdminUpdateAttributeForEnterpriseUserReqOperationsItem) Decod } // MarshalJSON implements stdjson.Marshaler. -func (s *EnterpriseAdminUpdateAttributeForEnterpriseUserReqOperationsItem) MarshalJSON() ([]byte, error) { +func (s EnterpriseAdminUpdateAttributeForEnterpriseUserReqOperationsItem) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -82993,6 +83047,40 @@ func (s *OptAuditLogEventData) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode encodes AuthenticationTokenPermissions as json. +func (o OptAuthenticationTokenPermissions) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes AuthenticationTokenPermissions from json. +func (o *OptAuthenticationTokenPermissions) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptAuthenticationTokenPermissions to nil") + } + o.Set = true + o.Value = make(AuthenticationTokenPermissions) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptAuthenticationTokenPermissions) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptAuthenticationTokenPermissions) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode encodes AuthenticationTokenRepositorySelection as json. func (o OptAuthenticationTokenRepositorySelection) Encode(e *jx.Encoder) { if !o.Set { diff --git a/examples/ex_github/oas_schemas_gen.go b/examples/ex_github/oas_schemas_gen.go index 811c6ce25..9566b40e0 100644 --- a/examples/ex_github/oas_schemas_gen.go +++ b/examples/ex_github/oas_schemas_gen.go @@ -186,7 +186,16 @@ func (s *APIOverviewSSHKeyFingerprints) SetSHA256ED25519(val OptString) { s.SHA256ED25519 = val } -type Accepted struct{} +type Accepted map[string]jx.Raw + +func (s *Accepted) init() Accepted { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} func (*Accepted) appsRedeliverWebhookDeliveryRes() {} func (*Accepted) orgsRedeliverWebhookDeliveryRes() {} @@ -6215,8 +6224,8 @@ type AuthenticationToken struct { // The token used for authentication. Token string `json:"token"` // The time this token expires. - ExpiresAt time.Time `json:"expires_at"` - Permissions *AuthenticationTokenPermissions `json:"permissions"` + ExpiresAt time.Time `json:"expires_at"` + Permissions OptAuthenticationTokenPermissions `json:"permissions"` // The repositories this token has access to. Repositories []Repository `json:"repositories"` SingleFile OptNilString `json:"single_file"` @@ -6235,7 +6244,7 @@ func (s *AuthenticationToken) GetExpiresAt() time.Time { } // GetPermissions returns the value of Permissions. -func (s *AuthenticationToken) GetPermissions() *AuthenticationTokenPermissions { +func (s *AuthenticationToken) GetPermissions() OptAuthenticationTokenPermissions { return s.Permissions } @@ -6265,7 +6274,7 @@ func (s *AuthenticationToken) SetExpiresAt(val time.Time) { } // SetPermissions sets the value of Permissions. -func (s *AuthenticationToken) SetPermissions(val *AuthenticationTokenPermissions) { +func (s *AuthenticationToken) SetPermissions(val OptAuthenticationTokenPermissions) { s.Permissions = val } @@ -6284,7 +6293,16 @@ func (s *AuthenticationToken) SetRepositorySelection(val OptAuthenticationTokenR s.RepositorySelection = val } -type AuthenticationTokenPermissions struct{} +type AuthenticationTokenPermissions map[string]jx.Raw + +func (s *AuthenticationTokenPermissions) init() AuthenticationTokenPermissions { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} // Describe whether all repositories have been selected or there's a selection involved. type AuthenticationTokenRepositorySelection string @@ -16701,7 +16719,16 @@ func NewAnyArrayEnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsIte return s } -type EnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue1 struct{} +type EnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue1 map[string]jx.Raw + +func (s *EnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue1) init() EnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue1 { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} type EnterpriseAdminUpdateAttributeForEnterpriseUserReq struct { // The SCIM schema URIs. @@ -16730,7 +16757,16 @@ func (s *EnterpriseAdminUpdateAttributeForEnterpriseUserReq) SetOperations(val [ s.Operations = val } -type EnterpriseAdminUpdateAttributeForEnterpriseUserReqOperationsItem struct{} +type EnterpriseAdminUpdateAttributeForEnterpriseUserReqOperationsItem map[string]jx.Raw + +func (s *EnterpriseAdminUpdateAttributeForEnterpriseUserReqOperationsItem) init() EnterpriseAdminUpdateAttributeForEnterpriseUserReqOperationsItem { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} type EnterpriseAdminUpdateSelfHostedRunnerGroupForEnterpriseReq struct { // Name of the runner group. @@ -43011,6 +43047,52 @@ func (o OptAuditLogOrder) Or(d AuditLogOrder) AuditLogOrder { return d } +// NewOptAuthenticationTokenPermissions returns new OptAuthenticationTokenPermissions with value set to v. +func NewOptAuthenticationTokenPermissions(v AuthenticationTokenPermissions) OptAuthenticationTokenPermissions { + return OptAuthenticationTokenPermissions{ + Value: v, + Set: true, + } +} + +// OptAuthenticationTokenPermissions is optional AuthenticationTokenPermissions. +type OptAuthenticationTokenPermissions struct { + Value AuthenticationTokenPermissions + Set bool +} + +// IsSet returns true if OptAuthenticationTokenPermissions was set. +func (o OptAuthenticationTokenPermissions) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptAuthenticationTokenPermissions) Reset() { + var v AuthenticationTokenPermissions + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptAuthenticationTokenPermissions) SetTo(v AuthenticationTokenPermissions) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptAuthenticationTokenPermissions) Get() (v AuthenticationTokenPermissions, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptAuthenticationTokenPermissions) Or(d AuthenticationTokenPermissions) AuthenticationTokenPermissions { + if v, ok := o.Get(); ok { + return v + } + return d +} + // NewOptAuthenticationTokenRepositorySelection returns new OptAuthenticationTokenRepositorySelection with value set to v. func NewOptAuthenticationTokenRepositorySelection(v AuthenticationTokenRepositorySelection) OptAuthenticationTokenRepositorySelection { return OptAuthenticationTokenRepositorySelection{ diff --git a/examples/ex_github/oas_test_examples_gen_test.go b/examples/ex_github/oas_test_examples_gen_test.go index 1979df4e6..60602add4 100644 --- a/examples/ex_github/oas_test_examples_gen_test.go +++ b/examples/ex_github/oas_test_examples_gen_test.go @@ -71,6 +71,7 @@ func TestAPIOverviewSSHKeyFingerprints_EncodeDecode(t *testing.T) { } func TestAccepted_EncodeDecode(t *testing.T) { var typ Accepted + typ = make(Accepted) typ.SetFake() e := jx.Encoder{} @@ -79,6 +80,7 @@ func TestAccepted_EncodeDecode(t *testing.T) { require.True(t, std.Valid(data), "Encoded: %s", data) var typ2 Accepted + typ2 = make(Accepted) require.NoError(t, typ2.Decode(jx.DecodeBytes(data))) } func TestActionsApproveWorkflowRunForbidden_EncodeDecode(t *testing.T) { @@ -3377,6 +3379,7 @@ func TestAuthenticationToken_Examples(t *testing.T) { } func TestAuthenticationTokenPermissions_EncodeDecode(t *testing.T) { var typ AuthenticationTokenPermissions + typ = make(AuthenticationTokenPermissions) typ.SetFake() e := jx.Encoder{} @@ -3385,6 +3388,7 @@ func TestAuthenticationTokenPermissions_EncodeDecode(t *testing.T) { require.True(t, std.Valid(data), "Encoded: %s", data) var typ2 AuthenticationTokenPermissions + typ2 = make(AuthenticationTokenPermissions) require.NoError(t, typ2.Decode(jx.DecodeBytes(data))) } @@ -3398,6 +3402,7 @@ func TestAuthenticationTokenPermissions_Examples(t *testing.T) { tc := tc t.Run(fmt.Sprintf("Test%d", i+1), func(t *testing.T) { var typ AuthenticationTokenPermissions + typ = make(AuthenticationTokenPermissions) if err := typ.Decode(jx.DecodeStr(tc.Input)); err != nil { if validateErr, ok := errors.Into[*validate.Error](err); ok { @@ -3412,6 +3417,7 @@ func TestAuthenticationTokenPermissions_Examples(t *testing.T) { require.True(t, std.Valid(e.Bytes()), "Encoded: %s", e.Bytes()) var typ2 AuthenticationTokenPermissions + typ2 = make(AuthenticationTokenPermissions) require.NoError(t, typ2.Decode(jx.DecodeBytes(e.Bytes()))) }) } @@ -7267,6 +7273,7 @@ func TestEnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue_ } func TestEnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue1_EncodeDecode(t *testing.T) { var typ EnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue1 + typ = make(EnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue1) typ.SetFake() e := jx.Encoder{} @@ -7275,6 +7282,7 @@ func TestEnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue1 require.True(t, std.Valid(data), "Encoded: %s", data) var typ2 EnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue1 + typ2 = make(EnterpriseAdminUpdateAttributeForEnterpriseGroupReqOperationsItemValue1) require.NoError(t, typ2.Decode(jx.DecodeBytes(data))) } func TestEnterpriseAdminUpdateAttributeForEnterpriseUserReq_EncodeDecode(t *testing.T) { @@ -7320,6 +7328,7 @@ func TestEnterpriseAdminUpdateAttributeForEnterpriseUserReq_Examples(t *testing. } func TestEnterpriseAdminUpdateAttributeForEnterpriseUserReqOperationsItem_EncodeDecode(t *testing.T) { var typ EnterpriseAdminUpdateAttributeForEnterpriseUserReqOperationsItem + typ = make(EnterpriseAdminUpdateAttributeForEnterpriseUserReqOperationsItem) typ.SetFake() e := jx.Encoder{} @@ -7328,6 +7337,7 @@ func TestEnterpriseAdminUpdateAttributeForEnterpriseUserReqOperationsItem_Encode require.True(t, std.Valid(data), "Encoded: %s", data) var typ2 EnterpriseAdminUpdateAttributeForEnterpriseUserReqOperationsItem + typ2 = make(EnterpriseAdminUpdateAttributeForEnterpriseUserReqOperationsItem) require.NoError(t, typ2.Decode(jx.DecodeBytes(data))) } func TestEnterpriseAdminUpdateSelfHostedRunnerGroupForEnterpriseReq_EncodeDecode(t *testing.T) { diff --git a/examples/ex_gotd/oas_faker_gen.go b/examples/ex_gotd/oas_faker_gen.go index ab888a523..0fe45265d 100644 --- a/examples/ex_gotd/oas_faker_gen.go +++ b/examples/ex_gotd/oas_faker_gen.go @@ -2,6 +2,12 @@ package api +import ( + "fmt" + + "github.com/go-faster/jx" +) + // SetFake set fake values. func (s *AddStickerToSet) SetFake() { { @@ -439,6 +445,13 @@ func (s *BotCommandScopeDefault) SetFake() { // SetFake set fake values. func (s *CallbackGame) SetFake() { + var ( + elem jx.Raw + m map[string]jx.Raw = s.init() + ) + for i := 0; i < 0; i++ { + m[fmt.Sprintf("fake%d", i)] = elem + } } // SetFake set fake values. @@ -2109,8 +2122,8 @@ func (s *InlineKeyboardButton) SetFake() { } } { - { // Keep pointer nil to prevent infinite recursion. - s.CallbackGame = nil + { + s.CallbackGame.SetFake() } } { @@ -4513,8 +4526,8 @@ func (s *Message) SetFake() { } } { - { // Keep pointer nil to prevent infinite recursion. - s.VideoChatStarted = nil + { + s.VideoChatStarted.SetFake() } } { @@ -4647,6 +4660,15 @@ func (s *OptBotCommandScope) SetFake() { s.SetTo(elem) } +// SetFake set fake values. +func (s *OptCallbackGame) SetFake() { + var elem CallbackGame + { + elem.SetFake() + } + s.SetTo(elem) +} + // SetFake set fake values. func (s *OptCallbackQuery) SetFake() { var elem CallbackQuery @@ -5232,6 +5254,15 @@ func (s *OptVideoChatScheduled) SetFake() { s.SetTo(elem) } +// SetFake set fake values. +func (s *OptVideoChatStarted) SetFake() { + var elem VideoChatStarted + { + elem.SetFake() + } + s.SetTo(elem) +} + // SetFake set fake values. func (s *OptVideoNote) SetFake() { var elem VideoNote @@ -8472,6 +8503,13 @@ func (s *VideoChatScheduled) SetFake() { // SetFake set fake values. func (s *VideoChatStarted) SetFake() { + var ( + elem jx.Raw + m map[string]jx.Raw = s.init() + ) + for i := 0; i < 0; i++ { + m[fmt.Sprintf("fake%d", i)] = elem + } } // SetFake set fake values. diff --git a/examples/ex_gotd/oas_json_gen.go b/examples/ex_gotd/oas_json_gen.go index 93ffeb5bf..50ba03cf2 100644 --- a/examples/ex_gotd/oas_json_gen.go +++ b/examples/ex_gotd/oas_json_gen.go @@ -2832,29 +2832,43 @@ func (s *BotCommandScopeDefault) UnmarshalJSON(data []byte) error { } // Encode implements json.Marshaler. -func (s *CallbackGame) Encode(e *jx.Encoder) { +func (s CallbackGame) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *CallbackGame) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s CallbackGame) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfCallbackGame = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes CallbackGame from json. func (s *CallbackGame) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode CallbackGame to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() - } + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) + } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode CallbackGame") } @@ -2863,7 +2877,7 @@ func (s *CallbackGame) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *CallbackGame) MarshalJSON() ([]byte, error) { +func (s CallbackGame) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -12014,7 +12028,7 @@ func (s *InlineKeyboardButton) encodeFields(e *jx.Encoder) { } } { - if s.CallbackGame != nil { + if s.CallbackGame.Set { e.FieldStart("callback_game") s.CallbackGame.Encode(e) } @@ -12122,12 +12136,10 @@ func (s *InlineKeyboardButton) Decode(d *jx.Decoder) error { } case "callback_game": if err := func() error { - s.CallbackGame = nil - var elem CallbackGame - if err := elem.Decode(d); err != nil { + s.CallbackGame.Reset() + if err := s.CallbackGame.Decode(d); err != nil { return err } - s.CallbackGame = &elem return nil }(); err != nil { return errors.Wrap(err, "decode field \"callback_game\"") @@ -23937,7 +23949,7 @@ func (s *Message) encodeFields(e *jx.Encoder) { } } { - if s.VideoChatStarted != nil { + if s.VideoChatStarted.Set { e.FieldStart("video_chat_started") s.VideoChatStarted.Encode(e) } @@ -24645,12 +24657,10 @@ func (s *Message) Decode(d *jx.Decoder) error { } case "video_chat_started": if err := func() error { - s.VideoChatStarted = nil - var elem VideoChatStarted - if err := elem.Decode(d); err != nil { + s.VideoChatStarted.Reset() + if err := s.VideoChatStarted.Decode(d); err != nil { return err } - s.VideoChatStarted = &elem return nil }(); err != nil { return errors.Wrap(err, "decode field \"video_chat_started\"") @@ -25362,6 +25372,40 @@ func (s *OptBotCommandScope) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode encodes CallbackGame as json. +func (o OptCallbackGame) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes CallbackGame from json. +func (o *OptCallbackGame) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptCallbackGame to nil") + } + o.Set = true + o.Value = make(CallbackGame) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptCallbackGame) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptCallbackGame) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode encodes CallbackQuery as json. func (o OptCallbackQuery) Encode(e *jx.Encoder) { if !o.Set { @@ -27515,6 +27559,40 @@ func (s *OptVideoChatScheduled) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode encodes VideoChatStarted as json. +func (o OptVideoChatStarted) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes VideoChatStarted from json. +func (o *OptVideoChatStarted) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptVideoChatStarted to nil") + } + o.Set = true + o.Value = make(VideoChatStarted) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptVideoChatStarted) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptVideoChatStarted) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode encodes VideoNote as json. func (o OptVideoNote) Encode(e *jx.Encoder) { if !o.Set { @@ -45211,29 +45289,43 @@ func (s *VideoChatScheduled) UnmarshalJSON(data []byte) error { } // Encode implements json.Marshaler. -func (s *VideoChatStarted) Encode(e *jx.Encoder) { +func (s VideoChatStarted) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *VideoChatStarted) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s VideoChatStarted) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfVideoChatStarted = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes VideoChatStarted from json. func (s *VideoChatStarted) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode VideoChatStarted to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() - } + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) + } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode VideoChatStarted") } @@ -45242,7 +45334,7 @@ func (s *VideoChatStarted) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *VideoChatStarted) MarshalJSON() ([]byte, error) { +func (s VideoChatStarted) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil diff --git a/examples/ex_gotd/oas_schemas_gen.go b/examples/ex_gotd/oas_schemas_gen.go index 1822188f0..7ac19668c 100644 --- a/examples/ex_gotd/oas_schemas_gen.go +++ b/examples/ex_gotd/oas_schemas_gen.go @@ -6,6 +6,7 @@ import ( "fmt" "github.com/go-faster/errors" + "github.com/go-faster/jx" ) func (s *ErrorStatusCode) Error() string { @@ -1151,7 +1152,16 @@ func (s *BotCommandScopeDefault) SetType(val string) { // A placeholder, currently holds no information. Use BotFather to set up your game. // Ref: #/components/schemas/CallbackGame -type CallbackGame struct{} +type CallbackGame map[string]jx.Raw + +func (s *CallbackGame) init() CallbackGame { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} // This object represents an incoming callback query from a callback button in an inline keyboard. If // the button that originated the query was attached to a message sent by the bot, the field message @@ -5099,8 +5109,8 @@ type InlineKeyboardButton struct { // current chat's input field. Can be empty, in which case only the bot's username will be inserted. // This offers a quick way for the user to open your bot in inline mode in the same chat – good for // selecting something from multiple options. - SwitchInlineQueryCurrentChat OptString `json:"switch_inline_query_current_chat"` - CallbackGame *CallbackGame `json:"callback_game"` + SwitchInlineQueryCurrentChat OptString `json:"switch_inline_query_current_chat"` + CallbackGame OptCallbackGame `json:"callback_game"` // Specify True, to send a Pay button.NOTE: This type of button must always be the first button in // the first row and can only be used in invoice messages. Pay OptBool `json:"pay"` @@ -5142,7 +5152,7 @@ func (s *InlineKeyboardButton) GetSwitchInlineQueryCurrentChat() OptString { } // GetCallbackGame returns the value of CallbackGame. -func (s *InlineKeyboardButton) GetCallbackGame() *CallbackGame { +func (s *InlineKeyboardButton) GetCallbackGame() OptCallbackGame { return s.CallbackGame } @@ -5187,7 +5197,7 @@ func (s *InlineKeyboardButton) SetSwitchInlineQueryCurrentChat(val OptString) { } // SetCallbackGame sets the value of CallbackGame. -func (s *InlineKeyboardButton) SetCallbackGame(val *CallbackGame) { +func (s *InlineKeyboardButton) SetCallbackGame(val OptCallbackGame) { s.CallbackGame = val } @@ -10741,7 +10751,7 @@ type Message struct { PassportData OptPassportData `json:"passport_data"` ProximityAlertTriggered OptProximityAlertTriggered `json:"proximity_alert_triggered"` VideoChatScheduled OptVideoChatScheduled `json:"video_chat_scheduled"` - VideoChatStarted *VideoChatStarted `json:"video_chat_started"` + VideoChatStarted OptVideoChatStarted `json:"video_chat_started"` VideoChatEnded OptVideoChatEnded `json:"video_chat_ended"` VideoChatParticipantsInvited OptVideoChatParticipantsInvited `json:"video_chat_participants_invited"` WebAppData OptWebAppData `json:"web_app_data"` @@ -11022,7 +11032,7 @@ func (s *Message) GetVideoChatScheduled() OptVideoChatScheduled { } // GetVideoChatStarted returns the value of VideoChatStarted. -func (s *Message) GetVideoChatStarted() *VideoChatStarted { +func (s *Message) GetVideoChatStarted() OptVideoChatStarted { return s.VideoChatStarted } @@ -11332,7 +11342,7 @@ func (s *Message) SetVideoChatScheduled(val OptVideoChatScheduled) { } // SetVideoChatStarted sets the value of VideoChatStarted. -func (s *Message) SetVideoChatStarted(val *VideoChatStarted) { +func (s *Message) SetVideoChatStarted(val OptVideoChatStarted) { s.VideoChatStarted = val } @@ -11816,6 +11826,52 @@ func (o OptBotCommandScope) Or(d BotCommandScope) BotCommandScope { return d } +// NewOptCallbackGame returns new OptCallbackGame with value set to v. +func NewOptCallbackGame(v CallbackGame) OptCallbackGame { + return OptCallbackGame{ + Value: v, + Set: true, + } +} + +// OptCallbackGame is optional CallbackGame. +type OptCallbackGame struct { + Value CallbackGame + Set bool +} + +// IsSet returns true if OptCallbackGame was set. +func (o OptCallbackGame) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptCallbackGame) Reset() { + var v CallbackGame + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptCallbackGame) SetTo(v CallbackGame) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptCallbackGame) Get() (v CallbackGame, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptCallbackGame) Or(d CallbackGame) CallbackGame { + if v, ok := o.Get(); ok { + return v + } + return d +} + // NewOptCallbackQuery returns new OptCallbackQuery with value set to v. func NewOptCallbackQuery(v CallbackQuery) OptCallbackQuery { return OptCallbackQuery{ @@ -14806,6 +14862,52 @@ func (o OptVideoChatScheduled) Or(d VideoChatScheduled) VideoChatScheduled { return d } +// NewOptVideoChatStarted returns new OptVideoChatStarted with value set to v. +func NewOptVideoChatStarted(v VideoChatStarted) OptVideoChatStarted { + return OptVideoChatStarted{ + Value: v, + Set: true, + } +} + +// OptVideoChatStarted is optional VideoChatStarted. +type OptVideoChatStarted struct { + Value VideoChatStarted + Set bool +} + +// IsSet returns true if OptVideoChatStarted was set. +func (o OptVideoChatStarted) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptVideoChatStarted) Reset() { + var v VideoChatStarted + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptVideoChatStarted) SetTo(v VideoChatStarted) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptVideoChatStarted) Get() (v VideoChatStarted, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptVideoChatStarted) Or(d VideoChatStarted) VideoChatStarted { + if v, ok := o.Get(); ok { + return v + } + return d +} + // NewOptVideoNote returns new OptVideoNote with value set to v. func NewOptVideoNote(v VideoNote) OptVideoNote { return OptVideoNote{ @@ -22691,7 +22793,16 @@ func (s *VideoChatScheduled) SetStartDate(val int) { // This object represents a service message about a video chat started in the chat. Currently holds // no information. // Ref: #/components/schemas/VideoChatStarted -type VideoChatStarted struct{} +type VideoChatStarted map[string]jx.Raw + +func (s *VideoChatStarted) init() VideoChatStarted { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} // This object represents a video message (available in Telegram apps as of v.4.0). // Ref: #/components/schemas/VideoNote diff --git a/examples/ex_gotd/oas_test_examples_gen_test.go b/examples/ex_gotd/oas_test_examples_gen_test.go index a23527f77..12733518f 100644 --- a/examples/ex_gotd/oas_test_examples_gen_test.go +++ b/examples/ex_gotd/oas_test_examples_gen_test.go @@ -253,6 +253,7 @@ func TestBotCommandScopeDefault_EncodeDecode(t *testing.T) { } func TestCallbackGame_EncodeDecode(t *testing.T) { var typ CallbackGame + typ = make(CallbackGame) typ.SetFake() e := jx.Encoder{} @@ -261,6 +262,7 @@ func TestCallbackGame_EncodeDecode(t *testing.T) { require.True(t, std.Valid(data), "Encoded: %s", data) var typ2 CallbackGame + typ2 = make(CallbackGame) require.NoError(t, typ2.Decode(jx.DecodeBytes(data))) } func TestCallbackQuery_EncodeDecode(t *testing.T) { @@ -2977,6 +2979,7 @@ func TestVideoChatScheduled_EncodeDecode(t *testing.T) { } func TestVideoChatStarted_EncodeDecode(t *testing.T) { var typ VideoChatStarted + typ = make(VideoChatStarted) typ.SetFake() e := jx.Encoder{} @@ -2985,6 +2988,7 @@ func TestVideoChatStarted_EncodeDecode(t *testing.T) { require.True(t, std.Valid(data), "Encoded: %s", data) var typ2 VideoChatStarted + typ2 = make(VideoChatStarted) require.NoError(t, typ2.Decode(jx.DecodeBytes(data))) } func TestVideoNote_EncodeDecode(t *testing.T) { diff --git a/examples/ex_k8s/oas_faker_gen.go b/examples/ex_k8s/oas_faker_gen.go index 93a591c40..d5037031e 100644 --- a/examples/ex_k8s/oas_faker_gen.go +++ b/examples/ex_k8s/oas_faker_gen.go @@ -5,6 +5,8 @@ package api import ( "fmt" "time" + + "github.com/go-faster/jx" ) // SetFake set fake values. @@ -503,6 +505,13 @@ func (s *IoK8sAPIApiserverinternalV1alpha1StorageVersionList) SetFake() { // SetFake set fake values. func (s *IoK8sAPIApiserverinternalV1alpha1StorageVersionSpec) SetFake() { + var ( + elem jx.Raw + m map[string]jx.Raw = s.init() + ) + for i := 0; i < 0; i++ { + m[fmt.Sprintf("fake%d", i)] = elem + } } // SetFake set fake values. @@ -546,8 +555,8 @@ func (s *IoK8sAPIAppsV1ControllerRevision) SetFake() { } } { - { // Keep pointer nil to prevent infinite recursion. - s.Data = nil + { + s.Data.SetFake() } } { @@ -14318,6 +14327,13 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresou // SetFake set fake values. func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) SetFake() { + var ( + elem jx.Raw + m map[string]jx.Raw = s.init() + ) + for i := 0; i < 0; i++ { + m[fmt.Sprintf("fake%d", i)] = elem + } } // SetFake set fake values. @@ -14328,8 +14344,8 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresou } } { - { // Keep pointer nil to prevent infinite recursion. - s.Status = nil + { + s.Status.SetFake() } } } @@ -14359,6 +14375,13 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1ExternalDocumentation) // SetFake set fake values. func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) SetFake() { + var ( + elem jx.Raw + m map[string]jx.Raw = s.init() + ) + for i := 0; i < 0; i++ { + m[fmt.Sprintf("fake%d", i)] = elem + } } // SetFake set fake values. @@ -14374,13 +14397,13 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) SetFa } } { - { // Keep pointer nil to prevent infinite recursion. - s.AdditionalItems = nil + { + s.AdditionalItems.SetFake() } } { - { // Keep pointer nil to prevent infinite recursion. - s.AdditionalProperties = nil + { + s.AdditionalProperties.SetFake() } } { @@ -14408,8 +14431,8 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) SetFa } } { - { // Keep pointer nil to prevent infinite recursion. - s.Default = nil + { + s.Default.SetFake() } } { @@ -14440,8 +14463,8 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) SetFa } } { - { // Keep pointer nil to prevent infinite recursion. - s.Example = nil + { + s.Example.SetFake() } } { @@ -14470,8 +14493,8 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) SetFa } } { - { // Keep pointer nil to prevent infinite recursion. - s.Items = nil + { + s.Items.SetFake() } } { @@ -14646,14 +14669,35 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsDepende // SetFake set fake values. func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) SetFake() { + var ( + elem jx.Raw + m map[string]jx.Raw = s.init() + ) + for i := 0; i < 0; i++ { + m[fmt.Sprintf("fake%d", i)] = elem + } } // SetFake set fake values. func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) SetFake() { + var ( + elem jx.Raw + m map[string]jx.Raw = s.init() + ) + for i := 0; i < 0; i++ { + m[fmt.Sprintf("fake%d", i)] = elem + } } // SetFake set fake values. func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrStringArray) SetFake() { + var ( + elem jx.Raw + m map[string]jx.Raw = s.init() + ) + for i := 0; i < 0; i++ { + m[fmt.Sprintf("fake%d", i)] = elem + } } // SetFake set fake values. @@ -15005,6 +15049,13 @@ func (s *IoK8sApimachineryPkgApisMetaV1Condition) SetFake() { // SetFake set fake values. func (s *IoK8sApimachineryPkgApisMetaV1FieldsV1) SetFake() { + var ( + elem jx.Raw + m map[string]jx.Raw = s.init() + ) + for i := 0; i < 0; i++ { + m[fmt.Sprintf("fake%d", i)] = elem + } } // SetFake set fake values. @@ -15116,8 +15167,8 @@ func (s *IoK8sApimachineryPkgApisMetaV1ManagedFieldsEntry) SetFake() { } } { - { // Keep pointer nil to prevent infinite recursion. - s.FieldsV1 = nil + { + s.FieldsV1.SetFake() } } { @@ -15351,6 +15402,13 @@ func (s *IoK8sApimachineryPkgApisMetaV1WatchEvent) SetFake() { // SetFake set fake values. func (s *IoK8sApimachineryPkgRuntimeRawExtension) SetFake() { + var ( + elem jx.Raw + m map[string]jx.Raw = s.init() + ) + for i := 0; i < 0; i++ { + m[fmt.Sprintf("fake%d", i)] = elem + } } // SetFake set fake values. @@ -17968,6 +18026,15 @@ func (s *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubre s.SetTo(elem) } +// SetFake set fake values. +func (s *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) SetFake() { + var elem IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus + { + elem.SetFake() + } + s.SetTo(elem) +} + // SetFake set fake values. func (s *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresources) SetFake() { var elem IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresources @@ -17995,6 +18062,15 @@ func (s *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1ExternalDocumentati s.SetTo(elem) } +// SetFake set fake values. +func (s *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) SetFake() { + var elem IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON + { + elem.SetFake() + } + s.SetTo(elem) +} + // SetFake set fake values. func (s *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) SetFake() { var elem IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps @@ -18022,6 +18098,24 @@ func (s *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsDepe s.SetTo(elem) } +// SetFake set fake values. +func (s *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) SetFake() { + var elem IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray + { + elem.SetFake() + } + s.SetTo(elem) +} + +// SetFake set fake values. +func (s *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) SetFake() { + var elem IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool + { + elem.SetFake() + } + s.SetTo(elem) +} + // SetFake set fake values. func (s *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsPatternProperties) SetFake() { var elem IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsPatternProperties @@ -18076,6 +18170,15 @@ func (s *OptIoK8sApimachineryPkgAPIResourceQuantity) SetFake() { s.SetTo(elem) } +// SetFake set fake values. +func (s *OptIoK8sApimachineryPkgApisMetaV1FieldsV1) SetFake() { + var elem IoK8sApimachineryPkgApisMetaV1FieldsV1 + { + elem.SetFake() + } + s.SetTo(elem) +} + // SetFake set fake values. func (s *OptIoK8sApimachineryPkgApisMetaV1GroupVersionForDiscovery) SetFake() { var elem IoK8sApimachineryPkgApisMetaV1GroupVersionForDiscovery @@ -18157,6 +18260,15 @@ func (s *OptIoK8sApimachineryPkgApisMetaV1Time) SetFake() { s.SetTo(elem) } +// SetFake set fake values. +func (s *OptIoK8sApimachineryPkgRuntimeRawExtension) SetFake() { + var elem IoK8sApimachineryPkgRuntimeRawExtension + { + elem.SetFake() + } + s.SetTo(elem) +} + // SetFake set fake values. func (s *OptIoK8sApimachineryPkgUtilIntstrIntOrString) SetFake() { var elem IoK8sApimachineryPkgUtilIntstrIntOrString diff --git a/examples/ex_k8s/oas_json_gen.go b/examples/ex_k8s/oas_json_gen.go index b0a9084d1..50b00eb29 100644 --- a/examples/ex_k8s/oas_json_gen.go +++ b/examples/ex_k8s/oas_json_gen.go @@ -2212,29 +2212,43 @@ func (s *IoK8sAPIApiserverinternalV1alpha1StorageVersionList) UnmarshalJSON(data } // Encode implements json.Marshaler. -func (s *IoK8sAPIApiserverinternalV1alpha1StorageVersionSpec) Encode(e *jx.Encoder) { +func (s IoK8sAPIApiserverinternalV1alpha1StorageVersionSpec) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *IoK8sAPIApiserverinternalV1alpha1StorageVersionSpec) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s IoK8sAPIApiserverinternalV1alpha1StorageVersionSpec) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfIoK8sAPIApiserverinternalV1alpha1StorageVersionSpec = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes IoK8sAPIApiserverinternalV1alpha1StorageVersionSpec from json. func (s *IoK8sAPIApiserverinternalV1alpha1StorageVersionSpec) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode IoK8sAPIApiserverinternalV1alpha1StorageVersionSpec to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode IoK8sAPIApiserverinternalV1alpha1StorageVersionSpec") } @@ -2243,7 +2257,7 @@ func (s *IoK8sAPIApiserverinternalV1alpha1StorageVersionSpec) Decode(d *jx.Decod } // MarshalJSON implements stdjson.Marshaler. -func (s *IoK8sAPIApiserverinternalV1alpha1StorageVersionSpec) MarshalJSON() ([]byte, error) { +func (s IoK8sAPIApiserverinternalV1alpha1StorageVersionSpec) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -2390,7 +2404,7 @@ func (s *IoK8sAPIAppsV1ControllerRevision) encodeFields(e *jx.Encoder) { } } { - if s.Data != nil { + if s.Data.Set { e.FieldStart("data") s.Data.Encode(e) } @@ -2442,12 +2456,10 @@ func (s *IoK8sAPIAppsV1ControllerRevision) Decode(d *jx.Decoder) error { } case "data": if err := func() error { - s.Data = nil - var elem IoK8sApimachineryPkgRuntimeRawExtension - if err := elem.Decode(d); err != nil { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { return err } - s.Data = &elem return nil }(); err != nil { return errors.Wrap(err, "decode field \"data\"") @@ -70460,29 +70472,43 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresou } // Encode implements json.Marshaler. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) Encode(e *jx.Encoder) { +func (s IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus from json. func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus") } @@ -70491,7 +70517,7 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresou } // MarshalJSON implements stdjson.Marshaler. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) MarshalJSON() ([]byte, error) { +func (s IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -70519,7 +70545,7 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresou } } { - if s.Status != nil { + if s.Status.Set { e.FieldStart("status") s.Status.Encode(e) } @@ -70551,12 +70577,10 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresou } case "status": if err := func() error { - s.Status = nil - var elem IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus - if err := elem.Decode(d); err != nil { + s.Status.Reset() + if err := s.Status.Decode(d); err != nil { return err } - s.Status = &elem return nil }(); err != nil { return errors.Wrap(err, "decode field \"status\"") @@ -70729,29 +70753,43 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1ExternalDocumentation) } // Encode implements json.Marshaler. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) Encode(e *jx.Encoder) { +func (s IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON from json. func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON") } @@ -70760,7 +70798,7 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) Decode(d *jx.Dec } // MarshalJSON implements stdjson.Marshaler. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) MarshalJSON() ([]byte, error) { +func (s IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -70794,13 +70832,13 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) encod } } { - if s.AdditionalItems != nil { + if s.AdditionalItems.Set { e.FieldStart("additionalItems") s.AdditionalItems.Encode(e) } } { - if s.AdditionalProperties != nil { + if s.AdditionalProperties.Set { e.FieldStart("additionalProperties") s.AdditionalProperties.Encode(e) } @@ -70826,7 +70864,7 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) encod } } { - if s.Default != nil { + if s.Default.Set { e.FieldStart("default") s.Default.Encode(e) } @@ -70860,7 +70898,7 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) encod } } { - if s.Example != nil { + if s.Example.Set { e.FieldStart("example") s.Example.Encode(e) } @@ -70896,7 +70934,7 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) encod } } { - if s.Items != nil { + if s.Items.Set { e.FieldStart("items") s.Items.Encode(e) } @@ -71141,24 +71179,20 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) Decod } case "additionalItems": if err := func() error { - s.AdditionalItems = nil - var elem IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool - if err := elem.Decode(d); err != nil { + s.AdditionalItems.Reset() + if err := s.AdditionalItems.Decode(d); err != nil { return err } - s.AdditionalItems = &elem return nil }(); err != nil { return errors.Wrap(err, "decode field \"additionalItems\"") } case "additionalProperties": if err := func() error { - s.AdditionalProperties = nil - var elem IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool - if err := elem.Decode(d); err != nil { + s.AdditionalProperties.Reset() + if err := s.AdditionalProperties.Decode(d); err != nil { return err } - s.AdditionalProperties = &elem return nil }(); err != nil { return errors.Wrap(err, "decode field \"additionalProperties\"") @@ -71199,12 +71233,10 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) Decod } case "default": if err := func() error { - s.Default = nil - var elem IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON - if err := elem.Decode(d); err != nil { + s.Default.Reset() + if err := s.Default.Decode(d); err != nil { return err } - s.Default = &elem return nil }(); err != nil { return errors.Wrap(err, "decode field \"default\"") @@ -71258,12 +71290,10 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) Decod } case "example": if err := func() error { - s.Example = nil - var elem IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON - if err := elem.Decode(d); err != nil { + s.Example.Reset() + if err := s.Example.Decode(d); err != nil { return err } - s.Example = &elem return nil }(); err != nil { return errors.Wrap(err, "decode field \"example\"") @@ -71320,12 +71350,10 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) Decod } case "items": if err := func() error { - s.Items = nil - var elem IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray - if err := elem.Decode(d); err != nil { + s.Items.Reset() + if err := s.Items.Decode(d); err != nil { return err } - s.Items = &elem return nil }(); err != nil { return errors.Wrap(err, "decode field \"items\"") @@ -71740,29 +71768,43 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsDepende } // Encode implements json.Marshaler. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) Encode(e *jx.Encoder) { +func (s IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray from json. func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray") } @@ -71771,7 +71813,7 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray } // MarshalJSON implements stdjson.Marshaler. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) MarshalJSON() ([]byte, error) { +func (s IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -71784,29 +71826,43 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray } // Encode implements json.Marshaler. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) Encode(e *jx.Encoder) { +func (s IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool from json. func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool") } @@ -71815,7 +71871,7 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) } // MarshalJSON implements stdjson.Marshaler. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) MarshalJSON() ([]byte, error) { +func (s IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -71828,29 +71884,43 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) } // Encode implements json.Marshaler. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrStringArray) Encode(e *jx.Encoder) { +func (s IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrStringArray) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrStringArray) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrStringArray) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrStringArray = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrStringArray from json. func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrStringArray) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrStringArray to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrStringArray") } @@ -71859,7 +71929,7 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrStrin } // MarshalJSON implements stdjson.Marshaler. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrStringArray) MarshalJSON() ([]byte, error) { +func (s IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrStringArray) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -73523,29 +73593,43 @@ func (s *IoK8sApimachineryPkgApisMetaV1Condition) UnmarshalJSON(data []byte) err } // Encode implements json.Marshaler. -func (s *IoK8sApimachineryPkgApisMetaV1FieldsV1) Encode(e *jx.Encoder) { +func (s IoK8sApimachineryPkgApisMetaV1FieldsV1) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *IoK8sApimachineryPkgApisMetaV1FieldsV1) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s IoK8sApimachineryPkgApisMetaV1FieldsV1) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfIoK8sApimachineryPkgApisMetaV1FieldsV1 = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes IoK8sApimachineryPkgApisMetaV1FieldsV1 from json. func (s *IoK8sApimachineryPkgApisMetaV1FieldsV1) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode IoK8sApimachineryPkgApisMetaV1FieldsV1 to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode IoK8sApimachineryPkgApisMetaV1FieldsV1") } @@ -73554,7 +73638,7 @@ func (s *IoK8sApimachineryPkgApisMetaV1FieldsV1) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *IoK8sApimachineryPkgApisMetaV1FieldsV1) MarshalJSON() ([]byte, error) { +func (s IoK8sApimachineryPkgApisMetaV1FieldsV1) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -74105,7 +74189,7 @@ func (s *IoK8sApimachineryPkgApisMetaV1ManagedFieldsEntry) encodeFields(e *jx.En } } { - if s.FieldsV1 != nil { + if s.FieldsV1.Set { e.FieldStart("fieldsV1") s.FieldsV1.Encode(e) } @@ -74176,12 +74260,10 @@ func (s *IoK8sApimachineryPkgApisMetaV1ManagedFieldsEntry) Decode(d *jx.Decoder) } case "fieldsV1": if err := func() error { - s.FieldsV1 = nil - var elem IoK8sApimachineryPkgApisMetaV1FieldsV1 - if err := elem.Decode(d); err != nil { + s.FieldsV1.Reset() + if err := s.FieldsV1.Decode(d); err != nil { return err } - s.FieldsV1 = &elem return nil }(); err != nil { return errors.Wrap(err, "decode field \"fieldsV1\"") @@ -75201,29 +75283,43 @@ func (s *IoK8sApimachineryPkgApisMetaV1WatchEvent) UnmarshalJSON(data []byte) er } // Encode implements json.Marshaler. -func (s *IoK8sApimachineryPkgRuntimeRawExtension) Encode(e *jx.Encoder) { +func (s IoK8sApimachineryPkgRuntimeRawExtension) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *IoK8sApimachineryPkgRuntimeRawExtension) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s IoK8sApimachineryPkgRuntimeRawExtension) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfIoK8sApimachineryPkgRuntimeRawExtension = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes IoK8sApimachineryPkgRuntimeRawExtension from json. func (s *IoK8sApimachineryPkgRuntimeRawExtension) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode IoK8sApimachineryPkgRuntimeRawExtension to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode IoK8sApimachineryPkgRuntimeRawExtension") } @@ -75232,7 +75328,7 @@ func (s *IoK8sApimachineryPkgRuntimeRawExtension) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *IoK8sApimachineryPkgRuntimeRawExtension) MarshalJSON() ([]byte, error) { +func (s IoK8sApimachineryPkgRuntimeRawExtension) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -85162,6 +85258,40 @@ func (s *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubre return s.Decode(d) } +// Encode encodes IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus as json. +func (o OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus from json. +func (o *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus to nil") + } + o.Set = true + o.Value = make(IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode encodes IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresources as json. func (o OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresources) Encode(e *jx.Encoder) { if !o.Set { @@ -85261,6 +85391,40 @@ func (s *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1ExternalDocumentati return s.Decode(d) } +// Encode encodes IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON as json. +func (o OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON from json. +func (o *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON to nil") + } + o.Set = true + o.Value = make(IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode encodes IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps as json. func (o OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) Encode(e *jx.Encoder) { if !o.Set { @@ -85362,6 +85526,74 @@ func (s *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsDepe return s.Decode(d) } +// Encode encodes IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray as json. +func (o OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray from json. +func (o *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray to nil") + } + o.Set = true + o.Value = make(IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode encodes IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool as json. +func (o OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool from json. +func (o *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool to nil") + } + o.Set = true + o.Value = make(IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode encodes IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsPatternProperties as json. func (o OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsPatternProperties) Encode(e *jx.Encoder) { if !o.Set { @@ -85562,6 +85794,40 @@ func (s *OptIoK8sApimachineryPkgAPIResourceQuantity) UnmarshalJSON(data []byte) return s.Decode(d) } +// Encode encodes IoK8sApimachineryPkgApisMetaV1FieldsV1 as json. +func (o OptIoK8sApimachineryPkgApisMetaV1FieldsV1) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes IoK8sApimachineryPkgApisMetaV1FieldsV1 from json. +func (o *OptIoK8sApimachineryPkgApisMetaV1FieldsV1) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptIoK8sApimachineryPkgApisMetaV1FieldsV1 to nil") + } + o.Set = true + o.Value = make(IoK8sApimachineryPkgApisMetaV1FieldsV1) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptIoK8sApimachineryPkgApisMetaV1FieldsV1) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptIoK8sApimachineryPkgApisMetaV1FieldsV1) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode encodes IoK8sApimachineryPkgApisMetaV1GroupVersionForDiscovery as json. func (o OptIoK8sApimachineryPkgApisMetaV1GroupVersionForDiscovery) Encode(e *jx.Encoder) { if !o.Set { @@ -85862,6 +86128,40 @@ func (s *OptIoK8sApimachineryPkgApisMetaV1Time) UnmarshalJSON(data []byte) error return s.Decode(d) } +// Encode encodes IoK8sApimachineryPkgRuntimeRawExtension as json. +func (o OptIoK8sApimachineryPkgRuntimeRawExtension) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes IoK8sApimachineryPkgRuntimeRawExtension from json. +func (o *OptIoK8sApimachineryPkgRuntimeRawExtension) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptIoK8sApimachineryPkgRuntimeRawExtension to nil") + } + o.Set = true + o.Value = make(IoK8sApimachineryPkgRuntimeRawExtension) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptIoK8sApimachineryPkgRuntimeRawExtension) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptIoK8sApimachineryPkgRuntimeRawExtension) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode encodes IoK8sApimachineryPkgUtilIntstrIntOrString as json. func (o OptIoK8sApimachineryPkgUtilIntstrIntOrString) Encode(e *jx.Encoder) { if !o.Set { diff --git a/examples/ex_k8s/oas_schemas_gen.go b/examples/ex_k8s/oas_schemas_gen.go index 4e01b8ec8..2f3b3e8ed 100644 --- a/examples/ex_k8s/oas_schemas_gen.go +++ b/examples/ex_k8s/oas_schemas_gen.go @@ -5,6 +5,8 @@ package api import ( "io" "time" + + "github.com/go-faster/jx" ) type BearerToken struct { @@ -3635,7 +3637,16 @@ func (*IoK8sAPIApiserverinternalV1alpha1StorageVersionList) listInternalApiserve // StorageVersionSpec is an empty spec. // Ref: #/components/schemas/io.k8s.api.apiserverinternal.v1alpha1.StorageVersionSpec -type IoK8sAPIApiserverinternalV1alpha1StorageVersionSpec struct{} +type IoK8sAPIApiserverinternalV1alpha1StorageVersionSpec map[string]jx.Raw + +func (s *IoK8sAPIApiserverinternalV1alpha1StorageVersionSpec) init() IoK8sAPIApiserverinternalV1alpha1StorageVersionSpec { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} // API server instances report the versions they can decode and the version they encode objects to // when persisting objects in the backend. @@ -3697,8 +3708,8 @@ type IoK8sAPIAppsV1ControllerRevision struct { // APIVersion defines the versioned schema of this representation of an object. Servers should // convert recognized schemas to the latest internal value, and may reject unrecognized values. More // info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources. - ApiVersion OptString `json:"apiVersion"` - Data *IoK8sApimachineryPkgRuntimeRawExtension `json:"data"` + ApiVersion OptString `json:"apiVersion"` + Data OptIoK8sApimachineryPkgRuntimeRawExtension `json:"data"` // Kind is a string value representing the REST resource this object represents. Servers may infer // this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: // https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds. @@ -3714,7 +3725,7 @@ func (s *IoK8sAPIAppsV1ControllerRevision) GetApiVersion() OptString { } // GetData returns the value of Data. -func (s *IoK8sAPIAppsV1ControllerRevision) GetData() *IoK8sApimachineryPkgRuntimeRawExtension { +func (s *IoK8sAPIAppsV1ControllerRevision) GetData() OptIoK8sApimachineryPkgRuntimeRawExtension { return s.Data } @@ -3739,7 +3750,7 @@ func (s *IoK8sAPIAppsV1ControllerRevision) SetApiVersion(val OptString) { } // SetData sets the value of Data. -func (s *IoK8sAPIAppsV1ControllerRevision) SetData(val *IoK8sApimachineryPkgRuntimeRawExtension) { +func (s *IoK8sAPIAppsV1ControllerRevision) SetData(val OptIoK8sApimachineryPkgRuntimeRawExtension) { s.Data = val } @@ -31926,13 +31937,22 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresou // custom resource object, and ignore changes to anything except the status stanza * PUT/POST/PATCH // requests to the custom resource ignore changes to the status stanza. // Ref: #/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresourceStatus -type IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus struct{} +type IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus map[string]jx.Raw + +func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) init() IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} // CustomResourceSubresources defines the status and scale subresources for CustomResources. // Ref: #/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.CustomResourceSubresources type IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresources struct { - Scale OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceScale `json:"scale"` - Status *IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus `json:"status"` + Scale OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceScale `json:"scale"` + Status OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus `json:"status"` } // GetScale returns the value of Scale. @@ -31941,7 +31961,7 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresou } // GetStatus returns the value of Status. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresources) GetStatus() *IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus { +func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresources) GetStatus() OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus { return s.Status } @@ -31951,7 +31971,7 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresou } // SetStatus sets the value of Status. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresources) SetStatus(val *IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) { +func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresources) SetStatus(val OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) { s.Status = val } @@ -32001,23 +32021,32 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1ExternalDocumentation) // JSON represents any valid JSON value. These types are supported: bool, int64, float64, string, // []interface{}, map[string]interface{} and nil. // Ref: #/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSON -type IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON struct{} +type IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON map[string]jx.Raw + +func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) init() IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} // JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/). // Ref: #/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaProps type IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps struct { Ref OptString `json:"$ref"` Schema OptString `json:"$schema"` - AdditionalItems *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool `json:"additionalItems"` - AdditionalProperties *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool `json:"additionalProperties"` + AdditionalItems OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool `json:"additionalItems"` + AdditionalProperties OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool `json:"additionalProperties"` AllOf []IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps `json:"allOf"` AnyOf []IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps `json:"anyOf"` - Default *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON `json:"default"` + Default OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON `json:"default"` Definitions OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsDefinitions `json:"definitions"` Dependencies OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsDependencies `json:"dependencies"` Description OptString `json:"description"` Enum []IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON `json:"enum"` - Example *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON `json:"example"` + Example OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON `json:"example"` ExclusiveMaximum OptBool `json:"exclusiveMaximum"` ExclusiveMinimum OptBool `json:"exclusiveMinimum"` ExternalDocs OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1ExternalDocumentation `json:"externalDocs"` @@ -32042,7 +32071,7 @@ type IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps struct { // ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$ with any non digit characters mixed in - ssn: a U.S. social security number following the regex ^\d{3}[- ]?\d{2}[- ]?\d{4}$ - hexcolor: an hexadecimal color code like "#FFFFFF: following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ - rgbcolor: an RGB color code like rgb like "rgb(255,255,2559" - byte: base64 encoded binary data - password: any kind of string - date: a date string like "2006-01-02" as defined by full-date in RFC3339 - duration: a duration string like "22 ns" as parsed by Golang time.ParseDuration or compatible with Scala duration format - datetime: a date time string like "2014-12-15T19:30:20.000Z" as defined by date-time in RFC3339. Format OptString `json:"format"` ID OptString `json:"id"` - Items *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray `json:"items"` + Items OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray `json:"items"` MaxItems OptInt64 `json:"maxItems"` MaxLength OptInt64 `json:"maxLength"` MaxProperties OptInt64 `json:"maxProperties"` @@ -32130,12 +32159,12 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) GetSc } // GetAdditionalItems returns the value of AdditionalItems. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) GetAdditionalItems() *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool { +func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) GetAdditionalItems() OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool { return s.AdditionalItems } // GetAdditionalProperties returns the value of AdditionalProperties. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) GetAdditionalProperties() *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool { +func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) GetAdditionalProperties() OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool { return s.AdditionalProperties } @@ -32150,7 +32179,7 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) GetAn } // GetDefault returns the value of Default. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) GetDefault() *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON { +func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) GetDefault() OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON { return s.Default } @@ -32175,7 +32204,7 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) GetEn } // GetExample returns the value of Example. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) GetExample() *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON { +func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) GetExample() OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON { return s.Example } @@ -32205,7 +32234,7 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) GetID } // GetItems returns the value of Items. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) GetItems() *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray { +func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) GetItems() OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray { return s.Items } @@ -32345,12 +32374,12 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) SetSc } // SetAdditionalItems sets the value of AdditionalItems. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) SetAdditionalItems(val *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) { +func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) SetAdditionalItems(val OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) { s.AdditionalItems = val } // SetAdditionalProperties sets the value of AdditionalProperties. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) SetAdditionalProperties(val *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) { +func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) SetAdditionalProperties(val OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) { s.AdditionalProperties = val } @@ -32365,7 +32394,7 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) SetAn } // SetDefault sets the value of Default. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) SetDefault(val *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) { +func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) SetDefault(val OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) { s.Default = val } @@ -32390,7 +32419,7 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) SetEn } // SetExample sets the value of Example. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) SetExample(val *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) { +func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) SetExample(val OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) { s.Example = val } @@ -32420,7 +32449,7 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) SetID } // SetItems sets the value of Items. -func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) SetItems(val *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) { +func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) SetItems(val OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) { s.Items = val } @@ -32574,16 +32603,43 @@ func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsDepende // JSONSchemaPropsOrArray represents a value that can either be a JSONSchemaProps or an array of // JSONSchemaProps. Mainly here for serialization purposes. // Ref: #/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrArray -type IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray struct{} +type IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray map[string]jx.Raw + +func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) init() IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} // JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the // boolean property. // Ref: #/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrBool -type IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool struct{} +type IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool map[string]jx.Raw + +func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) init() IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} // JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array. // Ref: #/components/schemas/io.k8s.apiextensions-apiserver.pkg.apis.apiextensions.v1.JSONSchemaPropsOrStringArray -type IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrStringArray struct{} +type IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrStringArray map[string]jx.Raw + +func (s *IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrStringArray) init() IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrStringArray { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} type IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsPatternProperties map[string]IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps @@ -33288,7 +33344,16 @@ func (s *IoK8sApimachineryPkgApisMetaV1Condition) SetType(val string) { // values If a key maps to an empty Fields value, the field that key represents is part of the set. // The exact format is defined in sigs.k8s.io/structured-merge-diff. // Ref: #/components/schemas/io.k8s.apimachinery.pkg.apis.meta.v1.FieldsV1 -type IoK8sApimachineryPkgApisMetaV1FieldsV1 struct{} +type IoK8sApimachineryPkgApisMetaV1FieldsV1 map[string]jx.Raw + +func (s *IoK8sApimachineryPkgApisMetaV1FieldsV1) init() IoK8sApimachineryPkgApisMetaV1FieldsV1 { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} // GroupVersion contains the "group/version" and "version" string of a version. It is made a struct // to keep extensibility. @@ -33496,8 +33561,8 @@ type IoK8sApimachineryPkgApisMetaV1ManagedFieldsEntry struct { ApiVersion OptString `json:"apiVersion"` // FieldsType is the discriminator for the different fields format and version. There is currently // only one possible value: "FieldsV1". - FieldsType OptString `json:"fieldsType"` - FieldsV1 *IoK8sApimachineryPkgApisMetaV1FieldsV1 `json:"fieldsV1"` + FieldsType OptString `json:"fieldsType"` + FieldsV1 OptIoK8sApimachineryPkgApisMetaV1FieldsV1 `json:"fieldsV1"` // Manager is an identifier of the workflow managing these fields. Manager OptString `json:"manager"` // Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only @@ -33523,7 +33588,7 @@ func (s *IoK8sApimachineryPkgApisMetaV1ManagedFieldsEntry) GetFieldsType() OptSt } // GetFieldsV1 returns the value of FieldsV1. -func (s *IoK8sApimachineryPkgApisMetaV1ManagedFieldsEntry) GetFieldsV1() *IoK8sApimachineryPkgApisMetaV1FieldsV1 { +func (s *IoK8sApimachineryPkgApisMetaV1ManagedFieldsEntry) GetFieldsV1() OptIoK8sApimachineryPkgApisMetaV1FieldsV1 { return s.FieldsV1 } @@ -33558,7 +33623,7 @@ func (s *IoK8sApimachineryPkgApisMetaV1ManagedFieldsEntry) SetFieldsType(val Opt } // SetFieldsV1 sets the value of FieldsV1. -func (s *IoK8sApimachineryPkgApisMetaV1ManagedFieldsEntry) SetFieldsV1(val *IoK8sApimachineryPkgApisMetaV1FieldsV1) { +func (s *IoK8sApimachineryPkgApisMetaV1ManagedFieldsEntry) SetFieldsV1(val OptIoK8sApimachineryPkgApisMetaV1FieldsV1) { s.FieldsV1 = val } @@ -34239,7 +34304,16 @@ func (*IoK8sApimachineryPkgApisMetaV1WatchEvent) watchStorageV1beta1NamespacedCS // the correct object type, and storing it in the Object. (TODO: In the case where the object is of // an unknown type, a runtime.Unknown object will be created and stored.). // Ref: #/components/schemas/io.k8s.apimachinery.pkg.runtime.RawExtension -type IoK8sApimachineryPkgRuntimeRawExtension struct{} +type IoK8sApimachineryPkgRuntimeRawExtension map[string]jx.Raw + +func (s *IoK8sApimachineryPkgRuntimeRawExtension) init() IoK8sApimachineryPkgRuntimeRawExtension { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} type IoK8sApimachineryPkgUtilIntstrIntOrString string @@ -47541,6 +47615,54 @@ func (o OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubres return d } +// NewOptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus returns new OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus with value set to v. +func NewOptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus(v IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus { + return OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus{ + Value: v, + Set: true, + } +} + +// OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus is optional IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus. +type OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus struct { + Value IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus + Set bool +} + +// IsSet returns true if OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus was set. +func (o OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) IsSet() bool { + return o.Set +} + +// Reset unsets value. +func (o *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) Reset() { + var v IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) SetTo(v IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) Get() (v IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) Or(d IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus { + if v, ok := o.Get(); ok { + return v + } + return d +} + // NewOptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresources returns new OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresources with value set to v. func NewOptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresources(v IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresources) OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresources { return OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresources{ @@ -47685,6 +47807,52 @@ func (o OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1ExternalDocumentatio return d } +// NewOptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON returns new OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON with value set to v. +func NewOptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON(v IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON { + return OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON{ + Value: v, + Set: true, + } +} + +// OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON is optional IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON. +type OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON struct { + Value IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON + Set bool +} + +// IsSet returns true if OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON was set. +func (o OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) Reset() { + var v IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) SetTo(v IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) Get() (v IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) Or(d IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON { + if v, ok := o.Get(); ok { + return v + } + return d +} + // NewOptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps returns new OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps with value set to v. func NewOptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps(v IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps) OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps { return OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps{ @@ -47829,6 +47997,102 @@ func (o OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsDepen return d } +// NewOptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray returns new OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray with value set to v. +func NewOptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray(v IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray { + return OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray{ + Value: v, + Set: true, + } +} + +// OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray is optional IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray. +type OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray struct { + Value IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray + Set bool +} + +// IsSet returns true if OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray was set. +func (o OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) IsSet() bool { + return o.Set +} + +// Reset unsets value. +func (o *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) Reset() { + var v IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) SetTo(v IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) Get() (v IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) Or(d IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray { + if v, ok := o.Get(); ok { + return v + } + return d +} + +// NewOptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool returns new OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool with value set to v. +func NewOptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool(v IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool { + return OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool{ + Value: v, + Set: true, + } +} + +// OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool is optional IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool. +type OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool struct { + Value IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool + Set bool +} + +// IsSet returns true if OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool was set. +func (o OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) IsSet() bool { + return o.Set +} + +// Reset unsets value. +func (o *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) Reset() { + var v IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) SetTo(v IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) Get() (v IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) Or(d IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool { + if v, ok := o.Get(); ok { + return v + } + return d +} + // NewOptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsPatternProperties returns new OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsPatternProperties with value set to v. func NewOptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsPatternProperties(v IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsPatternProperties) OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsPatternProperties { return OptIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsPatternProperties{ @@ -48115,6 +48379,52 @@ func (o OptIoK8sApimachineryPkgAPIResourceQuantity) Or(d IoK8sApimachineryPkgAPI return d } +// NewOptIoK8sApimachineryPkgApisMetaV1FieldsV1 returns new OptIoK8sApimachineryPkgApisMetaV1FieldsV1 with value set to v. +func NewOptIoK8sApimachineryPkgApisMetaV1FieldsV1(v IoK8sApimachineryPkgApisMetaV1FieldsV1) OptIoK8sApimachineryPkgApisMetaV1FieldsV1 { + return OptIoK8sApimachineryPkgApisMetaV1FieldsV1{ + Value: v, + Set: true, + } +} + +// OptIoK8sApimachineryPkgApisMetaV1FieldsV1 is optional IoK8sApimachineryPkgApisMetaV1FieldsV1. +type OptIoK8sApimachineryPkgApisMetaV1FieldsV1 struct { + Value IoK8sApimachineryPkgApisMetaV1FieldsV1 + Set bool +} + +// IsSet returns true if OptIoK8sApimachineryPkgApisMetaV1FieldsV1 was set. +func (o OptIoK8sApimachineryPkgApisMetaV1FieldsV1) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptIoK8sApimachineryPkgApisMetaV1FieldsV1) Reset() { + var v IoK8sApimachineryPkgApisMetaV1FieldsV1 + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptIoK8sApimachineryPkgApisMetaV1FieldsV1) SetTo(v IoK8sApimachineryPkgApisMetaV1FieldsV1) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptIoK8sApimachineryPkgApisMetaV1FieldsV1) Get() (v IoK8sApimachineryPkgApisMetaV1FieldsV1, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptIoK8sApimachineryPkgApisMetaV1FieldsV1) Or(d IoK8sApimachineryPkgApisMetaV1FieldsV1) IoK8sApimachineryPkgApisMetaV1FieldsV1 { + if v, ok := o.Get(); ok { + return v + } + return d +} + // NewOptIoK8sApimachineryPkgApisMetaV1GroupVersionForDiscovery returns new OptIoK8sApimachineryPkgApisMetaV1GroupVersionForDiscovery with value set to v. func NewOptIoK8sApimachineryPkgApisMetaV1GroupVersionForDiscovery(v IoK8sApimachineryPkgApisMetaV1GroupVersionForDiscovery) OptIoK8sApimachineryPkgApisMetaV1GroupVersionForDiscovery { return OptIoK8sApimachineryPkgApisMetaV1GroupVersionForDiscovery{ @@ -48529,6 +48839,52 @@ func (o OptIoK8sApimachineryPkgApisMetaV1Time) Or(d IoK8sApimachineryPkgApisMeta return d } +// NewOptIoK8sApimachineryPkgRuntimeRawExtension returns new OptIoK8sApimachineryPkgRuntimeRawExtension with value set to v. +func NewOptIoK8sApimachineryPkgRuntimeRawExtension(v IoK8sApimachineryPkgRuntimeRawExtension) OptIoK8sApimachineryPkgRuntimeRawExtension { + return OptIoK8sApimachineryPkgRuntimeRawExtension{ + Value: v, + Set: true, + } +} + +// OptIoK8sApimachineryPkgRuntimeRawExtension is optional IoK8sApimachineryPkgRuntimeRawExtension. +type OptIoK8sApimachineryPkgRuntimeRawExtension struct { + Value IoK8sApimachineryPkgRuntimeRawExtension + Set bool +} + +// IsSet returns true if OptIoK8sApimachineryPkgRuntimeRawExtension was set. +func (o OptIoK8sApimachineryPkgRuntimeRawExtension) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptIoK8sApimachineryPkgRuntimeRawExtension) Reset() { + var v IoK8sApimachineryPkgRuntimeRawExtension + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptIoK8sApimachineryPkgRuntimeRawExtension) SetTo(v IoK8sApimachineryPkgRuntimeRawExtension) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptIoK8sApimachineryPkgRuntimeRawExtension) Get() (v IoK8sApimachineryPkgRuntimeRawExtension, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptIoK8sApimachineryPkgRuntimeRawExtension) Or(d IoK8sApimachineryPkgRuntimeRawExtension) IoK8sApimachineryPkgRuntimeRawExtension { + if v, ok := o.Get(); ok { + return v + } + return d +} + // NewOptIoK8sApimachineryPkgUtilIntstrIntOrString returns new OptIoK8sApimachineryPkgUtilIntstrIntOrString with value set to v. func NewOptIoK8sApimachineryPkgUtilIntstrIntOrString(v IoK8sApimachineryPkgUtilIntstrIntOrString) OptIoK8sApimachineryPkgUtilIntstrIntOrString { return OptIoK8sApimachineryPkgUtilIntstrIntOrString{ diff --git a/examples/ex_k8s/oas_test_examples_gen_test.go b/examples/ex_k8s/oas_test_examples_gen_test.go index 64fa413b8..0797a1cca 100644 --- a/examples/ex_k8s/oas_test_examples_gen_test.go +++ b/examples/ex_k8s/oas_test_examples_gen_test.go @@ -181,6 +181,7 @@ func TestIoK8sAPIApiserverinternalV1alpha1StorageVersionList_EncodeDecode(t *tes } func TestIoK8sAPIApiserverinternalV1alpha1StorageVersionSpec_EncodeDecode(t *testing.T) { var typ IoK8sAPIApiserverinternalV1alpha1StorageVersionSpec + typ = make(IoK8sAPIApiserverinternalV1alpha1StorageVersionSpec) typ.SetFake() e := jx.Encoder{} @@ -189,6 +190,7 @@ func TestIoK8sAPIApiserverinternalV1alpha1StorageVersionSpec_EncodeDecode(t *tes require.True(t, std.Valid(data), "Encoded: %s", data) var typ2 IoK8sAPIApiserverinternalV1alpha1StorageVersionSpec + typ2 = make(IoK8sAPIApiserverinternalV1alpha1StorageVersionSpec) require.NoError(t, typ2.Decode(jx.DecodeBytes(data))) } func TestIoK8sAPIApiserverinternalV1alpha1StorageVersionStatus_EncodeDecode(t *testing.T) { @@ -6223,6 +6225,7 @@ func TestIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresou } func TestIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus_EncodeDecode(t *testing.T) { var typ IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus + typ = make(IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) typ.SetFake() e := jx.Encoder{} @@ -6231,6 +6234,7 @@ func TestIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresou require.True(t, std.Valid(data), "Encoded: %s", data) var typ2 IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus + typ2 = make(IoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresourceStatus) require.NoError(t, typ2.Decode(jx.DecodeBytes(data))) } func TestIoK8sApiextensionsApiserverPkgApisApiextensionsV1CustomResourceSubresources_EncodeDecode(t *testing.T) { @@ -6271,6 +6275,7 @@ func TestIoK8sApiextensionsApiserverPkgApisApiextensionsV1ExternalDocumentation_ } func TestIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON_EncodeDecode(t *testing.T) { var typ IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON + typ = make(IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) typ.SetFake() e := jx.Encoder{} @@ -6279,6 +6284,7 @@ func TestIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON_EncodeDecode(t *t require.True(t, std.Valid(data), "Encoded: %s", data) var typ2 IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON + typ2 = make(IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSON) require.NoError(t, typ2.Decode(jx.DecodeBytes(data))) } func TestIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaProps_EncodeDecode(t *testing.T) { @@ -6323,6 +6329,7 @@ func TestIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsDepende } func TestIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray_EncodeDecode(t *testing.T) { var typ IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray + typ = make(IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) typ.SetFake() e := jx.Encoder{} @@ -6331,10 +6338,12 @@ func TestIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray require.True(t, std.Valid(data), "Encoded: %s", data) var typ2 IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray + typ2 = make(IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrArray) require.NoError(t, typ2.Decode(jx.DecodeBytes(data))) } func TestIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool_EncodeDecode(t *testing.T) { var typ IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool + typ = make(IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) typ.SetFake() e := jx.Encoder{} @@ -6343,10 +6352,12 @@ func TestIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool_ require.True(t, std.Valid(data), "Encoded: %s", data) var typ2 IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool + typ2 = make(IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrBool) require.NoError(t, typ2.Decode(jx.DecodeBytes(data))) } func TestIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrStringArray_EncodeDecode(t *testing.T) { var typ IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrStringArray + typ = make(IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrStringArray) typ.SetFake() e := jx.Encoder{} @@ -6355,6 +6366,7 @@ func TestIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrStrin require.True(t, std.Valid(data), "Encoded: %s", data) var typ2 IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrStringArray + typ2 = make(IoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsOrStringArray) require.NoError(t, typ2.Decode(jx.DecodeBytes(data))) } func TestIoK8sApiextensionsApiserverPkgApisApiextensionsV1JSONSchemaPropsPatternProperties_EncodeDecode(t *testing.T) { @@ -6507,6 +6519,7 @@ func TestIoK8sApimachineryPkgApisMetaV1Condition_EncodeDecode(t *testing.T) { } func TestIoK8sApimachineryPkgApisMetaV1FieldsV1_EncodeDecode(t *testing.T) { var typ IoK8sApimachineryPkgApisMetaV1FieldsV1 + typ = make(IoK8sApimachineryPkgApisMetaV1FieldsV1) typ.SetFake() e := jx.Encoder{} @@ -6515,6 +6528,7 @@ func TestIoK8sApimachineryPkgApisMetaV1FieldsV1_EncodeDecode(t *testing.T) { require.True(t, std.Valid(data), "Encoded: %s", data) var typ2 IoK8sApimachineryPkgApisMetaV1FieldsV1 + typ2 = make(IoK8sApimachineryPkgApisMetaV1FieldsV1) require.NoError(t, typ2.Decode(jx.DecodeBytes(data))) } func TestIoK8sApimachineryPkgApisMetaV1GroupVersionForDiscovery_EncodeDecode(t *testing.T) { @@ -6693,6 +6707,7 @@ func TestIoK8sApimachineryPkgApisMetaV1WatchEvent_EncodeDecode(t *testing.T) { } func TestIoK8sApimachineryPkgRuntimeRawExtension_EncodeDecode(t *testing.T) { var typ IoK8sApimachineryPkgRuntimeRawExtension + typ = make(IoK8sApimachineryPkgRuntimeRawExtension) typ.SetFake() e := jx.Encoder{} @@ -6701,6 +6716,7 @@ func TestIoK8sApimachineryPkgRuntimeRawExtension_EncodeDecode(t *testing.T) { require.True(t, std.Valid(data), "Encoded: %s", data) var typ2 IoK8sApimachineryPkgRuntimeRawExtension + typ2 = make(IoK8sApimachineryPkgRuntimeRawExtension) require.NoError(t, typ2.Decode(jx.DecodeBytes(data))) } func TestIoK8sApimachineryPkgUtilIntstrIntOrString_EncodeDecode(t *testing.T) { diff --git a/examples/ex_openai/oas_json_gen.go b/examples/ex_openai/oas_json_gen.go index 86457d2a2..68239367f 100644 --- a/examples/ex_openai/oas_json_gen.go +++ b/examples/ex_openai/oas_json_gen.go @@ -748,29 +748,43 @@ func (s *CreateAnswerRequest) UnmarshalJSON(data []byte) error { } // Encode implements json.Marshaler. -func (s *CreateAnswerRequestLogitBias) Encode(e *jx.Encoder) { +func (s CreateAnswerRequestLogitBias) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *CreateAnswerRequestLogitBias) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s CreateAnswerRequestLogitBias) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfCreateAnswerRequestLogitBias = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes CreateAnswerRequestLogitBias from json. func (s *CreateAnswerRequestLogitBias) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode CreateAnswerRequestLogitBias to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode CreateAnswerRequestLogitBias") } @@ -779,7 +793,7 @@ func (s *CreateAnswerRequestLogitBias) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *CreateAnswerRequestLogitBias) MarshalJSON() ([]byte, error) { +func (s CreateAnswerRequestLogitBias) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -1401,29 +1415,43 @@ func (s *CreateChatCompletionRequest) UnmarshalJSON(data []byte) error { } // Encode implements json.Marshaler. -func (s *CreateChatCompletionRequestLogitBias) Encode(e *jx.Encoder) { +func (s CreateChatCompletionRequestLogitBias) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *CreateChatCompletionRequestLogitBias) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s CreateChatCompletionRequestLogitBias) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfCreateChatCompletionRequestLogitBias = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes CreateChatCompletionRequestLogitBias from json. func (s *CreateChatCompletionRequestLogitBias) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode CreateChatCompletionRequestLogitBias to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode CreateChatCompletionRequestLogitBias") } @@ -1432,7 +1460,7 @@ func (s *CreateChatCompletionRequestLogitBias) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *CreateChatCompletionRequestLogitBias) MarshalJSON() ([]byte, error) { +func (s CreateChatCompletionRequestLogitBias) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -2244,29 +2272,43 @@ func (s *CreateClassificationRequest) UnmarshalJSON(data []byte) error { } // Encode implements json.Marshaler. -func (s *CreateClassificationRequestLogitBias) Encode(e *jx.Encoder) { +func (s CreateClassificationRequestLogitBias) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *CreateClassificationRequestLogitBias) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s CreateClassificationRequestLogitBias) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfCreateClassificationRequestLogitBias = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes CreateClassificationRequestLogitBias from json. func (s *CreateClassificationRequestLogitBias) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode CreateClassificationRequestLogitBias to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode CreateClassificationRequestLogitBias") } @@ -2275,7 +2317,7 @@ func (s *CreateClassificationRequestLogitBias) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *CreateClassificationRequestLogitBias) MarshalJSON() ([]byte, error) { +func (s CreateClassificationRequestLogitBias) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -2897,29 +2939,43 @@ func (s *CreateCompletionRequest) UnmarshalJSON(data []byte) error { } // Encode implements json.Marshaler. -func (s *CreateCompletionRequestLogitBias) Encode(e *jx.Encoder) { +func (s CreateCompletionRequestLogitBias) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *CreateCompletionRequestLogitBias) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s CreateCompletionRequestLogitBias) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfCreateCompletionRequestLogitBias = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes CreateCompletionRequestLogitBias from json. func (s *CreateCompletionRequestLogitBias) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode CreateCompletionRequestLogitBias to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode CreateCompletionRequestLogitBias") } @@ -2928,7 +2984,7 @@ func (s *CreateCompletionRequestLogitBias) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *CreateCompletionRequestLogitBias) MarshalJSON() ([]byte, error) { +func (s CreateCompletionRequestLogitBias) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -3542,29 +3598,43 @@ func (s *CreateCompletionResponseChoicesItemLogprobs) UnmarshalJSON(data []byte) } // Encode implements json.Marshaler. -func (s *CreateCompletionResponseChoicesItemLogprobsTopLogprobsItem) Encode(e *jx.Encoder) { +func (s CreateCompletionResponseChoicesItemLogprobsTopLogprobsItem) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *CreateCompletionResponseChoicesItemLogprobsTopLogprobsItem) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s CreateCompletionResponseChoicesItemLogprobsTopLogprobsItem) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfCreateCompletionResponseChoicesItemLogprobsTopLogprobsItem = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes CreateCompletionResponseChoicesItemLogprobsTopLogprobsItem from json. func (s *CreateCompletionResponseChoicesItemLogprobsTopLogprobsItem) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode CreateCompletionResponseChoicesItemLogprobsTopLogprobsItem to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode CreateCompletionResponseChoicesItemLogprobsTopLogprobsItem") } @@ -3573,7 +3643,7 @@ func (s *CreateCompletionResponseChoicesItemLogprobsTopLogprobsItem) Decode(d *j } // MarshalJSON implements stdjson.Marshaler. -func (s *CreateCompletionResponseChoicesItemLogprobsTopLogprobsItem) MarshalJSON() ([]byte, error) { +func (s CreateCompletionResponseChoicesItemLogprobsTopLogprobsItem) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -4331,29 +4401,43 @@ func (s *CreateEditResponseChoicesItemLogprobs) UnmarshalJSON(data []byte) error } // Encode implements json.Marshaler. -func (s *CreateEditResponseChoicesItemLogprobsTopLogprobsItem) Encode(e *jx.Encoder) { +func (s CreateEditResponseChoicesItemLogprobsTopLogprobsItem) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *CreateEditResponseChoicesItemLogprobsTopLogprobsItem) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s CreateEditResponseChoicesItemLogprobsTopLogprobsItem) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfCreateEditResponseChoicesItemLogprobsTopLogprobsItem = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes CreateEditResponseChoicesItemLogprobsTopLogprobsItem from json. func (s *CreateEditResponseChoicesItemLogprobsTopLogprobsItem) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode CreateEditResponseChoicesItemLogprobsTopLogprobsItem to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode CreateEditResponseChoicesItemLogprobsTopLogprobsItem") } @@ -4362,7 +4446,7 @@ func (s *CreateEditResponseChoicesItemLogprobsTopLogprobsItem) Decode(d *jx.Deco } // MarshalJSON implements stdjson.Marshaler. -func (s *CreateEditResponseChoicesItemLogprobsTopLogprobsItem) MarshalJSON() ([]byte, error) { +func (s CreateEditResponseChoicesItemLogprobsTopLogprobsItem) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -8211,18 +8295,18 @@ func (s *OptChatCompletionResponseMessage) UnmarshalJSON(data []byte) error { return s.Decode(d) } -// Encode encodes *CreateAnswerRequestLogitBias as json. -func (o OptCreateAnswerRequestLogitBias) Encode(e *jx.Encoder) { +// Encode encodes CreateChatCompletionResponseUsage as json. +func (o OptCreateChatCompletionResponseUsage) Encode(e *jx.Encoder) { if !o.Set { return } o.Value.Encode(e) } -// Decode decodes *CreateAnswerRequestLogitBias from json. -func (o *OptCreateAnswerRequestLogitBias) Decode(d *jx.Decoder) error { +// Decode decodes CreateChatCompletionResponseUsage from json. +func (o *OptCreateChatCompletionResponseUsage) Decode(d *jx.Decoder) error { if o == nil { - return errors.New("invalid: unable to decode OptCreateAnswerRequestLogitBias to nil") + return errors.New("invalid: unable to decode OptCreateChatCompletionResponseUsage to nil") } o.Set = true if err := o.Value.Decode(d); err != nil { @@ -8232,30 +8316,30 @@ func (o *OptCreateAnswerRequestLogitBias) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s OptCreateAnswerRequestLogitBias) MarshalJSON() ([]byte, error) { +func (s OptCreateChatCompletionResponseUsage) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. -func (s *OptCreateAnswerRequestLogitBias) UnmarshalJSON(data []byte) error { +func (s *OptCreateChatCompletionResponseUsage) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } -// Encode encodes *CreateChatCompletionRequestLogitBias as json. -func (o OptCreateChatCompletionRequestLogitBias) Encode(e *jx.Encoder) { +// Encode encodes CreateCompletionResponseUsage as json. +func (o OptCreateCompletionResponseUsage) Encode(e *jx.Encoder) { if !o.Set { return } o.Value.Encode(e) } -// Decode decodes *CreateChatCompletionRequestLogitBias from json. -func (o *OptCreateChatCompletionRequestLogitBias) Decode(d *jx.Decoder) error { +// Decode decodes CreateCompletionResponseUsage from json. +func (o *OptCreateCompletionResponseUsage) Decode(d *jx.Decoder) error { if o == nil { - return errors.New("invalid: unable to decode OptCreateChatCompletionRequestLogitBias to nil") + return errors.New("invalid: unable to decode OptCreateCompletionResponseUsage to nil") } o.Set = true if err := o.Value.Decode(d); err != nil { @@ -8265,222 +8349,305 @@ func (o *OptCreateChatCompletionRequestLogitBias) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s OptCreateChatCompletionRequestLogitBias) MarshalJSON() ([]byte, error) { +func (s OptCreateCompletionResponseUsage) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. -func (s *OptCreateChatCompletionRequestLogitBias) UnmarshalJSON(data []byte) error { +func (s *OptCreateCompletionResponseUsage) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } -// Encode encodes CreateChatCompletionResponseUsage as json. -func (o OptCreateChatCompletionResponseUsage) Encode(e *jx.Encoder) { +// Encode encodes float64 as json. +func (o OptFloat64) Encode(e *jx.Encoder) { if !o.Set { return } - o.Value.Encode(e) + e.Float64(float64(o.Value)) } -// Decode decodes CreateChatCompletionResponseUsage from json. -func (o *OptCreateChatCompletionResponseUsage) Decode(d *jx.Decoder) error { +// Decode decodes float64 from json. +func (o *OptFloat64) Decode(d *jx.Decoder) error { if o == nil { - return errors.New("invalid: unable to decode OptCreateChatCompletionResponseUsage to nil") + return errors.New("invalid: unable to decode OptFloat64 to nil") } o.Set = true - if err := o.Value.Decode(d); err != nil { + v, err := d.Float64() + if err != nil { return err } + o.Value = float64(v) return nil } // MarshalJSON implements stdjson.Marshaler. -func (s OptCreateChatCompletionResponseUsage) MarshalJSON() ([]byte, error) { +func (s OptFloat64) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. -func (s *OptCreateChatCompletionResponseUsage) UnmarshalJSON(data []byte) error { +func (s *OptFloat64) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } -// Encode encodes *CreateClassificationRequestLogitBias as json. -func (o OptCreateClassificationRequestLogitBias) Encode(e *jx.Encoder) { +// Encode encodes int as json. +func (o OptInt) Encode(e *jx.Encoder) { if !o.Set { return } - o.Value.Encode(e) + e.Int(int(o.Value)) } -// Decode decodes *CreateClassificationRequestLogitBias from json. -func (o *OptCreateClassificationRequestLogitBias) Decode(d *jx.Decoder) error { +// Decode decodes int from json. +func (o *OptInt) Decode(d *jx.Decoder) error { if o == nil { - return errors.New("invalid: unable to decode OptCreateClassificationRequestLogitBias to nil") + return errors.New("invalid: unable to decode OptInt to nil") } o.Set = true - if err := o.Value.Decode(d); err != nil { + v, err := d.Int() + if err != nil { return err } + o.Value = int(v) return nil } // MarshalJSON implements stdjson.Marshaler. -func (s OptCreateClassificationRequestLogitBias) MarshalJSON() ([]byte, error) { +func (s OptInt) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. -func (s *OptCreateClassificationRequestLogitBias) UnmarshalJSON(data []byte) error { +func (s *OptInt) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } -// Encode encodes *CreateCompletionRequestLogitBias as json. -func (o OptCreateCompletionRequestLogitBias) Encode(e *jx.Encoder) { +// Encode encodes []jx.Raw as json. +func (o OptNilAnyArray) Encode(e *jx.Encoder) { if !o.Set { return } - o.Value.Encode(e) + if o.Null { + e.Null() + return + } + e.ArrStart() + for _, elem := range o.Value { + if len(elem) != 0 { + e.Raw(elem) + } + } + e.ArrEnd() } -// Decode decodes *CreateCompletionRequestLogitBias from json. -func (o *OptCreateCompletionRequestLogitBias) Decode(d *jx.Decoder) error { +// Decode decodes []jx.Raw from json. +func (o *OptNilAnyArray) Decode(d *jx.Decoder) error { if o == nil { - return errors.New("invalid: unable to decode OptCreateCompletionRequestLogitBias to nil") + return errors.New("invalid: unable to decode OptNilAnyArray to nil") + } + if d.Next() == jx.Null { + if err := d.Null(); err != nil { + return err + } + + var v []jx.Raw + o.Value = v + o.Set = true + o.Null = true + return nil } o.Set = true - if err := o.Value.Decode(d); err != nil { + o.Null = false + o.Value = make([]jx.Raw, 0) + if err := d.Arr(func(d *jx.Decoder) error { + var elem jx.Raw + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + o.Value = append(o.Value, elem) + return nil + }); err != nil { return err } return nil } // MarshalJSON implements stdjson.Marshaler. -func (s OptCreateCompletionRequestLogitBias) MarshalJSON() ([]byte, error) { +func (s OptNilAnyArray) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. -func (s *OptCreateCompletionRequestLogitBias) UnmarshalJSON(data []byte) error { +func (s *OptNilAnyArray) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } -// Encode encodes CreateCompletionResponseUsage as json. -func (o OptCreateCompletionResponseUsage) Encode(e *jx.Encoder) { +// Encode encodes bool as json. +func (o OptNilBool) Encode(e *jx.Encoder) { if !o.Set { return } - o.Value.Encode(e) + if o.Null { + e.Null() + return + } + e.Bool(bool(o.Value)) } -// Decode decodes CreateCompletionResponseUsage from json. -func (o *OptCreateCompletionResponseUsage) Decode(d *jx.Decoder) error { +// Decode decodes bool from json. +func (o *OptNilBool) Decode(d *jx.Decoder) error { if o == nil { - return errors.New("invalid: unable to decode OptCreateCompletionResponseUsage to nil") + return errors.New("invalid: unable to decode OptNilBool to nil") + } + if d.Next() == jx.Null { + if err := d.Null(); err != nil { + return err + } + + var v bool + o.Value = v + o.Set = true + o.Null = true + return nil } o.Set = true - if err := o.Value.Decode(d); err != nil { + o.Null = false + v, err := d.Bool() + if err != nil { return err } + o.Value = bool(v) return nil } // MarshalJSON implements stdjson.Marshaler. -func (s OptCreateCompletionResponseUsage) MarshalJSON() ([]byte, error) { +func (s OptNilBool) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. -func (s *OptCreateCompletionResponseUsage) UnmarshalJSON(data []byte) error { +func (s *OptNilBool) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } -// Encode encodes float64 as json. -func (o OptFloat64) Encode(e *jx.Encoder) { +// Encode encodes CreateAnswerRequestLogitBias as json. +func (o OptNilCreateAnswerRequestLogitBias) Encode(e *jx.Encoder) { if !o.Set { return } - e.Float64(float64(o.Value)) + if o.Null { + e.Null() + return + } + o.Value.Encode(e) } -// Decode decodes float64 from json. -func (o *OptFloat64) Decode(d *jx.Decoder) error { +// Decode decodes CreateAnswerRequestLogitBias from json. +func (o *OptNilCreateAnswerRequestLogitBias) Decode(d *jx.Decoder) error { if o == nil { - return errors.New("invalid: unable to decode OptFloat64 to nil") + return errors.New("invalid: unable to decode OptNilCreateAnswerRequestLogitBias to nil") + } + if d.Next() == jx.Null { + if err := d.Null(); err != nil { + return err + } + + var v CreateAnswerRequestLogitBias + o.Value = v + o.Set = true + o.Null = true + return nil } o.Set = true - v, err := d.Float64() - if err != nil { + o.Null = false + o.Value = make(CreateAnswerRequestLogitBias) + if err := o.Value.Decode(d); err != nil { return err } - o.Value = float64(v) return nil } // MarshalJSON implements stdjson.Marshaler. -func (s OptFloat64) MarshalJSON() ([]byte, error) { +func (s OptNilCreateAnswerRequestLogitBias) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. -func (s *OptFloat64) UnmarshalJSON(data []byte) error { +func (s *OptNilCreateAnswerRequestLogitBias) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } -// Encode encodes int as json. -func (o OptInt) Encode(e *jx.Encoder) { +// Encode encodes CreateAnswerRequestStop as json. +func (o OptNilCreateAnswerRequestStop) Encode(e *jx.Encoder) { if !o.Set { return } - e.Int(int(o.Value)) + if o.Null { + e.Null() + return + } + o.Value.Encode(e) } -// Decode decodes int from json. -func (o *OptInt) Decode(d *jx.Decoder) error { +// Decode decodes CreateAnswerRequestStop from json. +func (o *OptNilCreateAnswerRequestStop) Decode(d *jx.Decoder) error { if o == nil { - return errors.New("invalid: unable to decode OptInt to nil") + return errors.New("invalid: unable to decode OptNilCreateAnswerRequestStop to nil") + } + if d.Next() == jx.Null { + if err := d.Null(); err != nil { + return err + } + + var v CreateAnswerRequestStop + o.Value = v + o.Set = true + o.Null = true + return nil } o.Set = true - v, err := d.Int() - if err != nil { + o.Null = false + if err := o.Value.Decode(d); err != nil { return err } - o.Value = int(v) return nil } // MarshalJSON implements stdjson.Marshaler. -func (s OptInt) MarshalJSON() ([]byte, error) { +func (s OptNilCreateAnswerRequestStop) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. -func (s *OptInt) UnmarshalJSON(data []byte) error { +func (s *OptNilCreateAnswerRequestStop) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } -// Encode encodes []jx.Raw as json. -func (o OptNilAnyArray) Encode(e *jx.Encoder) { +// Encode encodes CreateChatCompletionRequestLogitBias as json. +func (o OptNilCreateChatCompletionRequestLogitBias) Encode(e *jx.Encoder) { if !o.Set { return } @@ -8488,26 +8655,20 @@ func (o OptNilAnyArray) Encode(e *jx.Encoder) { e.Null() return } - e.ArrStart() - for _, elem := range o.Value { - if len(elem) != 0 { - e.Raw(elem) - } - } - e.ArrEnd() + o.Value.Encode(e) } -// Decode decodes []jx.Raw from json. -func (o *OptNilAnyArray) Decode(d *jx.Decoder) error { +// Decode decodes CreateChatCompletionRequestLogitBias from json. +func (o *OptNilCreateChatCompletionRequestLogitBias) Decode(d *jx.Decoder) error { if o == nil { - return errors.New("invalid: unable to decode OptNilAnyArray to nil") + return errors.New("invalid: unable to decode OptNilCreateChatCompletionRequestLogitBias to nil") } if d.Next() == jx.Null { if err := d.Null(); err != nil { return err } - var v []jx.Raw + var v CreateChatCompletionRequestLogitBias o.Value = v o.Set = true o.Null = true @@ -8515,37 +8676,28 @@ func (o *OptNilAnyArray) Decode(d *jx.Decoder) error { } o.Set = true o.Null = false - o.Value = make([]jx.Raw, 0) - if err := d.Arr(func(d *jx.Decoder) error { - var elem jx.Raw - v, err := d.RawAppend(nil) - elem = jx.Raw(v) - if err != nil { - return err - } - o.Value = append(o.Value, elem) - return nil - }); err != nil { + o.Value = make(CreateChatCompletionRequestLogitBias) + if err := o.Value.Decode(d); err != nil { return err } return nil } // MarshalJSON implements stdjson.Marshaler. -func (s OptNilAnyArray) MarshalJSON() ([]byte, error) { +func (s OptNilCreateChatCompletionRequestLogitBias) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. -func (s *OptNilAnyArray) UnmarshalJSON(data []byte) error { +func (s *OptNilCreateChatCompletionRequestLogitBias) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } -// Encode encodes bool as json. -func (o OptNilBool) Encode(e *jx.Encoder) { +// Encode encodes CreateChatCompletionRequestStop as json. +func (o OptNilCreateChatCompletionRequestStop) Encode(e *jx.Encoder) { if !o.Set { return } @@ -8553,20 +8705,20 @@ func (o OptNilBool) Encode(e *jx.Encoder) { e.Null() return } - e.Bool(bool(o.Value)) + o.Value.Encode(e) } -// Decode decodes bool from json. -func (o *OptNilBool) Decode(d *jx.Decoder) error { +// Decode decodes CreateChatCompletionRequestStop from json. +func (o *OptNilCreateChatCompletionRequestStop) Decode(d *jx.Decoder) error { if o == nil { - return errors.New("invalid: unable to decode OptNilBool to nil") + return errors.New("invalid: unable to decode OptNilCreateChatCompletionRequestStop to nil") } if d.Next() == jx.Null { if err := d.Null(); err != nil { return err } - var v bool + var v CreateChatCompletionRequestStop o.Value = v o.Set = true o.Null = true @@ -8574,29 +8726,27 @@ func (o *OptNilBool) Decode(d *jx.Decoder) error { } o.Set = true o.Null = false - v, err := d.Bool() - if err != nil { + if err := o.Value.Decode(d); err != nil { return err } - o.Value = bool(v) return nil } // MarshalJSON implements stdjson.Marshaler. -func (s OptNilBool) MarshalJSON() ([]byte, error) { +func (s OptNilCreateChatCompletionRequestStop) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. -func (s *OptNilBool) UnmarshalJSON(data []byte) error { +func (s *OptNilCreateChatCompletionRequestStop) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } -// Encode encodes CreateAnswerRequestStop as json. -func (o OptNilCreateAnswerRequestStop) Encode(e *jx.Encoder) { +// Encode encodes CreateClassificationRequestLogitBias as json. +func (o OptNilCreateClassificationRequestLogitBias) Encode(e *jx.Encoder) { if !o.Set { return } @@ -8607,17 +8757,17 @@ func (o OptNilCreateAnswerRequestStop) Encode(e *jx.Encoder) { o.Value.Encode(e) } -// Decode decodes CreateAnswerRequestStop from json. -func (o *OptNilCreateAnswerRequestStop) Decode(d *jx.Decoder) error { +// Decode decodes CreateClassificationRequestLogitBias from json. +func (o *OptNilCreateClassificationRequestLogitBias) Decode(d *jx.Decoder) error { if o == nil { - return errors.New("invalid: unable to decode OptNilCreateAnswerRequestStop to nil") + return errors.New("invalid: unable to decode OptNilCreateClassificationRequestLogitBias to nil") } if d.Next() == jx.Null { if err := d.Null(); err != nil { return err } - var v CreateAnswerRequestStop + var v CreateClassificationRequestLogitBias o.Value = v o.Set = true o.Null = true @@ -8625,6 +8775,7 @@ func (o *OptNilCreateAnswerRequestStop) Decode(d *jx.Decoder) error { } o.Set = true o.Null = false + o.Value = make(CreateClassificationRequestLogitBias) if err := o.Value.Decode(d); err != nil { return err } @@ -8632,20 +8783,20 @@ func (o *OptNilCreateAnswerRequestStop) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s OptNilCreateAnswerRequestStop) MarshalJSON() ([]byte, error) { +func (s OptNilCreateClassificationRequestLogitBias) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. -func (s *OptNilCreateAnswerRequestStop) UnmarshalJSON(data []byte) error { +func (s *OptNilCreateClassificationRequestLogitBias) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } -// Encode encodes CreateChatCompletionRequestStop as json. -func (o OptNilCreateChatCompletionRequestStop) Encode(e *jx.Encoder) { +// Encode encodes CreateCompletionRequestLogitBias as json. +func (o OptNilCreateCompletionRequestLogitBias) Encode(e *jx.Encoder) { if !o.Set { return } @@ -8656,17 +8807,17 @@ func (o OptNilCreateChatCompletionRequestStop) Encode(e *jx.Encoder) { o.Value.Encode(e) } -// Decode decodes CreateChatCompletionRequestStop from json. -func (o *OptNilCreateChatCompletionRequestStop) Decode(d *jx.Decoder) error { +// Decode decodes CreateCompletionRequestLogitBias from json. +func (o *OptNilCreateCompletionRequestLogitBias) Decode(d *jx.Decoder) error { if o == nil { - return errors.New("invalid: unable to decode OptNilCreateChatCompletionRequestStop to nil") + return errors.New("invalid: unable to decode OptNilCreateCompletionRequestLogitBias to nil") } if d.Next() == jx.Null { if err := d.Null(); err != nil { return err } - var v CreateChatCompletionRequestStop + var v CreateCompletionRequestLogitBias o.Value = v o.Set = true o.Null = true @@ -8674,6 +8825,7 @@ func (o *OptNilCreateChatCompletionRequestStop) Decode(d *jx.Decoder) error { } o.Set = true o.Null = false + o.Value = make(CreateCompletionRequestLogitBias) if err := o.Value.Decode(d); err != nil { return err } @@ -8681,14 +8833,14 @@ func (o *OptNilCreateChatCompletionRequestStop) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s OptNilCreateChatCompletionRequestStop) MarshalJSON() ([]byte, error) { +func (s OptNilCreateCompletionRequestLogitBias) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil } // UnmarshalJSON implements stdjson.Unmarshaler. -func (s *OptNilCreateChatCompletionRequestStop) UnmarshalJSON(data []byte) error { +func (s *OptNilCreateCompletionRequestLogitBias) UnmarshalJSON(data []byte) error { d := jx.DecodeBytes(data) return s.Decode(d) } diff --git a/examples/ex_openai/oas_schemas_gen.go b/examples/ex_openai/oas_schemas_gen.go index bab05afc6..660df8c7c 100644 --- a/examples/ex_openai/oas_schemas_gen.go +++ b/examples/ex_openai/oas_schemas_gen.go @@ -230,7 +230,7 @@ type CreateAnswerRequest struct { // or 100 should result in a ban or exclusive selection of the relevant token. // As an example, you can pass `{"50256": -100}` to prevent the <|endoftext|> token from being // generated. - LogitBias OptCreateAnswerRequestLogitBias `json:"logit_bias"` + LogitBias OptNilCreateAnswerRequestLogitBias `json:"logit_bias"` // A special boolean flag for showing metadata. If set to `true`, each document entry in the returned // JSON will contain a "metadata" field. // This flag only takes effect when `file` is set. @@ -312,7 +312,7 @@ func (s *CreateAnswerRequest) GetN() OptNilInt { } // GetLogitBias returns the value of LogitBias. -func (s *CreateAnswerRequest) GetLogitBias() OptCreateAnswerRequestLogitBias { +func (s *CreateAnswerRequest) GetLogitBias() OptNilCreateAnswerRequestLogitBias { return s.LogitBias } @@ -402,7 +402,7 @@ func (s *CreateAnswerRequest) SetN(val OptNilInt) { } // SetLogitBias sets the value of LogitBias. -func (s *CreateAnswerRequest) SetLogitBias(val OptCreateAnswerRequestLogitBias) { +func (s *CreateAnswerRequest) SetLogitBias(val OptNilCreateAnswerRequestLogitBias) { s.LogitBias = val } @@ -437,7 +437,16 @@ func (s *CreateAnswerRequest) SetUser(val OptString) { // or 100 should result in a ban or exclusive selection of the relevant token. // As an example, you can pass `{"50256": -100}` to prevent the <|endoftext|> token from being // generated. -type CreateAnswerRequestLogitBias struct{} +type CreateAnswerRequestLogitBias map[string]jx.Raw + +func (s *CreateAnswerRequestLogitBias) init() CreateAnswerRequestLogitBias { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} // Up to 4 sequences where the API will stop generating further tokens. The returned text will not // contain the stop sequence. @@ -646,7 +655,7 @@ type CreateChatCompletionRequest struct { // by the model prior to sampling. The exact effect will vary per model, but values between -1 and 1 // should decrease or increase likelihood of selection; values like -100 or 100 should result in a // ban or exclusive selection of the relevant token. - LogitBias OptCreateChatCompletionRequestLogitBias `json:"logit_bias"` + LogitBias OptNilCreateChatCompletionRequestLogitBias `json:"logit_bias"` // A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse. // [Learn more](/docs/guides/safety-best-practices/end-user-ids). User OptString `json:"user"` @@ -703,7 +712,7 @@ func (s *CreateChatCompletionRequest) GetFrequencyPenalty() OptNilFloat64 { } // GetLogitBias returns the value of LogitBias. -func (s *CreateChatCompletionRequest) GetLogitBias() OptCreateChatCompletionRequestLogitBias { +func (s *CreateChatCompletionRequest) GetLogitBias() OptNilCreateChatCompletionRequestLogitBias { return s.LogitBias } @@ -763,7 +772,7 @@ func (s *CreateChatCompletionRequest) SetFrequencyPenalty(val OptNilFloat64) { } // SetLogitBias sets the value of LogitBias. -func (s *CreateChatCompletionRequest) SetLogitBias(val OptCreateChatCompletionRequestLogitBias) { +func (s *CreateChatCompletionRequest) SetLogitBias(val OptNilCreateChatCompletionRequestLogitBias) { s.LogitBias = val } @@ -778,7 +787,16 @@ func (s *CreateChatCompletionRequest) SetUser(val OptString) { // by the model prior to sampling. The exact effect will vary per model, but values between -1 and 1 // should decrease or increase likelihood of selection; values like -100 or 100 should result in a // ban or exclusive selection of the relevant token. -type CreateChatCompletionRequestLogitBias struct{} +type CreateChatCompletionRequestLogitBias map[string]jx.Raw + +func (s *CreateChatCompletionRequestLogitBias) init() CreateChatCompletionRequestLogitBias { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} // Up to 4 sequences where the API will stop generating further tokens. // CreateChatCompletionRequestStop represents sum type. @@ -1039,7 +1057,7 @@ type CreateClassificationRequest struct { // or 100 should result in a ban or exclusive selection of the relevant token. // As an example, you can pass `{"50256": -100}` to prevent the <|endoftext|> token from being // generated. - LogitBias OptCreateClassificationRequestLogitBias `json:"logit_bias"` + LogitBias OptNilCreateClassificationRequestLogitBias `json:"logit_bias"` // If set to `true`, the returned JSON will include a "prompt" field containing the final prompt that // was used to request a completion. This is mainly useful for debugging purposes. ReturnPrompt OptNilBool `json:"return_prompt"` @@ -1101,7 +1119,7 @@ func (s *CreateClassificationRequest) GetMaxExamples() OptNilInt { } // GetLogitBias returns the value of LogitBias. -func (s *CreateClassificationRequest) GetLogitBias() OptCreateClassificationRequestLogitBias { +func (s *CreateClassificationRequest) GetLogitBias() OptNilCreateClassificationRequestLogitBias { return s.LogitBias } @@ -1171,7 +1189,7 @@ func (s *CreateClassificationRequest) SetMaxExamples(val OptNilInt) { } // SetLogitBias sets the value of LogitBias. -func (s *CreateClassificationRequest) SetLogitBias(val OptCreateClassificationRequestLogitBias) { +func (s *CreateClassificationRequest) SetLogitBias(val OptNilCreateClassificationRequestLogitBias) { s.LogitBias = val } @@ -1206,7 +1224,16 @@ func (s *CreateClassificationRequest) SetUser(val OptString) { // or 100 should result in a ban or exclusive selection of the relevant token. // As an example, you can pass `{"50256": -100}` to prevent the <|endoftext|> token from being // generated. -type CreateClassificationRequestLogitBias struct{} +type CreateClassificationRequestLogitBias map[string]jx.Raw + +func (s *CreateClassificationRequestLogitBias) init() CreateClassificationRequestLogitBias { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} // Ref: #/components/schemas/CreateClassificationResponse type CreateClassificationResponse struct { @@ -1387,7 +1414,7 @@ type CreateCompletionRequest struct { // or 100 should result in a ban or exclusive selection of the relevant token. // As an example, you can pass `{"50256": -100}` to prevent the <|endoftext|> token from being // generated. - LogitBias OptCreateCompletionRequestLogitBias `json:"logit_bias"` + LogitBias OptNilCreateCompletionRequestLogitBias `json:"logit_bias"` // A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse. // [Learn more](/docs/guides/safety-best-practices/end-user-ids). User OptString `json:"user"` @@ -1464,7 +1491,7 @@ func (s *CreateCompletionRequest) GetBestOf() OptNilInt { } // GetLogitBias returns the value of LogitBias. -func (s *CreateCompletionRequest) GetLogitBias() OptCreateCompletionRequestLogitBias { +func (s *CreateCompletionRequest) GetLogitBias() OptNilCreateCompletionRequestLogitBias { return s.LogitBias } @@ -1544,7 +1571,7 @@ func (s *CreateCompletionRequest) SetBestOf(val OptNilInt) { } // SetLogitBias sets the value of LogitBias. -func (s *CreateCompletionRequest) SetLogitBias(val OptCreateCompletionRequestLogitBias) { +func (s *CreateCompletionRequest) SetLogitBias(val OptNilCreateCompletionRequestLogitBias) { s.LogitBias = val } @@ -1564,7 +1591,16 @@ func (s *CreateCompletionRequest) SetUser(val OptString) { // or 100 should result in a ban or exclusive selection of the relevant token. // As an example, you can pass `{"50256": -100}` to prevent the <|endoftext|> token from being // generated. -type CreateCompletionRequestLogitBias struct{} +type CreateCompletionRequestLogitBias map[string]jx.Raw + +func (s *CreateCompletionRequestLogitBias) init() CreateCompletionRequestLogitBias { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} // The prompt(s) to generate completions for, encoded as a string, array of strings, array of tokens, // or array of token arrays. @@ -1898,7 +1934,16 @@ func (s *CreateCompletionResponseChoicesItemLogprobs) SetTextOffset(val []int) { s.TextOffset = val } -type CreateCompletionResponseChoicesItemLogprobsTopLogprobsItem struct{} +type CreateCompletionResponseChoicesItemLogprobsTopLogprobsItem map[string]jx.Raw + +func (s *CreateCompletionResponseChoicesItemLogprobsTopLogprobsItem) init() CreateCompletionResponseChoicesItemLogprobsTopLogprobsItem { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} type CreateCompletionResponseUsage struct { PromptTokens int `json:"prompt_tokens"` @@ -2160,7 +2205,16 @@ func (s *CreateEditResponseChoicesItemLogprobs) SetTextOffset(val []int) { s.TextOffset = val } -type CreateEditResponseChoicesItemLogprobsTopLogprobsItem struct{} +type CreateEditResponseChoicesItemLogprobsTopLogprobsItem map[string]jx.Raw + +func (s *CreateEditResponseChoicesItemLogprobsTopLogprobsItem) init() CreateEditResponseChoicesItemLogprobsTopLogprobsItem { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} type CreateEditResponseUsage struct { PromptTokens int `json:"prompt_tokens"` @@ -4132,38 +4186,38 @@ func (o OptChatCompletionResponseMessage) Or(d ChatCompletionResponseMessage) Ch return d } -// NewOptCreateAnswerRequestLogitBias returns new OptCreateAnswerRequestLogitBias with value set to v. -func NewOptCreateAnswerRequestLogitBias(v *CreateAnswerRequestLogitBias) OptCreateAnswerRequestLogitBias { - return OptCreateAnswerRequestLogitBias{ +// NewOptCreateChatCompletionResponseUsage returns new OptCreateChatCompletionResponseUsage with value set to v. +func NewOptCreateChatCompletionResponseUsage(v CreateChatCompletionResponseUsage) OptCreateChatCompletionResponseUsage { + return OptCreateChatCompletionResponseUsage{ Value: v, Set: true, } } -// OptCreateAnswerRequestLogitBias is optional *CreateAnswerRequestLogitBias. -type OptCreateAnswerRequestLogitBias struct { - Value *CreateAnswerRequestLogitBias +// OptCreateChatCompletionResponseUsage is optional CreateChatCompletionResponseUsage. +type OptCreateChatCompletionResponseUsage struct { + Value CreateChatCompletionResponseUsage Set bool } -// IsSet returns true if OptCreateAnswerRequestLogitBias was set. -func (o OptCreateAnswerRequestLogitBias) IsSet() bool { return o.Set } +// IsSet returns true if OptCreateChatCompletionResponseUsage was set. +func (o OptCreateChatCompletionResponseUsage) IsSet() bool { return o.Set } // Reset unsets value. -func (o *OptCreateAnswerRequestLogitBias) Reset() { - var v *CreateAnswerRequestLogitBias +func (o *OptCreateChatCompletionResponseUsage) Reset() { + var v CreateChatCompletionResponseUsage o.Value = v o.Set = false } // SetTo sets value to v. -func (o *OptCreateAnswerRequestLogitBias) SetTo(v *CreateAnswerRequestLogitBias) { +func (o *OptCreateChatCompletionResponseUsage) SetTo(v CreateChatCompletionResponseUsage) { o.Set = true o.Value = v } // Get returns value and boolean that denotes whether value was set. -func (o OptCreateAnswerRequestLogitBias) Get() (v *CreateAnswerRequestLogitBias, ok bool) { +func (o OptCreateChatCompletionResponseUsage) Get() (v CreateChatCompletionResponseUsage, ok bool) { if !o.Set { return v, false } @@ -4171,45 +4225,45 @@ func (o OptCreateAnswerRequestLogitBias) Get() (v *CreateAnswerRequestLogitBias, } // Or returns value if set, or given parameter if does not. -func (o OptCreateAnswerRequestLogitBias) Or(d *CreateAnswerRequestLogitBias) *CreateAnswerRequestLogitBias { +func (o OptCreateChatCompletionResponseUsage) Or(d CreateChatCompletionResponseUsage) CreateChatCompletionResponseUsage { if v, ok := o.Get(); ok { return v } return d } -// NewOptCreateChatCompletionRequestLogitBias returns new OptCreateChatCompletionRequestLogitBias with value set to v. -func NewOptCreateChatCompletionRequestLogitBias(v *CreateChatCompletionRequestLogitBias) OptCreateChatCompletionRequestLogitBias { - return OptCreateChatCompletionRequestLogitBias{ +// NewOptCreateCompletionResponseUsage returns new OptCreateCompletionResponseUsage with value set to v. +func NewOptCreateCompletionResponseUsage(v CreateCompletionResponseUsage) OptCreateCompletionResponseUsage { + return OptCreateCompletionResponseUsage{ Value: v, Set: true, } } -// OptCreateChatCompletionRequestLogitBias is optional *CreateChatCompletionRequestLogitBias. -type OptCreateChatCompletionRequestLogitBias struct { - Value *CreateChatCompletionRequestLogitBias +// OptCreateCompletionResponseUsage is optional CreateCompletionResponseUsage. +type OptCreateCompletionResponseUsage struct { + Value CreateCompletionResponseUsage Set bool } -// IsSet returns true if OptCreateChatCompletionRequestLogitBias was set. -func (o OptCreateChatCompletionRequestLogitBias) IsSet() bool { return o.Set } +// IsSet returns true if OptCreateCompletionResponseUsage was set. +func (o OptCreateCompletionResponseUsage) IsSet() bool { return o.Set } // Reset unsets value. -func (o *OptCreateChatCompletionRequestLogitBias) Reset() { - var v *CreateChatCompletionRequestLogitBias +func (o *OptCreateCompletionResponseUsage) Reset() { + var v CreateCompletionResponseUsage o.Value = v o.Set = false } // SetTo sets value to v. -func (o *OptCreateChatCompletionRequestLogitBias) SetTo(v *CreateChatCompletionRequestLogitBias) { +func (o *OptCreateCompletionResponseUsage) SetTo(v CreateCompletionResponseUsage) { o.Set = true o.Value = v } // Get returns value and boolean that denotes whether value was set. -func (o OptCreateChatCompletionRequestLogitBias) Get() (v *CreateChatCompletionRequestLogitBias, ok bool) { +func (o OptCreateCompletionResponseUsage) Get() (v CreateCompletionResponseUsage, ok bool) { if !o.Set { return v, false } @@ -4217,45 +4271,45 @@ func (o OptCreateChatCompletionRequestLogitBias) Get() (v *CreateChatCompletionR } // Or returns value if set, or given parameter if does not. -func (o OptCreateChatCompletionRequestLogitBias) Or(d *CreateChatCompletionRequestLogitBias) *CreateChatCompletionRequestLogitBias { +func (o OptCreateCompletionResponseUsage) Or(d CreateCompletionResponseUsage) CreateCompletionResponseUsage { if v, ok := o.Get(); ok { return v } return d } -// NewOptCreateChatCompletionResponseUsage returns new OptCreateChatCompletionResponseUsage with value set to v. -func NewOptCreateChatCompletionResponseUsage(v CreateChatCompletionResponseUsage) OptCreateChatCompletionResponseUsage { - return OptCreateChatCompletionResponseUsage{ +// NewOptFloat64 returns new OptFloat64 with value set to v. +func NewOptFloat64(v float64) OptFloat64 { + return OptFloat64{ Value: v, Set: true, } } -// OptCreateChatCompletionResponseUsage is optional CreateChatCompletionResponseUsage. -type OptCreateChatCompletionResponseUsage struct { - Value CreateChatCompletionResponseUsage +// OptFloat64 is optional float64. +type OptFloat64 struct { + Value float64 Set bool } -// IsSet returns true if OptCreateChatCompletionResponseUsage was set. -func (o OptCreateChatCompletionResponseUsage) IsSet() bool { return o.Set } +// IsSet returns true if OptFloat64 was set. +func (o OptFloat64) IsSet() bool { return o.Set } // Reset unsets value. -func (o *OptCreateChatCompletionResponseUsage) Reset() { - var v CreateChatCompletionResponseUsage +func (o *OptFloat64) Reset() { + var v float64 o.Value = v o.Set = false } // SetTo sets value to v. -func (o *OptCreateChatCompletionResponseUsage) SetTo(v CreateChatCompletionResponseUsage) { +func (o *OptFloat64) SetTo(v float64) { o.Set = true o.Value = v } // Get returns value and boolean that denotes whether value was set. -func (o OptCreateChatCompletionResponseUsage) Get() (v CreateChatCompletionResponseUsage, ok bool) { +func (o OptFloat64) Get() (v float64, ok bool) { if !o.Set { return v, false } @@ -4263,45 +4317,45 @@ func (o OptCreateChatCompletionResponseUsage) Get() (v CreateChatCompletionRespo } // Or returns value if set, or given parameter if does not. -func (o OptCreateChatCompletionResponseUsage) Or(d CreateChatCompletionResponseUsage) CreateChatCompletionResponseUsage { +func (o OptFloat64) Or(d float64) float64 { if v, ok := o.Get(); ok { return v } return d } -// NewOptCreateClassificationRequestLogitBias returns new OptCreateClassificationRequestLogitBias with value set to v. -func NewOptCreateClassificationRequestLogitBias(v *CreateClassificationRequestLogitBias) OptCreateClassificationRequestLogitBias { - return OptCreateClassificationRequestLogitBias{ +// NewOptInt returns new OptInt with value set to v. +func NewOptInt(v int) OptInt { + return OptInt{ Value: v, Set: true, } } -// OptCreateClassificationRequestLogitBias is optional *CreateClassificationRequestLogitBias. -type OptCreateClassificationRequestLogitBias struct { - Value *CreateClassificationRequestLogitBias +// OptInt is optional int. +type OptInt struct { + Value int Set bool } -// IsSet returns true if OptCreateClassificationRequestLogitBias was set. -func (o OptCreateClassificationRequestLogitBias) IsSet() bool { return o.Set } +// IsSet returns true if OptInt was set. +func (o OptInt) IsSet() bool { return o.Set } // Reset unsets value. -func (o *OptCreateClassificationRequestLogitBias) Reset() { - var v *CreateClassificationRequestLogitBias +func (o *OptInt) Reset() { + var v int o.Value = v o.Set = false } // SetTo sets value to v. -func (o *OptCreateClassificationRequestLogitBias) SetTo(v *CreateClassificationRequestLogitBias) { +func (o *OptInt) SetTo(v int) { o.Set = true o.Value = v } // Get returns value and boolean that denotes whether value was set. -func (o OptCreateClassificationRequestLogitBias) Get() (v *CreateClassificationRequestLogitBias, ok bool) { +func (o OptInt) Get() (v int, ok bool) { if !o.Set { return v, false } @@ -4309,45 +4363,45 @@ func (o OptCreateClassificationRequestLogitBias) Get() (v *CreateClassificationR } // Or returns value if set, or given parameter if does not. -func (o OptCreateClassificationRequestLogitBias) Or(d *CreateClassificationRequestLogitBias) *CreateClassificationRequestLogitBias { +func (o OptInt) Or(d int) int { if v, ok := o.Get(); ok { return v } return d } -// NewOptCreateCompletionRequestLogitBias returns new OptCreateCompletionRequestLogitBias with value set to v. -func NewOptCreateCompletionRequestLogitBias(v *CreateCompletionRequestLogitBias) OptCreateCompletionRequestLogitBias { - return OptCreateCompletionRequestLogitBias{ +// NewOptMultipartFile returns new OptMultipartFile with value set to v. +func NewOptMultipartFile(v ht.MultipartFile) OptMultipartFile { + return OptMultipartFile{ Value: v, Set: true, } } -// OptCreateCompletionRequestLogitBias is optional *CreateCompletionRequestLogitBias. -type OptCreateCompletionRequestLogitBias struct { - Value *CreateCompletionRequestLogitBias +// OptMultipartFile is optional ht.MultipartFile. +type OptMultipartFile struct { + Value ht.MultipartFile Set bool } -// IsSet returns true if OptCreateCompletionRequestLogitBias was set. -func (o OptCreateCompletionRequestLogitBias) IsSet() bool { return o.Set } +// IsSet returns true if OptMultipartFile was set. +func (o OptMultipartFile) IsSet() bool { return o.Set } // Reset unsets value. -func (o *OptCreateCompletionRequestLogitBias) Reset() { - var v *CreateCompletionRequestLogitBias +func (o *OptMultipartFile) Reset() { + var v ht.MultipartFile o.Value = v o.Set = false } // SetTo sets value to v. -func (o *OptCreateCompletionRequestLogitBias) SetTo(v *CreateCompletionRequestLogitBias) { +func (o *OptMultipartFile) SetTo(v ht.MultipartFile) { o.Set = true o.Value = v } // Get returns value and boolean that denotes whether value was set. -func (o OptCreateCompletionRequestLogitBias) Get() (v *CreateCompletionRequestLogitBias, ok bool) { +func (o OptMultipartFile) Get() (v ht.MultipartFile, ok bool) { if !o.Set { return v, false } @@ -4355,45 +4409,62 @@ func (o OptCreateCompletionRequestLogitBias) Get() (v *CreateCompletionRequestLo } // Or returns value if set, or given parameter if does not. -func (o OptCreateCompletionRequestLogitBias) Or(d *CreateCompletionRequestLogitBias) *CreateCompletionRequestLogitBias { +func (o OptMultipartFile) Or(d ht.MultipartFile) ht.MultipartFile { if v, ok := o.Get(); ok { return v } return d } -// NewOptCreateCompletionResponseUsage returns new OptCreateCompletionResponseUsage with value set to v. -func NewOptCreateCompletionResponseUsage(v CreateCompletionResponseUsage) OptCreateCompletionResponseUsage { - return OptCreateCompletionResponseUsage{ +// NewOptNilAnyArray returns new OptNilAnyArray with value set to v. +func NewOptNilAnyArray(v []jx.Raw) OptNilAnyArray { + return OptNilAnyArray{ Value: v, Set: true, } } -// OptCreateCompletionResponseUsage is optional CreateCompletionResponseUsage. -type OptCreateCompletionResponseUsage struct { - Value CreateCompletionResponseUsage +// OptNilAnyArray is optional nullable []jx.Raw. +type OptNilAnyArray struct { + Value []jx.Raw Set bool + Null bool } -// IsSet returns true if OptCreateCompletionResponseUsage was set. -func (o OptCreateCompletionResponseUsage) IsSet() bool { return o.Set } +// IsSet returns true if OptNilAnyArray was set. +func (o OptNilAnyArray) IsSet() bool { return o.Set } // Reset unsets value. -func (o *OptCreateCompletionResponseUsage) Reset() { - var v CreateCompletionResponseUsage +func (o *OptNilAnyArray) Reset() { + var v []jx.Raw o.Value = v o.Set = false + o.Null = false } // SetTo sets value to v. -func (o *OptCreateCompletionResponseUsage) SetTo(v CreateCompletionResponseUsage) { +func (o *OptNilAnyArray) SetTo(v []jx.Raw) { o.Set = true + o.Null = false + o.Value = v +} + +// IsSet returns true if value is Null. +func (o OptNilAnyArray) IsNull() bool { return o.Null } + +// SetNull sets value to null. +func (o *OptNilAnyArray) SetToNull() { + o.Set = true + o.Null = true + var v []jx.Raw o.Value = v } // Get returns value and boolean that denotes whether value was set. -func (o OptCreateCompletionResponseUsage) Get() (v CreateCompletionResponseUsage, ok bool) { +func (o OptNilAnyArray) Get() (v []jx.Raw, ok bool) { + if o.Null { + return v, false + } if !o.Set { return v, false } @@ -4401,45 +4472,62 @@ func (o OptCreateCompletionResponseUsage) Get() (v CreateCompletionResponseUsage } // Or returns value if set, or given parameter if does not. -func (o OptCreateCompletionResponseUsage) Or(d CreateCompletionResponseUsage) CreateCompletionResponseUsage { +func (o OptNilAnyArray) Or(d []jx.Raw) []jx.Raw { if v, ok := o.Get(); ok { return v } return d } -// NewOptFloat64 returns new OptFloat64 with value set to v. -func NewOptFloat64(v float64) OptFloat64 { - return OptFloat64{ +// NewOptNilBool returns new OptNilBool with value set to v. +func NewOptNilBool(v bool) OptNilBool { + return OptNilBool{ Value: v, Set: true, } } -// OptFloat64 is optional float64. -type OptFloat64 struct { - Value float64 +// OptNilBool is optional nullable bool. +type OptNilBool struct { + Value bool Set bool + Null bool } -// IsSet returns true if OptFloat64 was set. -func (o OptFloat64) IsSet() bool { return o.Set } +// IsSet returns true if OptNilBool was set. +func (o OptNilBool) IsSet() bool { return o.Set } // Reset unsets value. -func (o *OptFloat64) Reset() { - var v float64 +func (o *OptNilBool) Reset() { + var v bool o.Value = v o.Set = false + o.Null = false } // SetTo sets value to v. -func (o *OptFloat64) SetTo(v float64) { +func (o *OptNilBool) SetTo(v bool) { + o.Set = true + o.Null = false + o.Value = v +} + +// IsSet returns true if value is Null. +func (o OptNilBool) IsNull() bool { return o.Null } + +// SetNull sets value to null. +func (o *OptNilBool) SetToNull() { o.Set = true + o.Null = true + var v bool o.Value = v } // Get returns value and boolean that denotes whether value was set. -func (o OptFloat64) Get() (v float64, ok bool) { +func (o OptNilBool) Get() (v bool, ok bool) { + if o.Null { + return v, false + } if !o.Set { return v, false } @@ -4447,45 +4535,62 @@ func (o OptFloat64) Get() (v float64, ok bool) { } // Or returns value if set, or given parameter if does not. -func (o OptFloat64) Or(d float64) float64 { +func (o OptNilBool) Or(d bool) bool { if v, ok := o.Get(); ok { return v } return d } -// NewOptInt returns new OptInt with value set to v. -func NewOptInt(v int) OptInt { - return OptInt{ +// NewOptNilCreateAnswerRequestLogitBias returns new OptNilCreateAnswerRequestLogitBias with value set to v. +func NewOptNilCreateAnswerRequestLogitBias(v CreateAnswerRequestLogitBias) OptNilCreateAnswerRequestLogitBias { + return OptNilCreateAnswerRequestLogitBias{ Value: v, Set: true, } } -// OptInt is optional int. -type OptInt struct { - Value int +// OptNilCreateAnswerRequestLogitBias is optional nullable CreateAnswerRequestLogitBias. +type OptNilCreateAnswerRequestLogitBias struct { + Value CreateAnswerRequestLogitBias Set bool + Null bool } -// IsSet returns true if OptInt was set. -func (o OptInt) IsSet() bool { return o.Set } +// IsSet returns true if OptNilCreateAnswerRequestLogitBias was set. +func (o OptNilCreateAnswerRequestLogitBias) IsSet() bool { return o.Set } // Reset unsets value. -func (o *OptInt) Reset() { - var v int +func (o *OptNilCreateAnswerRequestLogitBias) Reset() { + var v CreateAnswerRequestLogitBias o.Value = v o.Set = false + o.Null = false } // SetTo sets value to v. -func (o *OptInt) SetTo(v int) { +func (o *OptNilCreateAnswerRequestLogitBias) SetTo(v CreateAnswerRequestLogitBias) { o.Set = true + o.Null = false + o.Value = v +} + +// IsSet returns true if value is Null. +func (o OptNilCreateAnswerRequestLogitBias) IsNull() bool { return o.Null } + +// SetNull sets value to null. +func (o *OptNilCreateAnswerRequestLogitBias) SetToNull() { + o.Set = true + o.Null = true + var v CreateAnswerRequestLogitBias o.Value = v } // Get returns value and boolean that denotes whether value was set. -func (o OptInt) Get() (v int, ok bool) { +func (o OptNilCreateAnswerRequestLogitBias) Get() (v CreateAnswerRequestLogitBias, ok bool) { + if o.Null { + return v, false + } if !o.Set { return v, false } @@ -4493,45 +4598,62 @@ func (o OptInt) Get() (v int, ok bool) { } // Or returns value if set, or given parameter if does not. -func (o OptInt) Or(d int) int { +func (o OptNilCreateAnswerRequestLogitBias) Or(d CreateAnswerRequestLogitBias) CreateAnswerRequestLogitBias { if v, ok := o.Get(); ok { return v } return d } -// NewOptMultipartFile returns new OptMultipartFile with value set to v. -func NewOptMultipartFile(v ht.MultipartFile) OptMultipartFile { - return OptMultipartFile{ +// NewOptNilCreateAnswerRequestStop returns new OptNilCreateAnswerRequestStop with value set to v. +func NewOptNilCreateAnswerRequestStop(v CreateAnswerRequestStop) OptNilCreateAnswerRequestStop { + return OptNilCreateAnswerRequestStop{ Value: v, Set: true, } } -// OptMultipartFile is optional ht.MultipartFile. -type OptMultipartFile struct { - Value ht.MultipartFile +// OptNilCreateAnswerRequestStop is optional nullable CreateAnswerRequestStop. +type OptNilCreateAnswerRequestStop struct { + Value CreateAnswerRequestStop Set bool + Null bool } -// IsSet returns true if OptMultipartFile was set. -func (o OptMultipartFile) IsSet() bool { return o.Set } +// IsSet returns true if OptNilCreateAnswerRequestStop was set. +func (o OptNilCreateAnswerRequestStop) IsSet() bool { return o.Set } // Reset unsets value. -func (o *OptMultipartFile) Reset() { - var v ht.MultipartFile +func (o *OptNilCreateAnswerRequestStop) Reset() { + var v CreateAnswerRequestStop o.Value = v o.Set = false + o.Null = false } // SetTo sets value to v. -func (o *OptMultipartFile) SetTo(v ht.MultipartFile) { +func (o *OptNilCreateAnswerRequestStop) SetTo(v CreateAnswerRequestStop) { + o.Set = true + o.Null = false + o.Value = v +} + +// IsSet returns true if value is Null. +func (o OptNilCreateAnswerRequestStop) IsNull() bool { return o.Null } + +// SetNull sets value to null. +func (o *OptNilCreateAnswerRequestStop) SetToNull() { o.Set = true + o.Null = true + var v CreateAnswerRequestStop o.Value = v } // Get returns value and boolean that denotes whether value was set. -func (o OptMultipartFile) Get() (v ht.MultipartFile, ok bool) { +func (o OptNilCreateAnswerRequestStop) Get() (v CreateAnswerRequestStop, ok bool) { + if o.Null { + return v, false + } if !o.Set { return v, false } @@ -4539,59 +4661,59 @@ func (o OptMultipartFile) Get() (v ht.MultipartFile, ok bool) { } // Or returns value if set, or given parameter if does not. -func (o OptMultipartFile) Or(d ht.MultipartFile) ht.MultipartFile { +func (o OptNilCreateAnswerRequestStop) Or(d CreateAnswerRequestStop) CreateAnswerRequestStop { if v, ok := o.Get(); ok { return v } return d } -// NewOptNilAnyArray returns new OptNilAnyArray with value set to v. -func NewOptNilAnyArray(v []jx.Raw) OptNilAnyArray { - return OptNilAnyArray{ +// NewOptNilCreateChatCompletionRequestLogitBias returns new OptNilCreateChatCompletionRequestLogitBias with value set to v. +func NewOptNilCreateChatCompletionRequestLogitBias(v CreateChatCompletionRequestLogitBias) OptNilCreateChatCompletionRequestLogitBias { + return OptNilCreateChatCompletionRequestLogitBias{ Value: v, Set: true, } } -// OptNilAnyArray is optional nullable []jx.Raw. -type OptNilAnyArray struct { - Value []jx.Raw +// OptNilCreateChatCompletionRequestLogitBias is optional nullable CreateChatCompletionRequestLogitBias. +type OptNilCreateChatCompletionRequestLogitBias struct { + Value CreateChatCompletionRequestLogitBias Set bool Null bool } -// IsSet returns true if OptNilAnyArray was set. -func (o OptNilAnyArray) IsSet() bool { return o.Set } +// IsSet returns true if OptNilCreateChatCompletionRequestLogitBias was set. +func (o OptNilCreateChatCompletionRequestLogitBias) IsSet() bool { return o.Set } // Reset unsets value. -func (o *OptNilAnyArray) Reset() { - var v []jx.Raw +func (o *OptNilCreateChatCompletionRequestLogitBias) Reset() { + var v CreateChatCompletionRequestLogitBias o.Value = v o.Set = false o.Null = false } // SetTo sets value to v. -func (o *OptNilAnyArray) SetTo(v []jx.Raw) { +func (o *OptNilCreateChatCompletionRequestLogitBias) SetTo(v CreateChatCompletionRequestLogitBias) { o.Set = true o.Null = false o.Value = v } // IsSet returns true if value is Null. -func (o OptNilAnyArray) IsNull() bool { return o.Null } +func (o OptNilCreateChatCompletionRequestLogitBias) IsNull() bool { return o.Null } // SetNull sets value to null. -func (o *OptNilAnyArray) SetToNull() { +func (o *OptNilCreateChatCompletionRequestLogitBias) SetToNull() { o.Set = true o.Null = true - var v []jx.Raw + var v CreateChatCompletionRequestLogitBias o.Value = v } // Get returns value and boolean that denotes whether value was set. -func (o OptNilAnyArray) Get() (v []jx.Raw, ok bool) { +func (o OptNilCreateChatCompletionRequestLogitBias) Get() (v CreateChatCompletionRequestLogitBias, ok bool) { if o.Null { return v, false } @@ -4602,59 +4724,59 @@ func (o OptNilAnyArray) Get() (v []jx.Raw, ok bool) { } // Or returns value if set, or given parameter if does not. -func (o OptNilAnyArray) Or(d []jx.Raw) []jx.Raw { +func (o OptNilCreateChatCompletionRequestLogitBias) Or(d CreateChatCompletionRequestLogitBias) CreateChatCompletionRequestLogitBias { if v, ok := o.Get(); ok { return v } return d } -// NewOptNilBool returns new OptNilBool with value set to v. -func NewOptNilBool(v bool) OptNilBool { - return OptNilBool{ +// NewOptNilCreateChatCompletionRequestStop returns new OptNilCreateChatCompletionRequestStop with value set to v. +func NewOptNilCreateChatCompletionRequestStop(v CreateChatCompletionRequestStop) OptNilCreateChatCompletionRequestStop { + return OptNilCreateChatCompletionRequestStop{ Value: v, Set: true, } } -// OptNilBool is optional nullable bool. -type OptNilBool struct { - Value bool +// OptNilCreateChatCompletionRequestStop is optional nullable CreateChatCompletionRequestStop. +type OptNilCreateChatCompletionRequestStop struct { + Value CreateChatCompletionRequestStop Set bool Null bool } -// IsSet returns true if OptNilBool was set. -func (o OptNilBool) IsSet() bool { return o.Set } +// IsSet returns true if OptNilCreateChatCompletionRequestStop was set. +func (o OptNilCreateChatCompletionRequestStop) IsSet() bool { return o.Set } // Reset unsets value. -func (o *OptNilBool) Reset() { - var v bool +func (o *OptNilCreateChatCompletionRequestStop) Reset() { + var v CreateChatCompletionRequestStop o.Value = v o.Set = false o.Null = false } // SetTo sets value to v. -func (o *OptNilBool) SetTo(v bool) { +func (o *OptNilCreateChatCompletionRequestStop) SetTo(v CreateChatCompletionRequestStop) { o.Set = true o.Null = false o.Value = v } // IsSet returns true if value is Null. -func (o OptNilBool) IsNull() bool { return o.Null } +func (o OptNilCreateChatCompletionRequestStop) IsNull() bool { return o.Null } // SetNull sets value to null. -func (o *OptNilBool) SetToNull() { +func (o *OptNilCreateChatCompletionRequestStop) SetToNull() { o.Set = true o.Null = true - var v bool + var v CreateChatCompletionRequestStop o.Value = v } // Get returns value and boolean that denotes whether value was set. -func (o OptNilBool) Get() (v bool, ok bool) { +func (o OptNilCreateChatCompletionRequestStop) Get() (v CreateChatCompletionRequestStop, ok bool) { if o.Null { return v, false } @@ -4665,59 +4787,59 @@ func (o OptNilBool) Get() (v bool, ok bool) { } // Or returns value if set, or given parameter if does not. -func (o OptNilBool) Or(d bool) bool { +func (o OptNilCreateChatCompletionRequestStop) Or(d CreateChatCompletionRequestStop) CreateChatCompletionRequestStop { if v, ok := o.Get(); ok { return v } return d } -// NewOptNilCreateAnswerRequestStop returns new OptNilCreateAnswerRequestStop with value set to v. -func NewOptNilCreateAnswerRequestStop(v CreateAnswerRequestStop) OptNilCreateAnswerRequestStop { - return OptNilCreateAnswerRequestStop{ +// NewOptNilCreateClassificationRequestLogitBias returns new OptNilCreateClassificationRequestLogitBias with value set to v. +func NewOptNilCreateClassificationRequestLogitBias(v CreateClassificationRequestLogitBias) OptNilCreateClassificationRequestLogitBias { + return OptNilCreateClassificationRequestLogitBias{ Value: v, Set: true, } } -// OptNilCreateAnswerRequestStop is optional nullable CreateAnswerRequestStop. -type OptNilCreateAnswerRequestStop struct { - Value CreateAnswerRequestStop +// OptNilCreateClassificationRequestLogitBias is optional nullable CreateClassificationRequestLogitBias. +type OptNilCreateClassificationRequestLogitBias struct { + Value CreateClassificationRequestLogitBias Set bool Null bool } -// IsSet returns true if OptNilCreateAnswerRequestStop was set. -func (o OptNilCreateAnswerRequestStop) IsSet() bool { return o.Set } +// IsSet returns true if OptNilCreateClassificationRequestLogitBias was set. +func (o OptNilCreateClassificationRequestLogitBias) IsSet() bool { return o.Set } // Reset unsets value. -func (o *OptNilCreateAnswerRequestStop) Reset() { - var v CreateAnswerRequestStop +func (o *OptNilCreateClassificationRequestLogitBias) Reset() { + var v CreateClassificationRequestLogitBias o.Value = v o.Set = false o.Null = false } // SetTo sets value to v. -func (o *OptNilCreateAnswerRequestStop) SetTo(v CreateAnswerRequestStop) { +func (o *OptNilCreateClassificationRequestLogitBias) SetTo(v CreateClassificationRequestLogitBias) { o.Set = true o.Null = false o.Value = v } // IsSet returns true if value is Null. -func (o OptNilCreateAnswerRequestStop) IsNull() bool { return o.Null } +func (o OptNilCreateClassificationRequestLogitBias) IsNull() bool { return o.Null } // SetNull sets value to null. -func (o *OptNilCreateAnswerRequestStop) SetToNull() { +func (o *OptNilCreateClassificationRequestLogitBias) SetToNull() { o.Set = true o.Null = true - var v CreateAnswerRequestStop + var v CreateClassificationRequestLogitBias o.Value = v } // Get returns value and boolean that denotes whether value was set. -func (o OptNilCreateAnswerRequestStop) Get() (v CreateAnswerRequestStop, ok bool) { +func (o OptNilCreateClassificationRequestLogitBias) Get() (v CreateClassificationRequestLogitBias, ok bool) { if o.Null { return v, false } @@ -4728,59 +4850,59 @@ func (o OptNilCreateAnswerRequestStop) Get() (v CreateAnswerRequestStop, ok bool } // Or returns value if set, or given parameter if does not. -func (o OptNilCreateAnswerRequestStop) Or(d CreateAnswerRequestStop) CreateAnswerRequestStop { +func (o OptNilCreateClassificationRequestLogitBias) Or(d CreateClassificationRequestLogitBias) CreateClassificationRequestLogitBias { if v, ok := o.Get(); ok { return v } return d } -// NewOptNilCreateChatCompletionRequestStop returns new OptNilCreateChatCompletionRequestStop with value set to v. -func NewOptNilCreateChatCompletionRequestStop(v CreateChatCompletionRequestStop) OptNilCreateChatCompletionRequestStop { - return OptNilCreateChatCompletionRequestStop{ +// NewOptNilCreateCompletionRequestLogitBias returns new OptNilCreateCompletionRequestLogitBias with value set to v. +func NewOptNilCreateCompletionRequestLogitBias(v CreateCompletionRequestLogitBias) OptNilCreateCompletionRequestLogitBias { + return OptNilCreateCompletionRequestLogitBias{ Value: v, Set: true, } } -// OptNilCreateChatCompletionRequestStop is optional nullable CreateChatCompletionRequestStop. -type OptNilCreateChatCompletionRequestStop struct { - Value CreateChatCompletionRequestStop +// OptNilCreateCompletionRequestLogitBias is optional nullable CreateCompletionRequestLogitBias. +type OptNilCreateCompletionRequestLogitBias struct { + Value CreateCompletionRequestLogitBias Set bool Null bool } -// IsSet returns true if OptNilCreateChatCompletionRequestStop was set. -func (o OptNilCreateChatCompletionRequestStop) IsSet() bool { return o.Set } +// IsSet returns true if OptNilCreateCompletionRequestLogitBias was set. +func (o OptNilCreateCompletionRequestLogitBias) IsSet() bool { return o.Set } // Reset unsets value. -func (o *OptNilCreateChatCompletionRequestStop) Reset() { - var v CreateChatCompletionRequestStop +func (o *OptNilCreateCompletionRequestLogitBias) Reset() { + var v CreateCompletionRequestLogitBias o.Value = v o.Set = false o.Null = false } // SetTo sets value to v. -func (o *OptNilCreateChatCompletionRequestStop) SetTo(v CreateChatCompletionRequestStop) { +func (o *OptNilCreateCompletionRequestLogitBias) SetTo(v CreateCompletionRequestLogitBias) { o.Set = true o.Null = false o.Value = v } // IsSet returns true if value is Null. -func (o OptNilCreateChatCompletionRequestStop) IsNull() bool { return o.Null } +func (o OptNilCreateCompletionRequestLogitBias) IsNull() bool { return o.Null } // SetNull sets value to null. -func (o *OptNilCreateChatCompletionRequestStop) SetToNull() { +func (o *OptNilCreateCompletionRequestLogitBias) SetToNull() { o.Set = true o.Null = true - var v CreateChatCompletionRequestStop + var v CreateCompletionRequestLogitBias o.Value = v } // Get returns value and boolean that denotes whether value was set. -func (o OptNilCreateChatCompletionRequestStop) Get() (v CreateChatCompletionRequestStop, ok bool) { +func (o OptNilCreateCompletionRequestLogitBias) Get() (v CreateCompletionRequestLogitBias, ok bool) { if o.Null { return v, false } @@ -4791,7 +4913,7 @@ func (o OptNilCreateChatCompletionRequestStop) Get() (v CreateChatCompletionRequ } // Or returns value if set, or given parameter if does not. -func (o OptNilCreateChatCompletionRequestStop) Or(d CreateChatCompletionRequestStop) CreateChatCompletionRequestStop { +func (o OptNilCreateCompletionRequestLogitBias) Or(d CreateCompletionRequestLogitBias) CreateCompletionRequestLogitBias { if v, ok := o.Get(); ok { return v } diff --git a/examples/ex_telegram/oas_faker_gen.go b/examples/ex_telegram/oas_faker_gen.go index 64c6196d7..f43fb63ea 100644 --- a/examples/ex_telegram/oas_faker_gen.go +++ b/examples/ex_telegram/oas_faker_gen.go @@ -3,7 +3,10 @@ package api import ( + "fmt" "net/url" + + "github.com/go-faster/jx" ) // SetFake set fake values. @@ -424,6 +427,13 @@ func (s *BotCommandScopeDefault) SetFake() { // SetFake set fake values. func (s *CallbackGame) SetFake() { + var ( + elem jx.Raw + m map[string]jx.Raw = s.init() + ) + for i := 0; i < 0; i++ { + m[fmt.Sprintf("fake%d", i)] = elem + } } // SetFake set fake values. @@ -2002,8 +2012,8 @@ func (s *InlineKeyboardButton) SetFake() { } } { - { // Keep pointer nil to prevent infinite recursion. - s.CallbackGame = nil + { + s.CallbackGame.SetFake() } } { @@ -4354,8 +4364,8 @@ func (s *Message) SetFake() { } } { - { // Keep pointer nil to prevent infinite recursion. - s.VoiceChatStarted = nil + { + s.VoiceChatStarted.SetFake() } } { @@ -4468,6 +4478,15 @@ func (s *OptBotCommandScope) SetFake() { s.SetTo(elem) } +// SetFake set fake values. +func (s *OptCallbackGame) SetFake() { + var elem CallbackGame + { + elem.SetFake() + } + s.SetTo(elem) +} + // SetFake set fake values. func (s *OptCallbackQuery) SetFake() { var elem CallbackQuery @@ -5134,6 +5153,15 @@ func (s *OptVoiceChatScheduled) SetFake() { s.SetTo(elem) } +// SetFake set fake values. +func (s *OptVoiceChatStarted) SetFake() { + var elem VoiceChatStarted + { + elem.SetFake() + } + s.SetTo(elem) +} + // SetFake set fake values. func (s *OptWebhookInfo) SetFake() { var elem WebhookInfo @@ -8329,6 +8357,13 @@ func (s *VoiceChatScheduled) SetFake() { // SetFake set fake values. func (s *VoiceChatStarted) SetFake() { + var ( + elem jx.Raw + m map[string]jx.Raw = s.init() + ) + for i := 0; i < 0; i++ { + m[fmt.Sprintf("fake%d", i)] = elem + } } // SetFake set fake values. diff --git a/examples/ex_telegram/oas_json_gen.go b/examples/ex_telegram/oas_json_gen.go index 6515cd7f2..5938a4c0d 100644 --- a/examples/ex_telegram/oas_json_gen.go +++ b/examples/ex_telegram/oas_json_gen.go @@ -2705,29 +2705,43 @@ func (s *BotCommandScopeDefault) UnmarshalJSON(data []byte) error { } // Encode implements json.Marshaler. -func (s *CallbackGame) Encode(e *jx.Encoder) { +func (s CallbackGame) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *CallbackGame) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s CallbackGame) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfCallbackGame = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes CallbackGame from json. func (s *CallbackGame) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode CallbackGame to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() - } + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) + } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode CallbackGame") } @@ -2736,7 +2750,7 @@ func (s *CallbackGame) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *CallbackGame) MarshalJSON() ([]byte, error) { +func (s CallbackGame) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -11553,7 +11567,7 @@ func (s *InlineKeyboardButton) encodeFields(e *jx.Encoder) { } } { - if s.CallbackGame != nil { + if s.CallbackGame.Set { e.FieldStart("callback_game") s.CallbackGame.Encode(e) } @@ -11650,12 +11664,10 @@ func (s *InlineKeyboardButton) Decode(d *jx.Decoder) error { } case "callback_game": if err := func() error { - s.CallbackGame = nil - var elem CallbackGame - if err := elem.Decode(d); err != nil { + s.CallbackGame.Reset() + if err := s.CallbackGame.Decode(d); err != nil { return err } - s.CallbackGame = &elem return nil }(); err != nil { return errors.Wrap(err, "decode field \"callback_game\"") @@ -23015,7 +23027,7 @@ func (s *Message) encodeFields(e *jx.Encoder) { } } { - if s.VoiceChatStarted != nil { + if s.VoiceChatStarted.Set { e.FieldStart("voice_chat_started") s.VoiceChatStarted.Encode(e) } @@ -23695,12 +23707,10 @@ func (s *Message) Decode(d *jx.Decoder) error { } case "voice_chat_started": if err := func() error { - s.VoiceChatStarted = nil - var elem VoiceChatStarted - if err := elem.Decode(d); err != nil { + s.VoiceChatStarted.Reset() + if err := s.VoiceChatStarted.Decode(d); err != nil { return err } - s.VoiceChatStarted = &elem return nil }(); err != nil { return errors.Wrap(err, "decode field \"voice_chat_started\"") @@ -24370,6 +24380,40 @@ func (s *OptBotCommandScope) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode encodes CallbackGame as json. +func (o OptCallbackGame) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes CallbackGame from json. +func (o *OptCallbackGame) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptCallbackGame to nil") + } + o.Set = true + o.Value = make(CallbackGame) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptCallbackGame) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptCallbackGame) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode encodes CallbackQuery as json. func (o OptCallbackQuery) Encode(e *jx.Encoder) { if !o.Set { @@ -26822,6 +26866,40 @@ func (s *OptVoiceChatScheduled) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode encodes VoiceChatStarted as json. +func (o OptVoiceChatStarted) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes VoiceChatStarted from json. +func (o *OptVoiceChatStarted) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptVoiceChatStarted to nil") + } + o.Set = true + o.Value = make(VoiceChatStarted) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptVoiceChatStarted) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptVoiceChatStarted) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode encodes WebhookInfo as json. func (o OptWebhookInfo) Encode(e *jx.Encoder) { if !o.Set { @@ -45492,29 +45570,43 @@ func (s *VoiceChatScheduled) UnmarshalJSON(data []byte) error { } // Encode implements json.Marshaler. -func (s *VoiceChatStarted) Encode(e *jx.Encoder) { +func (s VoiceChatStarted) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *VoiceChatStarted) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s VoiceChatStarted) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfVoiceChatStarted = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes VoiceChatStarted from json. func (s *VoiceChatStarted) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode VoiceChatStarted to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() - } + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) + } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode VoiceChatStarted") } @@ -45523,7 +45615,7 @@ func (s *VoiceChatStarted) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *VoiceChatStarted) MarshalJSON() ([]byte, error) { +func (s VoiceChatStarted) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil diff --git a/examples/ex_telegram/oas_schemas_gen.go b/examples/ex_telegram/oas_schemas_gen.go index 32f2c62a3..dfc55fc00 100644 --- a/examples/ex_telegram/oas_schemas_gen.go +++ b/examples/ex_telegram/oas_schemas_gen.go @@ -7,6 +7,7 @@ import ( "net/url" "github.com/go-faster/errors" + "github.com/go-faster/jx" ) func (s *ErrorStatusCode) Error() string { @@ -1111,7 +1112,16 @@ func (s *BotCommandScopeDefault) SetType(val string) { // A placeholder, currently holds no information. Use BotFather to set up your game. // Ref: #/components/schemas/CallbackGame -type CallbackGame struct{} +type CallbackGame map[string]jx.Raw + +func (s *CallbackGame) init() CallbackGame { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} // This object represents an incoming callback query from a callback button in an inline keyboard. If // the button that originated the query was attached to a message sent by the bot, the field message @@ -4966,8 +4976,8 @@ type InlineKeyboardButton struct { // current chat's input field. Can be empty, in which case only the bot's username will be inserted. // This offers a quick way for the user to open your bot in inline mode in the same chat – good for // selecting something from multiple options. - SwitchInlineQueryCurrentChat OptString `json:"switch_inline_query_current_chat"` - CallbackGame *CallbackGame `json:"callback_game"` + SwitchInlineQueryCurrentChat OptString `json:"switch_inline_query_current_chat"` + CallbackGame OptCallbackGame `json:"callback_game"` // Specify True, to send a Pay button.NOTE: This type of button must always be the first button in // the first row and can only be used in invoice messages. Pay OptBool `json:"pay"` @@ -5004,7 +5014,7 @@ func (s *InlineKeyboardButton) GetSwitchInlineQueryCurrentChat() OptString { } // GetCallbackGame returns the value of CallbackGame. -func (s *InlineKeyboardButton) GetCallbackGame() *CallbackGame { +func (s *InlineKeyboardButton) GetCallbackGame() OptCallbackGame { return s.CallbackGame } @@ -5044,7 +5054,7 @@ func (s *InlineKeyboardButton) SetSwitchInlineQueryCurrentChat(val OptString) { } // SetCallbackGame sets the value of CallbackGame. -func (s *InlineKeyboardButton) SetCallbackGame(val *CallbackGame) { +func (s *InlineKeyboardButton) SetCallbackGame(val OptCallbackGame) { s.CallbackGame = val } @@ -10420,7 +10430,7 @@ type Message struct { PassportData OptPassportData `json:"passport_data"` ProximityAlertTriggered OptProximityAlertTriggered `json:"proximity_alert_triggered"` VoiceChatScheduled OptVoiceChatScheduled `json:"voice_chat_scheduled"` - VoiceChatStarted *VoiceChatStarted `json:"voice_chat_started"` + VoiceChatStarted OptVoiceChatStarted `json:"voice_chat_started"` VoiceChatEnded OptVoiceChatEnded `json:"voice_chat_ended"` VoiceChatParticipantsInvited OptVoiceChatParticipantsInvited `json:"voice_chat_participants_invited"` ReplyMarkup OptInlineKeyboardMarkup `json:"reply_markup"` @@ -10697,7 +10707,7 @@ func (s *Message) GetVoiceChatScheduled() OptVoiceChatScheduled { } // GetVoiceChatStarted returns the value of VoiceChatStarted. -func (s *Message) GetVoiceChatStarted() *VoiceChatStarted { +func (s *Message) GetVoiceChatStarted() OptVoiceChatStarted { return s.VoiceChatStarted } @@ -10987,7 +10997,7 @@ func (s *Message) SetVoiceChatScheduled(val OptVoiceChatScheduled) { } // SetVoiceChatStarted sets the value of VoiceChatStarted. -func (s *Message) SetVoiceChatStarted(val *VoiceChatStarted) { +func (s *Message) SetVoiceChatStarted(val OptVoiceChatStarted) { s.VoiceChatStarted = val } @@ -11444,6 +11454,52 @@ func (o OptBotCommandScope) Or(d BotCommandScope) BotCommandScope { return d } +// NewOptCallbackGame returns new OptCallbackGame with value set to v. +func NewOptCallbackGame(v CallbackGame) OptCallbackGame { + return OptCallbackGame{ + Value: v, + Set: true, + } +} + +// OptCallbackGame is optional CallbackGame. +type OptCallbackGame struct { + Value CallbackGame + Set bool +} + +// IsSet returns true if OptCallbackGame was set. +func (o OptCallbackGame) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptCallbackGame) Reset() { + var v CallbackGame + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptCallbackGame) SetTo(v CallbackGame) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptCallbackGame) Get() (v CallbackGame, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptCallbackGame) Or(d CallbackGame) CallbackGame { + if v, ok := o.Get(); ok { + return v + } + return d +} + // NewOptCallbackQuery returns new OptCallbackQuery with value set to v. func NewOptCallbackQuery(v CallbackQuery) OptCallbackQuery { return OptCallbackQuery{ @@ -14848,6 +14904,52 @@ func (o OptVoiceChatScheduled) Or(d VoiceChatScheduled) VoiceChatScheduled { return d } +// NewOptVoiceChatStarted returns new OptVoiceChatStarted with value set to v. +func NewOptVoiceChatStarted(v VoiceChatStarted) OptVoiceChatStarted { + return OptVoiceChatStarted{ + Value: v, + Set: true, + } +} + +// OptVoiceChatStarted is optional VoiceChatStarted. +type OptVoiceChatStarted struct { + Value VoiceChatStarted + Set bool +} + +// IsSet returns true if OptVoiceChatStarted was set. +func (o OptVoiceChatStarted) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptVoiceChatStarted) Reset() { + var v VoiceChatStarted + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptVoiceChatStarted) SetTo(v VoiceChatStarted) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptVoiceChatStarted) Get() (v VoiceChatStarted, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptVoiceChatStarted) Or(d VoiceChatStarted) VoiceChatStarted { + if v, ok := o.Get(); ok { + return v + } + return d +} + // NewOptWebhookInfo returns new OptWebhookInfo with value set to v. func NewOptWebhookInfo(v WebhookInfo) OptWebhookInfo { return OptWebhookInfo{ @@ -23873,7 +23975,16 @@ func (s *VoiceChatScheduled) SetStartDate(val int) { // This object represents a service message about a voice chat started in the chat. Currently holds // no information. // Ref: #/components/schemas/VoiceChatStarted -type VoiceChatStarted struct{} +type VoiceChatStarted map[string]jx.Raw + +func (s *VoiceChatStarted) init() VoiceChatStarted { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} // Contains information about the current status of a webhook. // Ref: #/components/schemas/WebhookInfo diff --git a/examples/ex_telegram/oas_test_examples_gen_test.go b/examples/ex_telegram/oas_test_examples_gen_test.go index 12d905c5f..eded0553b 100644 --- a/examples/ex_telegram/oas_test_examples_gen_test.go +++ b/examples/ex_telegram/oas_test_examples_gen_test.go @@ -241,6 +241,7 @@ func TestBotCommandScopeDefault_EncodeDecode(t *testing.T) { } func TestCallbackGame_EncodeDecode(t *testing.T) { var typ CallbackGame + typ = make(CallbackGame) typ.SetFake() e := jx.Encoder{} @@ -249,6 +250,7 @@ func TestCallbackGame_EncodeDecode(t *testing.T) { require.True(t, std.Valid(data), "Encoded: %s", data) var typ2 CallbackGame + typ2 = make(CallbackGame) require.NoError(t, typ2.Decode(jx.DecodeBytes(data))) } func TestCallbackQuery_EncodeDecode(t *testing.T) { @@ -3001,6 +3003,7 @@ func TestVoiceChatScheduled_EncodeDecode(t *testing.T) { } func TestVoiceChatStarted_EncodeDecode(t *testing.T) { var typ VoiceChatStarted + typ = make(VoiceChatStarted) typ.SetFake() e := jx.Encoder{} @@ -3009,6 +3012,7 @@ func TestVoiceChatStarted_EncodeDecode(t *testing.T) { require.True(t, std.Valid(data), "Encoded: %s", data) var typ2 VoiceChatStarted + typ2 = make(VoiceChatStarted) require.NoError(t, typ2.Decode(jx.DecodeBytes(data))) } func TestWebhookInfo_EncodeDecode(t *testing.T) { diff --git a/examples/ex_test_format/oas_client_gen.go b/examples/ex_test_format/oas_client_gen.go index c51b65a46..68473d6ff 100644 --- a/examples/ex_test_format/oas_client_gen.go +++ b/examples/ex_test_format/oas_client_gen.go @@ -62,7 +62,7 @@ type Invoker interface { // TestRequestEmptyStruct invokes test_request_EmptyStruct operation. // // POST /test_request_EmptyStruct - TestRequestEmptyStruct(ctx context.Context, request *TestRequestEmptyStructReq) (*Error, error) + TestRequestEmptyStruct(ctx context.Context, request OptTestRequestEmptyStructReq) (*Error, error) // TestRequestFormatTest invokes test_request_FormatTest operation. // // POST /test_request_FormatTest @@ -602,7 +602,7 @@ type Invoker interface { // TestRequestRequiredEmptyStruct invokes test_request_required_EmptyStruct operation. // // POST /test_request_required_EmptyStruct - TestRequestRequiredEmptyStruct(ctx context.Context, request *TestRequestRequiredEmptyStructReq) (*Error, error) + TestRequestRequiredEmptyStruct(ctx context.Context, request TestRequestRequiredEmptyStructReq) (*Error, error) // TestRequestRequiredFormatTest invokes test_request_required_FormatTest operation. // // POST /test_request_required_FormatTest @@ -2774,7 +2774,7 @@ type Invoker interface { // TestResponseEmptyStruct invokes test_response_EmptyStruct operation. // // POST /test_response_EmptyStruct - TestResponseEmptyStruct(ctx context.Context, request string) error + TestResponseEmptyStruct(ctx context.Context, request string) (TestResponseEmptyStructOK, error) // TestResponseFormatTest invokes test_response_FormatTest operation. // // POST /test_response_FormatTest @@ -6775,12 +6775,12 @@ func (c *Client) sendTestRequestBooleanNullableArrayArray(ctx context.Context, r // TestRequestEmptyStruct invokes test_request_EmptyStruct operation. // // POST /test_request_EmptyStruct -func (c *Client) TestRequestEmptyStruct(ctx context.Context, request *TestRequestEmptyStructReq) (*Error, error) { +func (c *Client) TestRequestEmptyStruct(ctx context.Context, request OptTestRequestEmptyStructReq) (*Error, error) { res, err := c.sendTestRequestEmptyStruct(ctx, request) return res, err } -func (c *Client) sendTestRequestEmptyStruct(ctx context.Context, request *TestRequestEmptyStructReq) (res *Error, err error) { +func (c *Client) sendTestRequestEmptyStruct(ctx context.Context, request OptTestRequestEmptyStructReq) (res *Error, err error) { otelAttrs := []attribute.KeyValue{ otelogen.OperationID("test_request_EmptyStruct"), semconv.HTTPMethodKey.String("POST"), @@ -16630,12 +16630,12 @@ func (c *Client) sendTestRequestRequiredBooleanNullableArrayArray(ctx context.Co // TestRequestRequiredEmptyStruct invokes test_request_required_EmptyStruct operation. // // POST /test_request_required_EmptyStruct -func (c *Client) TestRequestRequiredEmptyStruct(ctx context.Context, request *TestRequestRequiredEmptyStructReq) (*Error, error) { +func (c *Client) TestRequestRequiredEmptyStruct(ctx context.Context, request TestRequestRequiredEmptyStructReq) (*Error, error) { res, err := c.sendTestRequestRequiredEmptyStruct(ctx, request) return res, err } -func (c *Client) sendTestRequestRequiredEmptyStruct(ctx context.Context, request *TestRequestRequiredEmptyStructReq) (res *Error, err error) { +func (c *Client) sendTestRequestRequiredEmptyStruct(ctx context.Context, request TestRequestRequiredEmptyStructReq) (res *Error, err error) { otelAttrs := []attribute.KeyValue{ otelogen.OperationID("test_request_required_EmptyStruct"), semconv.HTTPMethodKey.String("POST"), @@ -56269,12 +56269,12 @@ func (c *Client) sendTestResponseBooleanNullableArrayArray(ctx context.Context, // TestResponseEmptyStruct invokes test_response_EmptyStruct operation. // // POST /test_response_EmptyStruct -func (c *Client) TestResponseEmptyStruct(ctx context.Context, request string) error { - _, err := c.sendTestResponseEmptyStruct(ctx, request) - return err +func (c *Client) TestResponseEmptyStruct(ctx context.Context, request string) (TestResponseEmptyStructOK, error) { + res, err := c.sendTestResponseEmptyStruct(ctx, request) + return res, err } -func (c *Client) sendTestResponseEmptyStruct(ctx context.Context, request string) (res *TestResponseEmptyStructOK, err error) { +func (c *Client) sendTestResponseEmptyStruct(ctx context.Context, request string) (res TestResponseEmptyStructOK, err error) { otelAttrs := []attribute.KeyValue{ otelogen.OperationID("test_response_EmptyStruct"), semconv.HTTPMethodKey.String("POST"), diff --git a/examples/ex_test_format/oas_faker_gen.go b/examples/ex_test_format/oas_faker_gen.go index 2b1af2cc9..ca98b154a 100644 --- a/examples/ex_test_format/oas_faker_gen.go +++ b/examples/ex_test_format/oas_faker_gen.go @@ -3,6 +3,7 @@ package api import ( + "fmt" "net" "net/netip" "net/url" @@ -813,6 +814,15 @@ func (s *OptStringUnixSeconds) SetFake() { s.SetTo(elem) } +// SetFake set fake values. +func (s *OptTestRequestEmptyStructReq) SetFake() { + var elem TestRequestEmptyStructReq + { + elem.SetFake() + } + s.SetTo(elem) +} + // SetFake set fake values. func (s *OptTestRequestFormatTestReq) SetFake() { var elem TestRequestFormatTestReq @@ -932,6 +942,13 @@ func (s *OptUnixSeconds) SetFake() { // SetFake set fake values. func (s *TestRequestEmptyStructReq) SetFake() { + var ( + elem jx.Raw + m map[string]jx.Raw = s.init() + ) + for i := 0; i < 0; i++ { + m[fmt.Sprintf("fake%d", i)] = elem + } } // SetFake set fake values. @@ -5044,6 +5061,13 @@ func (s *TestRequestFormatTestReq) SetFake() { // SetFake set fake values. func (s *TestRequestRequiredEmptyStructReq) SetFake() { + var ( + elem jx.Raw + m map[string]jx.Raw = s.init() + ) + for i := 0; i < 0; i++ { + m[fmt.Sprintf("fake%d", i)] = elem + } } // SetFake set fake values. @@ -9156,6 +9180,13 @@ func (s *TestRequestRequiredFormatTestReq) SetFake() { // SetFake set fake values. func (s *TestResponseEmptyStructOK) SetFake() { + var ( + elem jx.Raw + m map[string]jx.Raw = s.init() + ) + for i := 0; i < 0; i++ { + m[fmt.Sprintf("fake%d", i)] = elem + } } // SetFake set fake values. diff --git a/examples/ex_test_format/oas_handlers_gen.go b/examples/ex_test_format/oas_handlers_gen.go index c25382659..a4662d755 100644 --- a/examples/ex_test_format/oas_handlers_gen.go +++ b/examples/ex_test_format/oas_handlers_gen.go @@ -1431,7 +1431,7 @@ func (s *Server) handleTestRequestEmptyStructRequest(args [0]string, argsEscaped } type ( - Request = *TestRequestEmptyStructReq + Request = OptTestRequestEmptyStructReq Params = struct{} Response = *Error ) @@ -16281,7 +16281,7 @@ func (s *Server) handleTestRequestRequiredEmptyStructRequest(args [0]string, arg } type ( - Request = *TestRequestRequiredEmptyStructReq + Request = TestRequestRequiredEmptyStructReq Params = struct{} Response = *Error ) @@ -75998,7 +75998,7 @@ func (s *Server) handleTestResponseEmptyStructRequest(args [0]string, argsEscape } }() - var response *TestResponseEmptyStructOK + var response TestResponseEmptyStructOK if m := s.cfg.Middleware; m != nil { mreq := middleware.Request{ Context: ctx, @@ -76013,7 +76013,7 @@ func (s *Server) handleTestResponseEmptyStructRequest(args [0]string, argsEscape type ( Request = string Params = struct{} - Response = *TestResponseEmptyStructOK + Response = TestResponseEmptyStructOK ) response, err = middleware.HookMiddleware[ Request, @@ -76024,12 +76024,12 @@ func (s *Server) handleTestResponseEmptyStructRequest(args [0]string, argsEscape mreq, nil, func(ctx context.Context, request Request, params Params) (response Response, err error) { - err = s.h.TestResponseEmptyStruct(ctx, request) + response, err = s.h.TestResponseEmptyStruct(ctx, request) return response, err }, ) } else { - err = s.h.TestResponseEmptyStruct(ctx, request) + response, err = s.h.TestResponseEmptyStruct(ctx, request) } if err != nil { defer recordError("Internal", err) diff --git a/examples/ex_test_format/oas_json_gen.go b/examples/ex_test_format/oas_json_gen.go index 475098cf6..8ccde0870 100644 --- a/examples/ex_test_format/oas_json_gen.go +++ b/examples/ex_test_format/oas_json_gen.go @@ -5570,6 +5570,40 @@ func (s *OptStringUnixSeconds) UnmarshalJSON(data []byte) error { return s.Decode(d, json.DecodeStringUnixSeconds) } +// Encode encodes TestRequestEmptyStructReq as json. +func (o OptTestRequestEmptyStructReq) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes TestRequestEmptyStructReq from json. +func (o *OptTestRequestEmptyStructReq) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptTestRequestEmptyStructReq to nil") + } + o.Set = true + o.Value = make(TestRequestEmptyStructReq) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptTestRequestEmptyStructReq) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptTestRequestEmptyStructReq) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode encodes TestRequestFormatTestReq as json. func (o OptTestRequestFormatTestReq) Encode(e *jx.Encoder) { if !o.Set { @@ -6024,29 +6058,43 @@ func (s *OptUnixSeconds) UnmarshalJSON(data []byte) error { } // Encode implements json.Marshaler. -func (s *TestRequestEmptyStructReq) Encode(e *jx.Encoder) { +func (s TestRequestEmptyStructReq) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *TestRequestEmptyStructReq) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s TestRequestEmptyStructReq) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfTestRequestEmptyStructReq = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes TestRequestEmptyStructReq from json. func (s *TestRequestEmptyStructReq) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode TestRequestEmptyStructReq to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() - } + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) + } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode TestRequestEmptyStructReq") } @@ -6055,7 +6103,7 @@ func (s *TestRequestEmptyStructReq) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *TestRequestEmptyStructReq) MarshalJSON() ([]byte, error) { +func (s TestRequestEmptyStructReq) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -16225,29 +16273,43 @@ func (s *TestRequestFormatTestReq) UnmarshalJSON(data []byte) error { } // Encode implements json.Marshaler. -func (s *TestRequestRequiredEmptyStructReq) Encode(e *jx.Encoder) { +func (s TestRequestRequiredEmptyStructReq) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *TestRequestRequiredEmptyStructReq) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s TestRequestRequiredEmptyStructReq) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfTestRequestRequiredEmptyStructReq = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes TestRequestRequiredEmptyStructReq from json. func (s *TestRequestRequiredEmptyStructReq) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode TestRequestRequiredEmptyStructReq to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() - } + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) + } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode TestRequestRequiredEmptyStructReq") } @@ -16256,7 +16318,7 @@ func (s *TestRequestRequiredEmptyStructReq) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *TestRequestRequiredEmptyStructReq) MarshalJSON() ([]byte, error) { +func (s TestRequestRequiredEmptyStructReq) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -26426,29 +26488,43 @@ func (s *TestRequestRequiredFormatTestReq) UnmarshalJSON(data []byte) error { } // Encode implements json.Marshaler. -func (s *TestResponseEmptyStructOK) Encode(e *jx.Encoder) { +func (s TestResponseEmptyStructOK) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *TestResponseEmptyStructOK) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s TestResponseEmptyStructOK) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfTestResponseEmptyStructOK = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes TestResponseEmptyStructOK from json. func (s *TestResponseEmptyStructOK) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode TestResponseEmptyStructOK to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() - } + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) + } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode TestResponseEmptyStructOK") } @@ -26457,7 +26533,7 @@ func (s *TestResponseEmptyStructOK) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *TestResponseEmptyStructOK) MarshalJSON() ([]byte, error) { +func (s TestResponseEmptyStructOK) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil diff --git a/examples/ex_test_format/oas_request_decoders_gen.go b/examples/ex_test_format/oas_request_decoders_gen.go index 8c514119f..6d0a5498f 100644 --- a/examples/ex_test_format/oas_request_decoders_gen.go +++ b/examples/ex_test_format/oas_request_decoders_gen.go @@ -650,7 +650,7 @@ func (s *Server) decodeTestRequestBooleanNullableArrayArrayRequest(r *http.Reque } func (s *Server) decodeTestRequestEmptyStructRequest(r *http.Request) ( - req *TestRequestEmptyStructReq, + req OptTestRequestEmptyStructReq, close func() error, rerr error, ) { @@ -692,14 +692,12 @@ func (s *Server) decodeTestRequestEmptyStructRequest(r *http.Request) ( d := jx.DecodeBytes(buf) - var request *TestRequestEmptyStructReq + var request OptTestRequestEmptyStructReq if err := func() error { - request = nil - var elem TestRequestEmptyStructReq - if err := elem.Decode(d); err != nil { + request.Reset() + if err := request.Decode(d); err != nil { return err } - request = &elem if err := d.Skip(); err != io.EOF { return errors.New("unexpected trailing data") } @@ -12100,7 +12098,7 @@ func (s *Server) decodeTestRequestRequiredBooleanNullableArrayArrayRequest(r *ht } func (s *Server) decodeTestRequestRequiredEmptyStructRequest(r *http.Request) ( - req *TestRequestRequiredEmptyStructReq, + req TestRequestRequiredEmptyStructReq, close func() error, rerr error, ) { @@ -12156,7 +12154,7 @@ func (s *Server) decodeTestRequestRequiredEmptyStructRequest(r *http.Request) ( } return req, close, err } - return &request, close, nil + return request, close, nil default: return req, close, validate.InvalidContentType(ct) } diff --git a/examples/ex_test_format/oas_request_encoders_gen.go b/examples/ex_test_format/oas_request_encoders_gen.go index b7c012b37..f7314a4f9 100644 --- a/examples/ex_test_format/oas_request_encoders_gen.go +++ b/examples/ex_test_format/oas_request_encoders_gen.go @@ -176,13 +176,17 @@ func encodeTestRequestBooleanNullableArrayArrayRequest( } func encodeTestRequestEmptyStructRequest( - req *TestRequestEmptyStructReq, + req OptTestRequestEmptyStructReq, r *http.Request, ) error { const contentType = "application/json" + if !req.Set { + // Keep request with empty body if value is not set. + return nil + } e := new(jx.Encoder) { - if req != nil { + if req.Set { req.Encode(e) } } @@ -3028,7 +3032,7 @@ func encodeTestRequestRequiredBooleanNullableArrayArrayRequest( } func encodeTestRequestRequiredEmptyStructRequest( - req *TestRequestRequiredEmptyStructReq, + req TestRequestRequiredEmptyStructReq, r *http.Request, ) error { const contentType = "application/json" diff --git a/examples/ex_test_format/oas_response_decoders_gen.go b/examples/ex_test_format/oas_response_decoders_gen.go index 8246864c5..bed2a75e8 100644 --- a/examples/ex_test_format/oas_response_decoders_gen.go +++ b/examples/ex_test_format/oas_response_decoders_gen.go @@ -28273,7 +28273,7 @@ func decodeTestResponseBooleanNullableArrayArrayResponse(resp *http.Response) (r return res, validate.UnexpectedStatusCode(resp.StatusCode) } -func decodeTestResponseEmptyStructResponse(resp *http.Response) (res *TestResponseEmptyStructOK, _ error) { +func decodeTestResponseEmptyStructResponse(resp *http.Response) (res TestResponseEmptyStructOK, _ error) { switch resp.StatusCode { case 200: // Code 200. @@ -28306,7 +28306,7 @@ func decodeTestResponseEmptyStructResponse(resp *http.Response) (res *TestRespon } return res, err } - return &response, nil + return response, nil default: return res, validate.InvalidContentType(ct) } diff --git a/examples/ex_test_format/oas_response_encoders_gen.go b/examples/ex_test_format/oas_response_encoders_gen.go index 465f812de..adfe8257a 100644 --- a/examples/ex_test_format/oas_response_encoders_gen.go +++ b/examples/ex_test_format/oas_response_encoders_gen.go @@ -9648,7 +9648,7 @@ func encodeTestResponseBooleanNullableArrayArrayResponse(response [][]NilBool, w return nil } -func encodeTestResponseEmptyStructResponse(response *TestResponseEmptyStructOK, w http.ResponseWriter, span trace.Span) error { +func encodeTestResponseEmptyStructResponse(response TestResponseEmptyStructOK, w http.ResponseWriter, span trace.Span) error { w.Header().Set("Content-Type", "application/json; charset=utf-8") w.WriteHeader(200) span.SetStatus(codes.Ok, http.StatusText(200)) diff --git a/examples/ex_test_format/oas_schemas_gen.go b/examples/ex_test_format/oas_schemas_gen.go index dfc325aa0..a162da6a5 100644 --- a/examples/ex_test_format/oas_schemas_gen.go +++ b/examples/ex_test_format/oas_schemas_gen.go @@ -6371,6 +6371,52 @@ func (o OptStringUnixSeconds) Or(d time.Time) time.Time { return d } +// NewOptTestRequestEmptyStructReq returns new OptTestRequestEmptyStructReq with value set to v. +func NewOptTestRequestEmptyStructReq(v TestRequestEmptyStructReq) OptTestRequestEmptyStructReq { + return OptTestRequestEmptyStructReq{ + Value: v, + Set: true, + } +} + +// OptTestRequestEmptyStructReq is optional TestRequestEmptyStructReq. +type OptTestRequestEmptyStructReq struct { + Value TestRequestEmptyStructReq + Set bool +} + +// IsSet returns true if OptTestRequestEmptyStructReq was set. +func (o OptTestRequestEmptyStructReq) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptTestRequestEmptyStructReq) Reset() { + var v TestRequestEmptyStructReq + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptTestRequestEmptyStructReq) SetTo(v TestRequestEmptyStructReq) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptTestRequestEmptyStructReq) Get() (v TestRequestEmptyStructReq, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptTestRequestEmptyStructReq) Or(d TestRequestEmptyStructReq) TestRequestEmptyStructReq { + if v, ok := o.Get(); ok { + return v + } + return d +} + // NewOptTestRequestFormatTestReq returns new OptTestRequestFormatTestReq with value set to v. func NewOptTestRequestFormatTestReq(v TestRequestFormatTestReq) OptTestRequestFormatTestReq { return OptTestRequestFormatTestReq{ @@ -6969,7 +7015,16 @@ func (o OptUnixSeconds) Or(d time.Time) time.Time { return d } -type TestRequestEmptyStructReq struct{} +type TestRequestEmptyStructReq map[string]jx.Raw + +func (s *TestRequestEmptyStructReq) init() TestRequestEmptyStructReq { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} type TestRequestFormatTestReq struct { RequiredAny jx.Raw `json:"required_any"` @@ -10736,7 +10791,16 @@ func (s *TestRequestFormatTestReq) SetOptionalStringUUID(val OptUUID) { s.OptionalStringUUID = val } -type TestRequestRequiredEmptyStructReq struct{} +type TestRequestRequiredEmptyStructReq map[string]jx.Raw + +func (s *TestRequestRequiredEmptyStructReq) init() TestRequestRequiredEmptyStructReq { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} type TestRequestRequiredFormatTestReq struct { RequiredAny jx.Raw `json:"required_any"` @@ -14503,7 +14567,16 @@ func (s *TestRequestRequiredFormatTestReq) SetOptionalStringUUID(val OptUUID) { s.OptionalStringUUID = val } -type TestResponseEmptyStructOK struct{} +type TestResponseEmptyStructOK map[string]jx.Raw + +func (s *TestResponseEmptyStructOK) init() TestResponseEmptyStructOK { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} type TestResponseFormatTestOK struct { RequiredAny jx.Raw `json:"required_any"` diff --git a/examples/ex_test_format/oas_server_gen.go b/examples/ex_test_format/oas_server_gen.go index 5d08d82af..4e43ea808 100644 --- a/examples/ex_test_format/oas_server_gen.go +++ b/examples/ex_test_format/oas_server_gen.go @@ -50,7 +50,7 @@ type Handler interface { // TestRequestEmptyStruct implements test_request_EmptyStruct operation. // // POST /test_request_EmptyStruct - TestRequestEmptyStruct(ctx context.Context, req *TestRequestEmptyStructReq) (*Error, error) + TestRequestEmptyStruct(ctx context.Context, req OptTestRequestEmptyStructReq) (*Error, error) // TestRequestFormatTest implements test_request_FormatTest operation. // // POST /test_request_FormatTest @@ -590,7 +590,7 @@ type Handler interface { // TestRequestRequiredEmptyStruct implements test_request_required_EmptyStruct operation. // // POST /test_request_required_EmptyStruct - TestRequestRequiredEmptyStruct(ctx context.Context, req *TestRequestRequiredEmptyStructReq) (*Error, error) + TestRequestRequiredEmptyStruct(ctx context.Context, req TestRequestRequiredEmptyStructReq) (*Error, error) // TestRequestRequiredFormatTest implements test_request_required_FormatTest operation. // // POST /test_request_required_FormatTest @@ -2762,7 +2762,7 @@ type Handler interface { // TestResponseEmptyStruct implements test_response_EmptyStruct operation. // // POST /test_response_EmptyStruct - TestResponseEmptyStruct(ctx context.Context, req string) error + TestResponseEmptyStruct(ctx context.Context, req string) (TestResponseEmptyStructOK, error) // TestResponseFormatTest implements test_response_FormatTest operation. // // POST /test_response_FormatTest diff --git a/examples/ex_test_format/oas_test_examples_gen_test.go b/examples/ex_test_format/oas_test_examples_gen_test.go index 07b974188..527700f31 100644 --- a/examples/ex_test_format/oas_test_examples_gen_test.go +++ b/examples/ex_test_format/oas_test_examples_gen_test.go @@ -25,6 +25,7 @@ func TestError_EncodeDecode(t *testing.T) { } func TestTestRequestEmptyStructReq_EncodeDecode(t *testing.T) { var typ TestRequestEmptyStructReq + typ = make(TestRequestEmptyStructReq) typ.SetFake() e := jx.Encoder{} @@ -33,6 +34,7 @@ func TestTestRequestEmptyStructReq_EncodeDecode(t *testing.T) { require.True(t, std.Valid(data), "Encoded: %s", data) var typ2 TestRequestEmptyStructReq + typ2 = make(TestRequestEmptyStructReq) require.NoError(t, typ2.Decode(jx.DecodeBytes(data))) } func TestTestRequestFormatTestReq_EncodeDecode(t *testing.T) { @@ -49,6 +51,7 @@ func TestTestRequestFormatTestReq_EncodeDecode(t *testing.T) { } func TestTestRequestRequiredEmptyStructReq_EncodeDecode(t *testing.T) { var typ TestRequestRequiredEmptyStructReq + typ = make(TestRequestRequiredEmptyStructReq) typ.SetFake() e := jx.Encoder{} @@ -57,6 +60,7 @@ func TestTestRequestRequiredEmptyStructReq_EncodeDecode(t *testing.T) { require.True(t, std.Valid(data), "Encoded: %s", data) var typ2 TestRequestRequiredEmptyStructReq + typ2 = make(TestRequestRequiredEmptyStructReq) require.NoError(t, typ2.Decode(jx.DecodeBytes(data))) } func TestTestRequestRequiredFormatTestReq_EncodeDecode(t *testing.T) { @@ -73,6 +77,7 @@ func TestTestRequestRequiredFormatTestReq_EncodeDecode(t *testing.T) { } func TestTestResponseEmptyStructOK_EncodeDecode(t *testing.T) { var typ TestResponseEmptyStructOK + typ = make(TestResponseEmptyStructOK) typ.SetFake() e := jx.Encoder{} @@ -81,6 +86,7 @@ func TestTestResponseEmptyStructOK_EncodeDecode(t *testing.T) { require.True(t, std.Valid(data), "Encoded: %s", data) var typ2 TestResponseEmptyStructOK + typ2 = make(TestResponseEmptyStructOK) require.NoError(t, typ2.Decode(jx.DecodeBytes(data))) } func TestTestResponseFormatTestOK_EncodeDecode(t *testing.T) { diff --git a/examples/ex_test_format/oas_unimplemented_gen.go b/examples/ex_test_format/oas_unimplemented_gen.go index 775bca2d0..dd21a9a7b 100644 --- a/examples/ex_test_format/oas_unimplemented_gen.go +++ b/examples/ex_test_format/oas_unimplemented_gen.go @@ -79,7 +79,7 @@ func (UnimplementedHandler) TestRequestBooleanNullableArrayArray(ctx context.Con // TestRequestEmptyStruct implements test_request_EmptyStruct operation. // // POST /test_request_EmptyStruct -func (UnimplementedHandler) TestRequestEmptyStruct(ctx context.Context, req *TestRequestEmptyStructReq) (r *Error, _ error) { +func (UnimplementedHandler) TestRequestEmptyStruct(ctx context.Context, req OptTestRequestEmptyStructReq) (r *Error, _ error) { return r, ht.ErrNotImplemented } @@ -1024,7 +1024,7 @@ func (UnimplementedHandler) TestRequestRequiredBooleanNullableArrayArray(ctx con // TestRequestRequiredEmptyStruct implements test_request_required_EmptyStruct operation. // // POST /test_request_required_EmptyStruct -func (UnimplementedHandler) TestRequestRequiredEmptyStruct(ctx context.Context, req *TestRequestRequiredEmptyStructReq) (r *Error, _ error) { +func (UnimplementedHandler) TestRequestRequiredEmptyStruct(ctx context.Context, req TestRequestRequiredEmptyStructReq) (r *Error, _ error) { return r, ht.ErrNotImplemented } @@ -4825,8 +4825,8 @@ func (UnimplementedHandler) TestResponseBooleanNullableArrayArray(ctx context.Co // TestResponseEmptyStruct implements test_response_EmptyStruct operation. // // POST /test_response_EmptyStruct -func (UnimplementedHandler) TestResponseEmptyStruct(ctx context.Context, req string) error { - return ht.ErrNotImplemented +func (UnimplementedHandler) TestResponseEmptyStruct(ctx context.Context, req string) (r TestResponseEmptyStructOK, _ error) { + return r, ht.ErrNotImplemented } // TestResponseFormatTest implements test_response_FormatTest operation. diff --git a/examples/ex_tinkoff/oas_faker_gen.go b/examples/ex_tinkoff/oas_faker_gen.go index 262d26cc7..02f8245f9 100644 --- a/examples/ex_tinkoff/oas_faker_gen.go +++ b/examples/ex_tinkoff/oas_faker_gen.go @@ -3,7 +3,10 @@ package api import ( + "fmt" "time" + + "github.com/go-faster/jx" ) // SetFake set fake values. @@ -166,6 +169,13 @@ func (s *Empty) SetFake() { // SetFake set fake values. func (s *EmptyPayload) SetFake() { + var ( + elem jx.Raw + m map[string]jx.Raw = s.init() + ) + for i := 0; i < 0; i++ { + m[fmt.Sprintf("fake%d", i)] = elem + } } // SetFake set fake values. diff --git a/examples/ex_tinkoff/oas_json_gen.go b/examples/ex_tinkoff/oas_json_gen.go index d9b6b9aa6..3dfece861 100644 --- a/examples/ex_tinkoff/oas_json_gen.go +++ b/examples/ex_tinkoff/oas_json_gen.go @@ -1009,29 +1009,43 @@ func (s *Empty) UnmarshalJSON(data []byte) error { } // Encode implements json.Marshaler. -func (s *EmptyPayload) Encode(e *jx.Encoder) { +func (s EmptyPayload) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *EmptyPayload) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s EmptyPayload) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfEmptyPayload = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes EmptyPayload from json. func (s *EmptyPayload) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode EmptyPayload to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode EmptyPayload") } @@ -1040,7 +1054,7 @@ func (s *EmptyPayload) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *EmptyPayload) MarshalJSON() ([]byte, error) { +func (s EmptyPayload) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil diff --git a/examples/ex_tinkoff/oas_schemas_gen.go b/examples/ex_tinkoff/oas_schemas_gen.go index b38073ffc..52621732b 100644 --- a/examples/ex_tinkoff/oas_schemas_gen.go +++ b/examples/ex_tinkoff/oas_schemas_gen.go @@ -6,6 +6,7 @@ import ( "time" "github.com/go-faster/errors" + "github.com/go-faster/jx" ) // Ref: #/components/schemas/BrokerAccountType @@ -522,7 +523,16 @@ func (*Empty) sandboxCurrenciesBalancePostRes() {} func (*Empty) sandboxPositionsBalancePostRes() {} func (*Empty) sandboxRemovePostRes() {} -type EmptyPayload struct{} +type EmptyPayload map[string]jx.Raw + +func (s *EmptyPayload) init() EmptyPayload { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} // Ref: #/components/schemas/Error type Error struct { diff --git a/examples/ex_tinkoff/oas_test_examples_gen_test.go b/examples/ex_tinkoff/oas_test_examples_gen_test.go index a0ab9e49b..07271e7ab 100644 --- a/examples/ex_tinkoff/oas_test_examples_gen_test.go +++ b/examples/ex_tinkoff/oas_test_examples_gen_test.go @@ -121,6 +121,7 @@ func TestEmpty_EncodeDecode(t *testing.T) { } func TestEmptyPayload_EncodeDecode(t *testing.T) { var typ EmptyPayload + typ = make(EmptyPayload) typ.SetFake() e := jx.Encoder{} @@ -129,6 +130,7 @@ func TestEmptyPayload_EncodeDecode(t *testing.T) { require.True(t, std.Valid(data), "Encoded: %s", data) var typ2 EmptyPayload + typ2 = make(EmptyPayload) require.NoError(t, typ2.Decode(jx.DecodeBytes(data))) } func TestError_EncodeDecode(t *testing.T) { diff --git a/gen/schema_gen.go b/gen/schema_gen.go index 263164eb5..8e0ea538a 100644 --- a/gen/schema_gen.go +++ b/gen/schema_gen.go @@ -261,12 +261,14 @@ func (g *schemaGen) generate2(name string, schema *jsonschema.Schema) (ret *ir.T hasProps := len(schema.Properties) > 0 hasAdditionalProps := false denyAdditionalProps := false + hasPatternProps := len(schema.PatternProperties) > 0 + isPatternSingle := len(schema.PatternProperties) == 1 if p := schema.AdditionalProperties; p != nil { hasAdditionalProps = *p denyAdditionalProps = !*p + } else if !hasProps && !hasPatternProps { + hasAdditionalProps = true } - hasPatternProps := len(schema.PatternProperties) > 0 - isPatternSingle := len(schema.PatternProperties) == 1 if !hasProps { if (!hasAdditionalProps && isPatternSingle) || (hasAdditionalProps && !hasPatternProps) { diff --git a/internal/integration/generate.go b/internal/integration/generate.go index 39bd8e222..e61d0cf21 100644 --- a/internal/integration/generate.go +++ b/internal/integration/generate.go @@ -32,6 +32,7 @@ package integration // //go:generate go run ../../cmd/ogen -v --clean -target test_enum_naming ../../_testdata/positive/enum_naming.yml //go:generate go run ../../cmd/ogen -v --clean -target test_naming_extensions ../../_testdata/positive/naming_extensions.json +//go:generate go run ../../cmd/ogen -v --clean -target test_free_form ../../_testdata/positive/free_form.json // // Regression test. // diff --git a/internal/integration/sample_api/oas_faker_gen.go b/internal/integration/sample_api/oas_faker_gen.go index 01da7ed48..f5e63beb4 100644 --- a/internal/integration/sample_api/oas_faker_gen.go +++ b/internal/integration/sample_api/oas_faker_gen.go @@ -780,8 +780,8 @@ func (s *OneOfMappingReferenceB) SetFake() { } } { - { // Keep pointer nil to prevent infinite recursion. - s.Data = nil + { + s.Data.SetFake() } } { @@ -793,6 +793,13 @@ func (s *OneOfMappingReferenceB) SetFake() { // SetFake set fake values. func (s *OneOfMappingReferenceBData) SetFake() { + var ( + elem jx.Raw + m map[string]jx.Raw = s.init() + ) + for i := 0; i < 0; i++ { + m[fmt.Sprintf("fake%d", i)] = elem + } } // SetFake set fake values. @@ -1153,6 +1160,15 @@ func (s *OptOneOfMappingReference) SetFake() { s.SetTo(elem) } +// SetFake set fake values. +func (s *OptOneOfMappingReferenceBData) SetFake() { + var elem OneOfMappingReferenceBData + { + elem.SetFake() + } + s.SetTo(elem) +} + // SetFake set fake values. func (s *OptOneOfUUIDAndIntEnum) SetFake() { var elem OneOfUUIDAndIntEnum diff --git a/internal/integration/sample_api/oas_json_gen.go b/internal/integration/sample_api/oas_json_gen.go index be3fdeb67..2240bf44a 100644 --- a/internal/integration/sample_api/oas_json_gen.go +++ b/internal/integration/sample_api/oas_json_gen.go @@ -4859,7 +4859,7 @@ func (s OneOfMappingReference) encodeFields(e *jx.Encoder) { } } { - if s.Data != nil { + if s.Data.Set { e.FieldStart("data") s.Data.Encode(e) } @@ -5058,7 +5058,7 @@ func (s *OneOfMappingReferenceB) encodeFields(e *jx.Encoder) { } } { - if s.Data != nil { + if s.Data.Set { e.FieldStart("data") s.Data.Encode(e) } @@ -5108,12 +5108,10 @@ func (s *OneOfMappingReferenceB) Decode(d *jx.Decoder) error { } case "data": if err := func() error { - s.Data = nil - var elem OneOfMappingReferenceBData - if err := elem.Decode(d); err != nil { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { return err } - s.Data = &elem return nil }(); err != nil { return errors.Wrap(err, "decode field \"data\"") @@ -5153,29 +5151,43 @@ func (s *OneOfMappingReferenceB) UnmarshalJSON(data []byte) error { } // Encode implements json.Marshaler. -func (s *OneOfMappingReferenceBData) Encode(e *jx.Encoder) { +func (s OneOfMappingReferenceBData) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *OneOfMappingReferenceBData) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s OneOfMappingReferenceBData) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfOneOfMappingReferenceBData = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes OneOfMappingReferenceBData from json. func (s *OneOfMappingReferenceBData) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode OneOfMappingReferenceBData to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode OneOfMappingReferenceBData") } @@ -5184,7 +5196,7 @@ func (s *OneOfMappingReferenceBData) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *OneOfMappingReferenceBData) MarshalJSON() ([]byte, error) { +func (s OneOfMappingReferenceBData) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -6987,6 +6999,40 @@ func (s *OptOneOfMappingReference) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode encodes OneOfMappingReferenceBData as json. +func (o OptOneOfMappingReferenceBData) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes OneOfMappingReferenceBData from json. +func (o *OptOneOfMappingReferenceBData) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptOneOfMappingReferenceBData to nil") + } + o.Set = true + o.Value = make(OneOfMappingReferenceBData) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptOneOfMappingReferenceBData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptOneOfMappingReferenceBData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode encodes OneOfUUIDAndIntEnum as json. func (o OptOneOfUUIDAndIntEnum) Encode(e *jx.Encoder) { if !o.Set { diff --git a/internal/integration/sample_api/oas_schemas_gen.go b/internal/integration/sample_api/oas_schemas_gen.go index 6856cbbd0..ee5b1423c 100644 --- a/internal/integration/sample_api/oas_schemas_gen.go +++ b/internal/integration/sample_api/oas_schemas_gen.go @@ -2373,10 +2373,10 @@ func (s *OneOfMappingReferenceA) SetDescription(val OptString) { // Ref: #/components/schemas/OneOfMappingReferenceB type OneOfMappingReferenceB struct { - InfoType OptString `json:"infoType"` - Code OptInt32 `json:"code"` - Data *OneOfMappingReferenceBData `json:"data"` - Info OptString `json:"info"` + InfoType OptString `json:"infoType"` + Code OptInt32 `json:"code"` + Data OptOneOfMappingReferenceBData `json:"data"` + Info OptString `json:"info"` } // GetInfoType returns the value of InfoType. @@ -2390,7 +2390,7 @@ func (s *OneOfMappingReferenceB) GetCode() OptInt32 { } // GetData returns the value of Data. -func (s *OneOfMappingReferenceB) GetData() *OneOfMappingReferenceBData { +func (s *OneOfMappingReferenceB) GetData() OptOneOfMappingReferenceBData { return s.Data } @@ -2410,7 +2410,7 @@ func (s *OneOfMappingReferenceB) SetCode(val OptInt32) { } // SetData sets the value of Data. -func (s *OneOfMappingReferenceB) SetData(val *OneOfMappingReferenceBData) { +func (s *OneOfMappingReferenceB) SetData(val OptOneOfMappingReferenceBData) { s.Data = val } @@ -2419,7 +2419,16 @@ func (s *OneOfMappingReferenceB) SetInfo(val OptString) { s.Info = val } -type OneOfMappingReferenceBData struct{} +type OneOfMappingReferenceBData map[string]jx.Raw + +func (s *OneOfMappingReferenceBData) init() OneOfMappingReferenceBData { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} // Ref: #/components/schemas/OneOfNullables // OneOfNullables represents sum type. @@ -4244,6 +4253,52 @@ func (o OptOneOfMappingReference) Or(d OneOfMappingReference) OneOfMappingRefere return d } +// NewOptOneOfMappingReferenceBData returns new OptOneOfMappingReferenceBData with value set to v. +func NewOptOneOfMappingReferenceBData(v OneOfMappingReferenceBData) OptOneOfMappingReferenceBData { + return OptOneOfMappingReferenceBData{ + Value: v, + Set: true, + } +} + +// OptOneOfMappingReferenceBData is optional OneOfMappingReferenceBData. +type OptOneOfMappingReferenceBData struct { + Value OneOfMappingReferenceBData + Set bool +} + +// IsSet returns true if OptOneOfMappingReferenceBData was set. +func (o OptOneOfMappingReferenceBData) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptOneOfMappingReferenceBData) Reset() { + var v OneOfMappingReferenceBData + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptOneOfMappingReferenceBData) SetTo(v OneOfMappingReferenceBData) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptOneOfMappingReferenceBData) Get() (v OneOfMappingReferenceBData, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptOneOfMappingReferenceBData) Or(d OneOfMappingReferenceBData) OneOfMappingReferenceBData { + if v, ok := o.Get(); ok { + return v + } + return d +} + // NewOptOneOfUUIDAndIntEnum returns new OptOneOfUUIDAndIntEnum with value set to v. func NewOptOneOfUUIDAndIntEnum(v OneOfUUIDAndIntEnum) OptOneOfUUIDAndIntEnum { return OptOneOfUUIDAndIntEnum{ diff --git a/internal/integration/sample_api/oas_test_examples_gen_test.go b/internal/integration/sample_api/oas_test_examples_gen_test.go index be1228716..9073af5a3 100644 --- a/internal/integration/sample_api/oas_test_examples_gen_test.go +++ b/internal/integration/sample_api/oas_test_examples_gen_test.go @@ -573,6 +573,7 @@ func TestOneOfMappingReferenceB_EncodeDecode(t *testing.T) { } func TestOneOfMappingReferenceBData_EncodeDecode(t *testing.T) { var typ OneOfMappingReferenceBData + typ = make(OneOfMappingReferenceBData) typ.SetFake() e := jx.Encoder{} @@ -581,6 +582,7 @@ func TestOneOfMappingReferenceBData_EncodeDecode(t *testing.T) { require.True(t, std.Valid(data), "Encoded: %s", data) var typ2 OneOfMappingReferenceBData + typ2 = make(OneOfMappingReferenceBData) require.NoError(t, typ2.Decode(jx.DecodeBytes(data))) } func TestOneOfNullables_EncodeDecode(t *testing.T) { diff --git a/internal/integration/sample_api_nc/oas_json_gen.go b/internal/integration/sample_api_nc/oas_json_gen.go index be3fdeb67..2240bf44a 100644 --- a/internal/integration/sample_api_nc/oas_json_gen.go +++ b/internal/integration/sample_api_nc/oas_json_gen.go @@ -4859,7 +4859,7 @@ func (s OneOfMappingReference) encodeFields(e *jx.Encoder) { } } { - if s.Data != nil { + if s.Data.Set { e.FieldStart("data") s.Data.Encode(e) } @@ -5058,7 +5058,7 @@ func (s *OneOfMappingReferenceB) encodeFields(e *jx.Encoder) { } } { - if s.Data != nil { + if s.Data.Set { e.FieldStart("data") s.Data.Encode(e) } @@ -5108,12 +5108,10 @@ func (s *OneOfMappingReferenceB) Decode(d *jx.Decoder) error { } case "data": if err := func() error { - s.Data = nil - var elem OneOfMappingReferenceBData - if err := elem.Decode(d); err != nil { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { return err } - s.Data = &elem return nil }(); err != nil { return errors.Wrap(err, "decode field \"data\"") @@ -5153,29 +5151,43 @@ func (s *OneOfMappingReferenceB) UnmarshalJSON(data []byte) error { } // Encode implements json.Marshaler. -func (s *OneOfMappingReferenceBData) Encode(e *jx.Encoder) { +func (s OneOfMappingReferenceBData) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *OneOfMappingReferenceBData) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s OneOfMappingReferenceBData) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfOneOfMappingReferenceBData = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes OneOfMappingReferenceBData from json. func (s *OneOfMappingReferenceBData) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode OneOfMappingReferenceBData to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode OneOfMappingReferenceBData") } @@ -5184,7 +5196,7 @@ func (s *OneOfMappingReferenceBData) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *OneOfMappingReferenceBData) MarshalJSON() ([]byte, error) { +func (s OneOfMappingReferenceBData) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -6987,6 +6999,40 @@ func (s *OptOneOfMappingReference) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode encodes OneOfMappingReferenceBData as json. +func (o OptOneOfMappingReferenceBData) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes OneOfMappingReferenceBData from json. +func (o *OptOneOfMappingReferenceBData) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptOneOfMappingReferenceBData to nil") + } + o.Set = true + o.Value = make(OneOfMappingReferenceBData) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptOneOfMappingReferenceBData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptOneOfMappingReferenceBData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode encodes OneOfUUIDAndIntEnum as json. func (o OptOneOfUUIDAndIntEnum) Encode(e *jx.Encoder) { if !o.Set { diff --git a/internal/integration/sample_api_nc/oas_schemas_gen.go b/internal/integration/sample_api_nc/oas_schemas_gen.go index 6856cbbd0..ee5b1423c 100644 --- a/internal/integration/sample_api_nc/oas_schemas_gen.go +++ b/internal/integration/sample_api_nc/oas_schemas_gen.go @@ -2373,10 +2373,10 @@ func (s *OneOfMappingReferenceA) SetDescription(val OptString) { // Ref: #/components/schemas/OneOfMappingReferenceB type OneOfMappingReferenceB struct { - InfoType OptString `json:"infoType"` - Code OptInt32 `json:"code"` - Data *OneOfMappingReferenceBData `json:"data"` - Info OptString `json:"info"` + InfoType OptString `json:"infoType"` + Code OptInt32 `json:"code"` + Data OptOneOfMappingReferenceBData `json:"data"` + Info OptString `json:"info"` } // GetInfoType returns the value of InfoType. @@ -2390,7 +2390,7 @@ func (s *OneOfMappingReferenceB) GetCode() OptInt32 { } // GetData returns the value of Data. -func (s *OneOfMappingReferenceB) GetData() *OneOfMappingReferenceBData { +func (s *OneOfMappingReferenceB) GetData() OptOneOfMappingReferenceBData { return s.Data } @@ -2410,7 +2410,7 @@ func (s *OneOfMappingReferenceB) SetCode(val OptInt32) { } // SetData sets the value of Data. -func (s *OneOfMappingReferenceB) SetData(val *OneOfMappingReferenceBData) { +func (s *OneOfMappingReferenceB) SetData(val OptOneOfMappingReferenceBData) { s.Data = val } @@ -2419,7 +2419,16 @@ func (s *OneOfMappingReferenceB) SetInfo(val OptString) { s.Info = val } -type OneOfMappingReferenceBData struct{} +type OneOfMappingReferenceBData map[string]jx.Raw + +func (s *OneOfMappingReferenceBData) init() OneOfMappingReferenceBData { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} // Ref: #/components/schemas/OneOfNullables // OneOfNullables represents sum type. @@ -4244,6 +4253,52 @@ func (o OptOneOfMappingReference) Or(d OneOfMappingReference) OneOfMappingRefere return d } +// NewOptOneOfMappingReferenceBData returns new OptOneOfMappingReferenceBData with value set to v. +func NewOptOneOfMappingReferenceBData(v OneOfMappingReferenceBData) OptOneOfMappingReferenceBData { + return OptOneOfMappingReferenceBData{ + Value: v, + Set: true, + } +} + +// OptOneOfMappingReferenceBData is optional OneOfMappingReferenceBData. +type OptOneOfMappingReferenceBData struct { + Value OneOfMappingReferenceBData + Set bool +} + +// IsSet returns true if OptOneOfMappingReferenceBData was set. +func (o OptOneOfMappingReferenceBData) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptOneOfMappingReferenceBData) Reset() { + var v OneOfMappingReferenceBData + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptOneOfMappingReferenceBData) SetTo(v OneOfMappingReferenceBData) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptOneOfMappingReferenceBData) Get() (v OneOfMappingReferenceBData, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptOneOfMappingReferenceBData) Or(d OneOfMappingReferenceBData) OneOfMappingReferenceBData { + if v, ok := o.Get(); ok { + return v + } + return d +} + // NewOptOneOfUUIDAndIntEnum returns new OptOneOfUUIDAndIntEnum with value set to v. func NewOptOneOfUUIDAndIntEnum(v OneOfUUIDAndIntEnum) OptOneOfUUIDAndIntEnum { return OptOneOfUUIDAndIntEnum{ diff --git a/internal/integration/sample_api_no_otel/oas_json_gen.go b/internal/integration/sample_api_no_otel/oas_json_gen.go index be3fdeb67..2240bf44a 100644 --- a/internal/integration/sample_api_no_otel/oas_json_gen.go +++ b/internal/integration/sample_api_no_otel/oas_json_gen.go @@ -4859,7 +4859,7 @@ func (s OneOfMappingReference) encodeFields(e *jx.Encoder) { } } { - if s.Data != nil { + if s.Data.Set { e.FieldStart("data") s.Data.Encode(e) } @@ -5058,7 +5058,7 @@ func (s *OneOfMappingReferenceB) encodeFields(e *jx.Encoder) { } } { - if s.Data != nil { + if s.Data.Set { e.FieldStart("data") s.Data.Encode(e) } @@ -5108,12 +5108,10 @@ func (s *OneOfMappingReferenceB) Decode(d *jx.Decoder) error { } case "data": if err := func() error { - s.Data = nil - var elem OneOfMappingReferenceBData - if err := elem.Decode(d); err != nil { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { return err } - s.Data = &elem return nil }(); err != nil { return errors.Wrap(err, "decode field \"data\"") @@ -5153,29 +5151,43 @@ func (s *OneOfMappingReferenceB) UnmarshalJSON(data []byte) error { } // Encode implements json.Marshaler. -func (s *OneOfMappingReferenceBData) Encode(e *jx.Encoder) { +func (s OneOfMappingReferenceBData) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *OneOfMappingReferenceBData) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s OneOfMappingReferenceBData) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfOneOfMappingReferenceBData = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes OneOfMappingReferenceBData from json. func (s *OneOfMappingReferenceBData) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode OneOfMappingReferenceBData to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode OneOfMappingReferenceBData") } @@ -5184,7 +5196,7 @@ func (s *OneOfMappingReferenceBData) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *OneOfMappingReferenceBData) MarshalJSON() ([]byte, error) { +func (s OneOfMappingReferenceBData) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -6987,6 +6999,40 @@ func (s *OptOneOfMappingReference) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode encodes OneOfMappingReferenceBData as json. +func (o OptOneOfMappingReferenceBData) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes OneOfMappingReferenceBData from json. +func (o *OptOneOfMappingReferenceBData) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptOneOfMappingReferenceBData to nil") + } + o.Set = true + o.Value = make(OneOfMappingReferenceBData) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptOneOfMappingReferenceBData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptOneOfMappingReferenceBData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode encodes OneOfUUIDAndIntEnum as json. func (o OptOneOfUUIDAndIntEnum) Encode(e *jx.Encoder) { if !o.Set { diff --git a/internal/integration/sample_api_no_otel/oas_schemas_gen.go b/internal/integration/sample_api_no_otel/oas_schemas_gen.go index 6856cbbd0..ee5b1423c 100644 --- a/internal/integration/sample_api_no_otel/oas_schemas_gen.go +++ b/internal/integration/sample_api_no_otel/oas_schemas_gen.go @@ -2373,10 +2373,10 @@ func (s *OneOfMappingReferenceA) SetDescription(val OptString) { // Ref: #/components/schemas/OneOfMappingReferenceB type OneOfMappingReferenceB struct { - InfoType OptString `json:"infoType"` - Code OptInt32 `json:"code"` - Data *OneOfMappingReferenceBData `json:"data"` - Info OptString `json:"info"` + InfoType OptString `json:"infoType"` + Code OptInt32 `json:"code"` + Data OptOneOfMappingReferenceBData `json:"data"` + Info OptString `json:"info"` } // GetInfoType returns the value of InfoType. @@ -2390,7 +2390,7 @@ func (s *OneOfMappingReferenceB) GetCode() OptInt32 { } // GetData returns the value of Data. -func (s *OneOfMappingReferenceB) GetData() *OneOfMappingReferenceBData { +func (s *OneOfMappingReferenceB) GetData() OptOneOfMappingReferenceBData { return s.Data } @@ -2410,7 +2410,7 @@ func (s *OneOfMappingReferenceB) SetCode(val OptInt32) { } // SetData sets the value of Data. -func (s *OneOfMappingReferenceB) SetData(val *OneOfMappingReferenceBData) { +func (s *OneOfMappingReferenceB) SetData(val OptOneOfMappingReferenceBData) { s.Data = val } @@ -2419,7 +2419,16 @@ func (s *OneOfMappingReferenceB) SetInfo(val OptString) { s.Info = val } -type OneOfMappingReferenceBData struct{} +type OneOfMappingReferenceBData map[string]jx.Raw + +func (s *OneOfMappingReferenceBData) init() OneOfMappingReferenceBData { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} // Ref: #/components/schemas/OneOfNullables // OneOfNullables represents sum type. @@ -4244,6 +4253,52 @@ func (o OptOneOfMappingReference) Or(d OneOfMappingReference) OneOfMappingRefere return d } +// NewOptOneOfMappingReferenceBData returns new OptOneOfMappingReferenceBData with value set to v. +func NewOptOneOfMappingReferenceBData(v OneOfMappingReferenceBData) OptOneOfMappingReferenceBData { + return OptOneOfMappingReferenceBData{ + Value: v, + Set: true, + } +} + +// OptOneOfMappingReferenceBData is optional OneOfMappingReferenceBData. +type OptOneOfMappingReferenceBData struct { + Value OneOfMappingReferenceBData + Set bool +} + +// IsSet returns true if OptOneOfMappingReferenceBData was set. +func (o OptOneOfMappingReferenceBData) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptOneOfMappingReferenceBData) Reset() { + var v OneOfMappingReferenceBData + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptOneOfMappingReferenceBData) SetTo(v OneOfMappingReferenceBData) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptOneOfMappingReferenceBData) Get() (v OneOfMappingReferenceBData, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptOneOfMappingReferenceBData) Or(d OneOfMappingReferenceBData) OneOfMappingReferenceBData { + if v, ok := o.Get(); ok { + return v + } + return d +} + // NewOptOneOfUUIDAndIntEnum returns new OptOneOfUUIDAndIntEnum with value set to v. func NewOptOneOfUUIDAndIntEnum(v OneOfUUIDAndIntEnum) OptOneOfUUIDAndIntEnum { return OptOneOfUUIDAndIntEnum{ diff --git a/internal/integration/sample_api_ns/oas_json_gen.go b/internal/integration/sample_api_ns/oas_json_gen.go index be3fdeb67..2240bf44a 100644 --- a/internal/integration/sample_api_ns/oas_json_gen.go +++ b/internal/integration/sample_api_ns/oas_json_gen.go @@ -4859,7 +4859,7 @@ func (s OneOfMappingReference) encodeFields(e *jx.Encoder) { } } { - if s.Data != nil { + if s.Data.Set { e.FieldStart("data") s.Data.Encode(e) } @@ -5058,7 +5058,7 @@ func (s *OneOfMappingReferenceB) encodeFields(e *jx.Encoder) { } } { - if s.Data != nil { + if s.Data.Set { e.FieldStart("data") s.Data.Encode(e) } @@ -5108,12 +5108,10 @@ func (s *OneOfMappingReferenceB) Decode(d *jx.Decoder) error { } case "data": if err := func() error { - s.Data = nil - var elem OneOfMappingReferenceBData - if err := elem.Decode(d); err != nil { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { return err } - s.Data = &elem return nil }(); err != nil { return errors.Wrap(err, "decode field \"data\"") @@ -5153,29 +5151,43 @@ func (s *OneOfMappingReferenceB) UnmarshalJSON(data []byte) error { } // Encode implements json.Marshaler. -func (s *OneOfMappingReferenceBData) Encode(e *jx.Encoder) { +func (s OneOfMappingReferenceBData) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *OneOfMappingReferenceBData) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s OneOfMappingReferenceBData) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfOneOfMappingReferenceBData = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes OneOfMappingReferenceBData from json. func (s *OneOfMappingReferenceBData) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode OneOfMappingReferenceBData to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode OneOfMappingReferenceBData") } @@ -5184,7 +5196,7 @@ func (s *OneOfMappingReferenceBData) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *OneOfMappingReferenceBData) MarshalJSON() ([]byte, error) { +func (s OneOfMappingReferenceBData) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -6987,6 +6999,40 @@ func (s *OptOneOfMappingReference) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode encodes OneOfMappingReferenceBData as json. +func (o OptOneOfMappingReferenceBData) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes OneOfMappingReferenceBData from json. +func (o *OptOneOfMappingReferenceBData) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptOneOfMappingReferenceBData to nil") + } + o.Set = true + o.Value = make(OneOfMappingReferenceBData) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptOneOfMappingReferenceBData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptOneOfMappingReferenceBData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode encodes OneOfUUIDAndIntEnum as json. func (o OptOneOfUUIDAndIntEnum) Encode(e *jx.Encoder) { if !o.Set { diff --git a/internal/integration/sample_api_ns/oas_schemas_gen.go b/internal/integration/sample_api_ns/oas_schemas_gen.go index 6856cbbd0..ee5b1423c 100644 --- a/internal/integration/sample_api_ns/oas_schemas_gen.go +++ b/internal/integration/sample_api_ns/oas_schemas_gen.go @@ -2373,10 +2373,10 @@ func (s *OneOfMappingReferenceA) SetDescription(val OptString) { // Ref: #/components/schemas/OneOfMappingReferenceB type OneOfMappingReferenceB struct { - InfoType OptString `json:"infoType"` - Code OptInt32 `json:"code"` - Data *OneOfMappingReferenceBData `json:"data"` - Info OptString `json:"info"` + InfoType OptString `json:"infoType"` + Code OptInt32 `json:"code"` + Data OptOneOfMappingReferenceBData `json:"data"` + Info OptString `json:"info"` } // GetInfoType returns the value of InfoType. @@ -2390,7 +2390,7 @@ func (s *OneOfMappingReferenceB) GetCode() OptInt32 { } // GetData returns the value of Data. -func (s *OneOfMappingReferenceB) GetData() *OneOfMappingReferenceBData { +func (s *OneOfMappingReferenceB) GetData() OptOneOfMappingReferenceBData { return s.Data } @@ -2410,7 +2410,7 @@ func (s *OneOfMappingReferenceB) SetCode(val OptInt32) { } // SetData sets the value of Data. -func (s *OneOfMappingReferenceB) SetData(val *OneOfMappingReferenceBData) { +func (s *OneOfMappingReferenceB) SetData(val OptOneOfMappingReferenceBData) { s.Data = val } @@ -2419,7 +2419,16 @@ func (s *OneOfMappingReferenceB) SetInfo(val OptString) { s.Info = val } -type OneOfMappingReferenceBData struct{} +type OneOfMappingReferenceBData map[string]jx.Raw + +func (s *OneOfMappingReferenceBData) init() OneOfMappingReferenceBData { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} // Ref: #/components/schemas/OneOfNullables // OneOfNullables represents sum type. @@ -4244,6 +4253,52 @@ func (o OptOneOfMappingReference) Or(d OneOfMappingReference) OneOfMappingRefere return d } +// NewOptOneOfMappingReferenceBData returns new OptOneOfMappingReferenceBData with value set to v. +func NewOptOneOfMappingReferenceBData(v OneOfMappingReferenceBData) OptOneOfMappingReferenceBData { + return OptOneOfMappingReferenceBData{ + Value: v, + Set: true, + } +} + +// OptOneOfMappingReferenceBData is optional OneOfMappingReferenceBData. +type OptOneOfMappingReferenceBData struct { + Value OneOfMappingReferenceBData + Set bool +} + +// IsSet returns true if OptOneOfMappingReferenceBData was set. +func (o OptOneOfMappingReferenceBData) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptOneOfMappingReferenceBData) Reset() { + var v OneOfMappingReferenceBData + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptOneOfMappingReferenceBData) SetTo(v OneOfMappingReferenceBData) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptOneOfMappingReferenceBData) Get() (v OneOfMappingReferenceBData, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptOneOfMappingReferenceBData) Or(d OneOfMappingReferenceBData) OneOfMappingReferenceBData { + if v, ok := o.Get(); ok { + return v + } + return d +} + // NewOptOneOfUUIDAndIntEnum returns new OptOneOfUUIDAndIntEnum with value set to v. func NewOptOneOfUUIDAndIntEnum(v OneOfUUIDAndIntEnum) OptOneOfUUIDAndIntEnum { return OptOneOfUUIDAndIntEnum{ diff --git a/internal/integration/sample_api_nsnc/oas_json_gen.go b/internal/integration/sample_api_nsnc/oas_json_gen.go index be3fdeb67..2240bf44a 100644 --- a/internal/integration/sample_api_nsnc/oas_json_gen.go +++ b/internal/integration/sample_api_nsnc/oas_json_gen.go @@ -4859,7 +4859,7 @@ func (s OneOfMappingReference) encodeFields(e *jx.Encoder) { } } { - if s.Data != nil { + if s.Data.Set { e.FieldStart("data") s.Data.Encode(e) } @@ -5058,7 +5058,7 @@ func (s *OneOfMappingReferenceB) encodeFields(e *jx.Encoder) { } } { - if s.Data != nil { + if s.Data.Set { e.FieldStart("data") s.Data.Encode(e) } @@ -5108,12 +5108,10 @@ func (s *OneOfMappingReferenceB) Decode(d *jx.Decoder) error { } case "data": if err := func() error { - s.Data = nil - var elem OneOfMappingReferenceBData - if err := elem.Decode(d); err != nil { + s.Data.Reset() + if err := s.Data.Decode(d); err != nil { return err } - s.Data = &elem return nil }(); err != nil { return errors.Wrap(err, "decode field \"data\"") @@ -5153,29 +5151,43 @@ func (s *OneOfMappingReferenceB) UnmarshalJSON(data []byte) error { } // Encode implements json.Marshaler. -func (s *OneOfMappingReferenceBData) Encode(e *jx.Encoder) { +func (s OneOfMappingReferenceBData) Encode(e *jx.Encoder) { e.ObjStart() s.encodeFields(e) e.ObjEnd() } -// encodeFields encodes fields. -func (s *OneOfMappingReferenceBData) encodeFields(e *jx.Encoder) { -} +// encodeFields implements json.Marshaler. +func (s OneOfMappingReferenceBData) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) -var jsonFieldsNameOfOneOfMappingReferenceBData = [0]string{} + if len(elem) != 0 { + e.Raw(elem) + } + } +} // Decode decodes OneOfMappingReferenceBData from json. func (s *OneOfMappingReferenceBData) Decode(d *jx.Decoder) error { if s == nil { return errors.New("invalid: unable to decode OneOfMappingReferenceBData to nil") } - + m := s.init() if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { - switch string(k) { - default: - return d.Skip() + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) } + m[string(k)] = elem + return nil }); err != nil { return errors.Wrap(err, "decode OneOfMappingReferenceBData") } @@ -5184,7 +5196,7 @@ func (s *OneOfMappingReferenceBData) Decode(d *jx.Decoder) error { } // MarshalJSON implements stdjson.Marshaler. -func (s *OneOfMappingReferenceBData) MarshalJSON() ([]byte, error) { +func (s OneOfMappingReferenceBData) MarshalJSON() ([]byte, error) { e := jx.Encoder{} s.Encode(&e) return e.Bytes(), nil @@ -6987,6 +6999,40 @@ func (s *OptOneOfMappingReference) UnmarshalJSON(data []byte) error { return s.Decode(d) } +// Encode encodes OneOfMappingReferenceBData as json. +func (o OptOneOfMappingReferenceBData) Encode(e *jx.Encoder) { + if !o.Set { + return + } + o.Value.Encode(e) +} + +// Decode decodes OneOfMappingReferenceBData from json. +func (o *OptOneOfMappingReferenceBData) Decode(d *jx.Decoder) error { + if o == nil { + return errors.New("invalid: unable to decode OptOneOfMappingReferenceBData to nil") + } + o.Set = true + o.Value = make(OneOfMappingReferenceBData) + if err := o.Value.Decode(d); err != nil { + return err + } + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s OptOneOfMappingReferenceBData) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *OptOneOfMappingReferenceBData) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + // Encode encodes OneOfUUIDAndIntEnum as json. func (o OptOneOfUUIDAndIntEnum) Encode(e *jx.Encoder) { if !o.Set { diff --git a/internal/integration/sample_api_nsnc/oas_schemas_gen.go b/internal/integration/sample_api_nsnc/oas_schemas_gen.go index 6856cbbd0..ee5b1423c 100644 --- a/internal/integration/sample_api_nsnc/oas_schemas_gen.go +++ b/internal/integration/sample_api_nsnc/oas_schemas_gen.go @@ -2373,10 +2373,10 @@ func (s *OneOfMappingReferenceA) SetDescription(val OptString) { // Ref: #/components/schemas/OneOfMappingReferenceB type OneOfMappingReferenceB struct { - InfoType OptString `json:"infoType"` - Code OptInt32 `json:"code"` - Data *OneOfMappingReferenceBData `json:"data"` - Info OptString `json:"info"` + InfoType OptString `json:"infoType"` + Code OptInt32 `json:"code"` + Data OptOneOfMappingReferenceBData `json:"data"` + Info OptString `json:"info"` } // GetInfoType returns the value of InfoType. @@ -2390,7 +2390,7 @@ func (s *OneOfMappingReferenceB) GetCode() OptInt32 { } // GetData returns the value of Data. -func (s *OneOfMappingReferenceB) GetData() *OneOfMappingReferenceBData { +func (s *OneOfMappingReferenceB) GetData() OptOneOfMappingReferenceBData { return s.Data } @@ -2410,7 +2410,7 @@ func (s *OneOfMappingReferenceB) SetCode(val OptInt32) { } // SetData sets the value of Data. -func (s *OneOfMappingReferenceB) SetData(val *OneOfMappingReferenceBData) { +func (s *OneOfMappingReferenceB) SetData(val OptOneOfMappingReferenceBData) { s.Data = val } @@ -2419,7 +2419,16 @@ func (s *OneOfMappingReferenceB) SetInfo(val OptString) { s.Info = val } -type OneOfMappingReferenceBData struct{} +type OneOfMappingReferenceBData map[string]jx.Raw + +func (s *OneOfMappingReferenceBData) init() OneOfMappingReferenceBData { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} // Ref: #/components/schemas/OneOfNullables // OneOfNullables represents sum type. @@ -4244,6 +4253,52 @@ func (o OptOneOfMappingReference) Or(d OneOfMappingReference) OneOfMappingRefere return d } +// NewOptOneOfMappingReferenceBData returns new OptOneOfMappingReferenceBData with value set to v. +func NewOptOneOfMappingReferenceBData(v OneOfMappingReferenceBData) OptOneOfMappingReferenceBData { + return OptOneOfMappingReferenceBData{ + Value: v, + Set: true, + } +} + +// OptOneOfMappingReferenceBData is optional OneOfMappingReferenceBData. +type OptOneOfMappingReferenceBData struct { + Value OneOfMappingReferenceBData + Set bool +} + +// IsSet returns true if OptOneOfMappingReferenceBData was set. +func (o OptOneOfMappingReferenceBData) IsSet() bool { return o.Set } + +// Reset unsets value. +func (o *OptOneOfMappingReferenceBData) Reset() { + var v OneOfMappingReferenceBData + o.Value = v + o.Set = false +} + +// SetTo sets value to v. +func (o *OptOneOfMappingReferenceBData) SetTo(v OneOfMappingReferenceBData) { + o.Set = true + o.Value = v +} + +// Get returns value and boolean that denotes whether value was set. +func (o OptOneOfMappingReferenceBData) Get() (v OneOfMappingReferenceBData, ok bool) { + if !o.Set { + return v, false + } + return o.Value, true +} + +// Or returns value if set, or given parameter if does not. +func (o OptOneOfMappingReferenceBData) Or(d OneOfMappingReferenceBData) OneOfMappingReferenceBData { + if v, ok := o.Get(); ok { + return v + } + return d +} + // NewOptOneOfUUIDAndIntEnum returns new OptOneOfUUIDAndIntEnum with value set to v. func NewOptOneOfUUIDAndIntEnum(v OneOfUUIDAndIntEnum) OptOneOfUUIDAndIntEnum { return OptOneOfUUIDAndIntEnum{ diff --git a/internal/integration/test_free_form/oas_cfg_gen.go b/internal/integration/test_free_form/oas_cfg_gen.go new file mode 100644 index 000000000..fc3ff3449 --- /dev/null +++ b/internal/integration/test_free_form/oas_cfg_gen.go @@ -0,0 +1,283 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "net/http" + + "go.opentelemetry.io/otel" + "go.opentelemetry.io/otel/metric" + "go.opentelemetry.io/otel/trace" + + ht "github.com/ogen-go/ogen/http" + "github.com/ogen-go/ogen/middleware" + "github.com/ogen-go/ogen/ogenerrors" + "github.com/ogen-go/ogen/otelogen" +) + +var ( + // Allocate option closure once. + clientSpanKind = trace.WithSpanKind(trace.SpanKindClient) + // Allocate option closure once. + serverSpanKind = trace.WithSpanKind(trace.SpanKindServer) +) + +type ( + optionFunc[C any] func(*C) + otelOptionFunc func(*otelConfig) +) + +type otelConfig struct { + TracerProvider trace.TracerProvider + Tracer trace.Tracer + MeterProvider metric.MeterProvider + Meter metric.Meter +} + +func (cfg *otelConfig) initOTEL() { + if cfg.TracerProvider == nil { + cfg.TracerProvider = otel.GetTracerProvider() + } + if cfg.MeterProvider == nil { + cfg.MeterProvider = otel.GetMeterProvider() + } + cfg.Tracer = cfg.TracerProvider.Tracer(otelogen.Name, + trace.WithInstrumentationVersion(otelogen.SemVersion()), + ) + cfg.Meter = cfg.MeterProvider.Meter(otelogen.Name, + metric.WithInstrumentationVersion(otelogen.SemVersion()), + ) +} + +// ErrorHandler is error handler. +type ErrorHandler = ogenerrors.ErrorHandler + +type serverConfig struct { + otelConfig + NotFound http.HandlerFunc + MethodNotAllowed func(w http.ResponseWriter, r *http.Request, allowed string) + ErrorHandler ErrorHandler + Prefix string + Middleware Middleware + MaxMultipartMemory int64 +} + +// ServerOption is server config option. +type ServerOption interface { + applyServer(*serverConfig) +} + +var _ ServerOption = (optionFunc[serverConfig])(nil) + +func (o optionFunc[C]) applyServer(c *C) { + o(c) +} + +var _ ServerOption = (otelOptionFunc)(nil) + +func (o otelOptionFunc) applyServer(c *serverConfig) { + o(&c.otelConfig) +} + +func newServerConfig(opts ...ServerOption) serverConfig { + cfg := serverConfig{ + NotFound: http.NotFound, + MethodNotAllowed: func(w http.ResponseWriter, r *http.Request, allowed string) { + status := http.StatusMethodNotAllowed + if r.Method == "OPTIONS" { + w.Header().Set("Access-Control-Allow-Methods", allowed) + w.Header().Set("Access-Control-Allow-Headers", "Content-Type") + status = http.StatusNoContent + } else { + w.Header().Set("Allow", allowed) + } + w.WriteHeader(status) + }, + ErrorHandler: ogenerrors.DefaultErrorHandler, + Middleware: nil, + MaxMultipartMemory: 32 << 20, // 32 MB + } + for _, opt := range opts { + opt.applyServer(&cfg) + } + cfg.initOTEL() + return cfg +} + +type baseServer struct { + cfg serverConfig + requests metric.Int64Counter + errors metric.Int64Counter + duration metric.Float64Histogram +} + +func (s baseServer) notFound(w http.ResponseWriter, r *http.Request) { + s.cfg.NotFound(w, r) +} + +func (s baseServer) notAllowed(w http.ResponseWriter, r *http.Request, allowed string) { + s.cfg.MethodNotAllowed(w, r, allowed) +} + +func (cfg serverConfig) baseServer() (s baseServer, err error) { + s = baseServer{cfg: cfg} + if s.requests, err = otelogen.ServerRequestCountCounter(s.cfg.Meter); err != nil { + return s, err + } + if s.errors, err = otelogen.ServerErrorsCountCounter(s.cfg.Meter); err != nil { + return s, err + } + if s.duration, err = otelogen.ServerDurationHistogram(s.cfg.Meter); err != nil { + return s, err + } + return s, nil +} + +type clientConfig struct { + otelConfig + Client ht.Client +} + +// ClientOption is client config option. +type ClientOption interface { + applyClient(*clientConfig) +} + +var _ ClientOption = (optionFunc[clientConfig])(nil) + +func (o optionFunc[C]) applyClient(c *C) { + o(c) +} + +var _ ClientOption = (otelOptionFunc)(nil) + +func (o otelOptionFunc) applyClient(c *clientConfig) { + o(&c.otelConfig) +} + +func newClientConfig(opts ...ClientOption) clientConfig { + cfg := clientConfig{ + Client: http.DefaultClient, + } + for _, opt := range opts { + opt.applyClient(&cfg) + } + cfg.initOTEL() + return cfg +} + +type baseClient struct { + cfg clientConfig + requests metric.Int64Counter + errors metric.Int64Counter + duration metric.Float64Histogram +} + +func (cfg clientConfig) baseClient() (c baseClient, err error) { + c = baseClient{cfg: cfg} + if c.requests, err = otelogen.ClientRequestCountCounter(c.cfg.Meter); err != nil { + return c, err + } + if c.errors, err = otelogen.ClientErrorsCountCounter(c.cfg.Meter); err != nil { + return c, err + } + if c.duration, err = otelogen.ClientDurationHistogram(c.cfg.Meter); err != nil { + return c, err + } + return c, nil +} + +// Option is config option. +type Option interface { + ServerOption + ClientOption +} + +// WithTracerProvider specifies a tracer provider to use for creating a tracer. +// +// If none is specified, the global provider is used. +func WithTracerProvider(provider trace.TracerProvider) Option { + return otelOptionFunc(func(cfg *otelConfig) { + if provider != nil { + cfg.TracerProvider = provider + } + }) +} + +// WithMeterProvider specifies a meter provider to use for creating a meter. +// +// If none is specified, the otel.GetMeterProvider() is used. +func WithMeterProvider(provider metric.MeterProvider) Option { + return otelOptionFunc(func(cfg *otelConfig) { + if provider != nil { + cfg.MeterProvider = provider + } + }) +} + +// WithClient specifies http client to use. +func WithClient(client ht.Client) ClientOption { + return optionFunc[clientConfig](func(cfg *clientConfig) { + if client != nil { + cfg.Client = client + } + }) +} + +// WithNotFound specifies Not Found handler to use. +func WithNotFound(notFound http.HandlerFunc) ServerOption { + return optionFunc[serverConfig](func(cfg *serverConfig) { + if notFound != nil { + cfg.NotFound = notFound + } + }) +} + +// WithMethodNotAllowed specifies Method Not Allowed handler to use. +func WithMethodNotAllowed(methodNotAllowed func(w http.ResponseWriter, r *http.Request, allowed string)) ServerOption { + return optionFunc[serverConfig](func(cfg *serverConfig) { + if methodNotAllowed != nil { + cfg.MethodNotAllowed = methodNotAllowed + } + }) +} + +// WithErrorHandler specifies error handler to use. +func WithErrorHandler(h ErrorHandler) ServerOption { + return optionFunc[serverConfig](func(cfg *serverConfig) { + if h != nil { + cfg.ErrorHandler = h + } + }) +} + +// WithPathPrefix specifies server path prefix. +func WithPathPrefix(prefix string) ServerOption { + return optionFunc[serverConfig](func(cfg *serverConfig) { + cfg.Prefix = prefix + }) +} + +// WithMiddleware specifies middlewares to use. +func WithMiddleware(m ...Middleware) ServerOption { + return optionFunc[serverConfig](func(cfg *serverConfig) { + switch len(m) { + case 0: + cfg.Middleware = nil + case 1: + cfg.Middleware = m[0] + default: + cfg.Middleware = middleware.ChainMiddlewares(m...) + } + }) +} + +// WithMaxMultipartMemory specifies limit of memory for storing file parts. +// File parts which can't be stored in memory will be stored on disk in temporary files. +func WithMaxMultipartMemory(max int64) ServerOption { + return optionFunc[serverConfig](func(cfg *serverConfig) { + if max > 0 { + cfg.MaxMultipartMemory = max + } + }) +} diff --git a/internal/integration/test_free_form/oas_client_gen.go b/internal/integration/test_free_form/oas_client_gen.go new file mode 100644 index 000000000..68d3fc756 --- /dev/null +++ b/internal/integration/test_free_form/oas_client_gen.go @@ -0,0 +1,221 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "context" + "net/url" + "strings" + "time" + + "github.com/go-faster/errors" + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/codes" + "go.opentelemetry.io/otel/metric" + semconv "go.opentelemetry.io/otel/semconv/v1.19.0" + "go.opentelemetry.io/otel/trace" + + ht "github.com/ogen-go/ogen/http" + "github.com/ogen-go/ogen/otelogen" + "github.com/ogen-go/ogen/uri" +) + +// Invoker invokes operations described by OpenAPI v3 specification. +type Invoker interface { + // Path1 invokes Path1 operation. + // + // GET /path1 + Path1(ctx context.Context) (*Path1DefStatusCode, error) + // Path2 invokes Path2 operation. + // + // GET /path2 + Path2(ctx context.Context) (*Path2DefStatusCode, error) +} + +// Client implements OAS client. +type Client struct { + serverURL *url.URL + baseClient +} + +var _ Handler = struct { + *Client +}{} + +func trimTrailingSlashes(u *url.URL) { + u.Path = strings.TrimRight(u.Path, "/") + u.RawPath = strings.TrimRight(u.RawPath, "/") +} + +// NewClient initializes new Client defined by OAS. +func NewClient(serverURL string, opts ...ClientOption) (*Client, error) { + u, err := url.Parse(serverURL) + if err != nil { + return nil, err + } + trimTrailingSlashes(u) + + c, err := newClientConfig(opts...).baseClient() + if err != nil { + return nil, err + } + return &Client{ + serverURL: u, + baseClient: c, + }, nil +} + +type serverURLKey struct{} + +// WithServerURL sets context key to override server URL. +func WithServerURL(ctx context.Context, u *url.URL) context.Context { + return context.WithValue(ctx, serverURLKey{}, u) +} + +func (c *Client) requestURL(ctx context.Context) *url.URL { + u, ok := ctx.Value(serverURLKey{}).(*url.URL) + if !ok { + return c.serverURL + } + return u +} + +// Path1 invokes Path1 operation. +// +// GET /path1 +func (c *Client) Path1(ctx context.Context) (*Path1DefStatusCode, error) { + res, err := c.sendPath1(ctx) + return res, err +} + +func (c *Client) sendPath1(ctx context.Context) (res *Path1DefStatusCode, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("Path1"), + semconv.HTTPMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/path1"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "Path1", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/path1" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodePath1Response(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} + +// Path2 invokes Path2 operation. +// +// GET /path2 +func (c *Client) Path2(ctx context.Context) (*Path2DefStatusCode, error) { + res, err := c.sendPath2(ctx) + return res, err +} + +func (c *Client) sendPath2(ctx context.Context) (res *Path2DefStatusCode, err error) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("Path2"), + semconv.HTTPMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/path2"), + } + + // Run stopwatch. + startTime := time.Now() + defer func() { + // Use floating point division here for higher precision (instead of Millisecond method). + elapsedDuration := time.Since(startTime) + c.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), metric.WithAttributes(otelAttrs...)) + }() + + // Increment request counter. + c.requests.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + + // Start a span for this request. + ctx, span := c.cfg.Tracer.Start(ctx, "Path2", + trace.WithAttributes(otelAttrs...), + clientSpanKind, + ) + // Track stage for error reporting. + var stage string + defer func() { + if err != nil { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + c.errors.Add(ctx, 1, metric.WithAttributes(otelAttrs...)) + } + span.End() + }() + + stage = "BuildURL" + u := uri.Clone(c.requestURL(ctx)) + var pathParts [1]string + pathParts[0] = "/path2" + uri.AddPathParts(u, pathParts[:]...) + + stage = "EncodeRequest" + r, err := ht.NewRequest(ctx, "GET", u) + if err != nil { + return res, errors.Wrap(err, "create request") + } + + stage = "SendRequest" + resp, err := c.cfg.Client.Do(r) + if err != nil { + return res, errors.Wrap(err, "do request") + } + defer resp.Body.Close() + + stage = "DecodeResponse" + result, err := decodePath2Response(resp) + if err != nil { + return res, errors.Wrap(err, "decode response") + } + + return result, nil +} diff --git a/internal/integration/test_free_form/oas_handlers_gen.go b/internal/integration/test_free_form/oas_handlers_gen.go new file mode 100644 index 000000000..1c9fcafff --- /dev/null +++ b/internal/integration/test_free_form/oas_handlers_gen.go @@ -0,0 +1,202 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "context" + "net/http" + "time" + + "github.com/go-faster/errors" + "go.opentelemetry.io/otel/attribute" + "go.opentelemetry.io/otel/codes" + "go.opentelemetry.io/otel/metric" + semconv "go.opentelemetry.io/otel/semconv/v1.19.0" + "go.opentelemetry.io/otel/trace" + + ht "github.com/ogen-go/ogen/http" + "github.com/ogen-go/ogen/middleware" + "github.com/ogen-go/ogen/otelogen" +) + +// handlePath1Request handles Path1 operation. +// +// GET /path1 +func (s *Server) handlePath1Request(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("Path1"), + semconv.HTTPMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/path1"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "Path1", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + ) + + var response *Path1DefStatusCode + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "Path1", + OperationSummary: "", + OperationID: "Path1", + Body: nil, + Params: middleware.Parameters{}, + Raw: r, + } + + type ( + Request = struct{} + Params = struct{} + Response = *Path1DefStatusCode + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + nil, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.Path1(ctx) + return response, err + }, + ) + } else { + response, err = s.h.Path1(ctx) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodePath1Response(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} + +// handlePath2Request handles Path2 operation. +// +// GET /path2 +func (s *Server) handlePath2Request(args [0]string, argsEscaped bool, w http.ResponseWriter, r *http.Request) { + otelAttrs := []attribute.KeyValue{ + otelogen.OperationID("Path2"), + semconv.HTTPMethodKey.String("GET"), + semconv.HTTPRouteKey.String("/path2"), + } + + // Start a span for this request. + ctx, span := s.cfg.Tracer.Start(r.Context(), "Path2", + trace.WithAttributes(otelAttrs...), + serverSpanKind, + ) + defer span.End() + + // Add Labeler to context. + labeler := &Labeler{attrs: otelAttrs} + ctx = contextWithLabeler(ctx, labeler) + + // Run stopwatch. + startTime := time.Now() + defer func() { + elapsedDuration := time.Since(startTime) + attrOpt := metric.WithAttributeSet(labeler.AttributeSet()) + + // Increment request counter. + s.requests.Add(ctx, 1, attrOpt) + + // Use floating point division here for higher precision (instead of Millisecond method). + s.duration.Record(ctx, float64(float64(elapsedDuration)/float64(time.Millisecond)), attrOpt) + }() + + var ( + recordError = func(stage string, err error) { + span.RecordError(err) + span.SetStatus(codes.Error, stage) + s.errors.Add(ctx, 1, metric.WithAttributeSet(labeler.AttributeSet())) + } + err error + ) + + var response *Path2DefStatusCode + if m := s.cfg.Middleware; m != nil { + mreq := middleware.Request{ + Context: ctx, + OperationName: "Path2", + OperationSummary: "", + OperationID: "Path2", + Body: nil, + Params: middleware.Parameters{}, + Raw: r, + } + + type ( + Request = struct{} + Params = struct{} + Response = *Path2DefStatusCode + ) + response, err = middleware.HookMiddleware[ + Request, + Params, + Response, + ]( + m, + mreq, + nil, + func(ctx context.Context, request Request, params Params) (response Response, err error) { + response, err = s.h.Path2(ctx) + return response, err + }, + ) + } else { + response, err = s.h.Path2(ctx) + } + if err != nil { + defer recordError("Internal", err) + s.cfg.ErrorHandler(ctx, w, r, err) + return + } + + if err := encodePath2Response(response, w, span); err != nil { + defer recordError("EncodeResponse", err) + if !errors.Is(err, ht.ErrInternalServerErrorResponse) { + s.cfg.ErrorHandler(ctx, w, r, err) + } + return + } +} diff --git a/internal/integration/test_free_form/oas_json_gen.go b/internal/integration/test_free_form/oas_json_gen.go new file mode 100644 index 000000000..4a2eb40a0 --- /dev/null +++ b/internal/integration/test_free_form/oas_json_gen.go @@ -0,0 +1,124 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "github.com/go-faster/errors" + "github.com/go-faster/jx" +) + +// Encode implements json.Marshaler. +func (s Path1Def) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields implements json.Marshaler. +func (s Path1Def) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) + + if len(elem) != 0 { + e.Raw(elem) + } + } +} + +// Decode decodes Path1Def from json. +func (s *Path1Def) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode Path1Def to nil") + } + m := s.init() + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) + } + m[string(k)] = elem + return nil + }); err != nil { + return errors.Wrap(err, "decode Path1Def") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s Path1Def) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *Path1Def) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} + +// Encode implements json.Marshaler. +func (s Path2Def) Encode(e *jx.Encoder) { + e.ObjStart() + s.encodeFields(e) + e.ObjEnd() +} + +// encodeFields implements json.Marshaler. +func (s Path2Def) encodeFields(e *jx.Encoder) { + for k, elem := range s { + e.FieldStart(k) + + if len(elem) != 0 { + e.Raw(elem) + } + } +} + +// Decode decodes Path2Def from json. +func (s *Path2Def) Decode(d *jx.Decoder) error { + if s == nil { + return errors.New("invalid: unable to decode Path2Def to nil") + } + m := s.init() + if err := d.ObjBytes(func(d *jx.Decoder, k []byte) error { + var elem jx.Raw + if err := func() error { + v, err := d.RawAppend(nil) + elem = jx.Raw(v) + if err != nil { + return err + } + return nil + }(); err != nil { + return errors.Wrapf(err, "decode field %q", k) + } + m[string(k)] = elem + return nil + }); err != nil { + return errors.Wrap(err, "decode Path2Def") + } + + return nil +} + +// MarshalJSON implements stdjson.Marshaler. +func (s Path2Def) MarshalJSON() ([]byte, error) { + e := jx.Encoder{} + s.Encode(&e) + return e.Bytes(), nil +} + +// UnmarshalJSON implements stdjson.Unmarshaler. +func (s *Path2Def) UnmarshalJSON(data []byte) error { + d := jx.DecodeBytes(data) + return s.Decode(d) +} diff --git a/internal/integration/test_free_form/oas_labeler_gen.go b/internal/integration/test_free_form/oas_labeler_gen.go new file mode 100644 index 000000000..7e519e84e --- /dev/null +++ b/internal/integration/test_free_form/oas_labeler_gen.go @@ -0,0 +1,42 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "context" + + "go.opentelemetry.io/otel/attribute" +) + +// Labeler is used to allow adding custom attributes to the server request metrics. +type Labeler struct { + attrs []attribute.KeyValue +} + +// Add attributes to the Labeler. +func (l *Labeler) Add(attrs ...attribute.KeyValue) { + l.attrs = append(l.attrs, attrs...) +} + +// AttributeSet returns the attributes added to the Labeler as an attribute.Set. +func (l *Labeler) AttributeSet() attribute.Set { + return attribute.NewSet(l.attrs...) +} + +type labelerContextKey struct{} + +// LabelerFromContext retrieves the Labeler from the provided context, if present. +// +// If no Labeler was found in the provided context a new, empty Labeler is returned and the second +// return value is false. In this case it is safe to use the Labeler but any attributes added to +// it will not be used. +func LabelerFromContext(ctx context.Context) (*Labeler, bool) { + if l, ok := ctx.Value(labelerContextKey{}).(*Labeler); ok { + return l, true + } + return &Labeler{}, false +} + +func contextWithLabeler(ctx context.Context, l *Labeler) context.Context { + return context.WithValue(ctx, labelerContextKey{}, l) +} diff --git a/internal/integration/test_free_form/oas_middleware_gen.go b/internal/integration/test_free_form/oas_middleware_gen.go new file mode 100644 index 000000000..6f58a1a79 --- /dev/null +++ b/internal/integration/test_free_form/oas_middleware_gen.go @@ -0,0 +1,10 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "github.com/ogen-go/ogen/middleware" +) + +// Middleware is middleware type. +type Middleware = middleware.Middleware diff --git a/internal/integration/test_free_form/oas_request_decoders_gen.go b/internal/integration/test_free_form/oas_request_decoders_gen.go new file mode 100644 index 000000000..ae379a2db --- /dev/null +++ b/internal/integration/test_free_form/oas_request_decoders_gen.go @@ -0,0 +1,3 @@ +// Code generated by ogen, DO NOT EDIT. + +package api diff --git a/internal/integration/test_free_form/oas_request_encoders_gen.go b/internal/integration/test_free_form/oas_request_encoders_gen.go new file mode 100644 index 000000000..ae379a2db --- /dev/null +++ b/internal/integration/test_free_form/oas_request_encoders_gen.go @@ -0,0 +1,3 @@ +// Code generated by ogen, DO NOT EDIT. + +package api diff --git a/internal/integration/test_free_form/oas_response_decoders_gen.go b/internal/integration/test_free_form/oas_response_decoders_gen.go new file mode 100644 index 000000000..65748a6e7 --- /dev/null +++ b/internal/integration/test_free_form/oas_response_decoders_gen.go @@ -0,0 +1,107 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "io" + "mime" + "net/http" + + "github.com/go-faster/errors" + "github.com/go-faster/jx" + + "github.com/ogen-go/ogen/ogenerrors" + "github.com/ogen-go/ogen/validate" +) + +func decodePath1Response(resp *http.Response) (res *Path1DefStatusCode, _ error) { + // Default response. + res, err := func() (res *Path1DefStatusCode, err error) { + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response Path1Def + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &Path1DefStatusCode{ + StatusCode: resp.StatusCode, + Response: response, + }, nil + default: + return res, validate.InvalidContentType(ct) + } + }() + if err != nil { + return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) + } + return res, nil +} + +func decodePath2Response(resp *http.Response) (res *Path2DefStatusCode, _ error) { + // Default response. + res, err := func() (res *Path2DefStatusCode, err error) { + ct, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type")) + if err != nil { + return res, errors.Wrap(err, "parse media type") + } + switch { + case ct == "application/json": + buf, err := io.ReadAll(resp.Body) + if err != nil { + return res, err + } + d := jx.DecodeBytes(buf) + + var response Path2Def + if err := func() error { + if err := response.Decode(d); err != nil { + return err + } + if err := d.Skip(); err != io.EOF { + return errors.New("unexpected trailing data") + } + return nil + }(); err != nil { + err = &ogenerrors.DecodeBodyError{ + ContentType: ct, + Body: buf, + Err: err, + } + return res, err + } + return &Path2DefStatusCode{ + StatusCode: resp.StatusCode, + Response: response, + }, nil + default: + return res, validate.InvalidContentType(ct) + } + }() + if err != nil { + return res, errors.Wrapf(err, "default (code %d)", resp.StatusCode) + } + return res, nil +} diff --git a/internal/integration/test_free_form/oas_response_encoders_gen.go b/internal/integration/test_free_form/oas_response_encoders_gen.go new file mode 100644 index 000000000..0c0d9c253 --- /dev/null +++ b/internal/integration/test_free_form/oas_response_encoders_gen.go @@ -0,0 +1,66 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "net/http" + + "github.com/go-faster/errors" + "github.com/go-faster/jx" + "go.opentelemetry.io/otel/codes" + "go.opentelemetry.io/otel/trace" + + ht "github.com/ogen-go/ogen/http" +) + +func encodePath1Response(response *Path1DefStatusCode, w http.ResponseWriter, span trace.Span) error { + w.Header().Set("Content-Type", "application/json; charset=utf-8") + code := response.StatusCode + if code == 0 { + // Set default status code. + code = http.StatusOK + } + w.WriteHeader(code) + if st := http.StatusText(code); code >= http.StatusBadRequest { + span.SetStatus(codes.Error, st) + } else { + span.SetStatus(codes.Ok, st) + } + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + if code >= http.StatusInternalServerError { + return errors.Wrapf(ht.ErrInternalServerErrorResponse, "code: %d, message: %s", code, http.StatusText(code)) + } + return nil +} + +func encodePath2Response(response *Path2DefStatusCode, w http.ResponseWriter, span trace.Span) error { + w.Header().Set("Content-Type", "application/json; charset=utf-8") + code := response.StatusCode + if code == 0 { + // Set default status code. + code = http.StatusOK + } + w.WriteHeader(code) + if st := http.StatusText(code); code >= http.StatusBadRequest { + span.SetStatus(codes.Error, st) + } else { + span.SetStatus(codes.Ok, st) + } + + e := new(jx.Encoder) + response.Response.Encode(e) + if _, err := e.WriteTo(w); err != nil { + return errors.Wrap(err, "write") + } + + if code >= http.StatusInternalServerError { + return errors.Wrapf(ht.ErrInternalServerErrorResponse, "code: %d, message: %s", code, http.StatusText(code)) + } + return nil +} diff --git a/internal/integration/test_free_form/oas_router_gen.go b/internal/integration/test_free_form/oas_router_gen.go new file mode 100644 index 000000000..97c89b9b4 --- /dev/null +++ b/internal/integration/test_free_form/oas_router_gen.go @@ -0,0 +1,256 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "net/http" + "net/url" + "strings" + + "github.com/ogen-go/ogen/uri" +) + +func (s *Server) cutPrefix(path string) (string, bool) { + prefix := s.cfg.Prefix + if prefix == "" { + return path, true + } + if !strings.HasPrefix(path, prefix) { + // Prefix doesn't match. + return "", false + } + // Cut prefix from the path. + return strings.TrimPrefix(path, prefix), true +} + +// ServeHTTP serves http request as defined by OpenAPI v3 specification, +// calling handler that matches the path or returning not found error. +func (s *Server) ServeHTTP(w http.ResponseWriter, r *http.Request) { + elem := r.URL.Path + elemIsEscaped := false + if rawPath := r.URL.RawPath; rawPath != "" { + if normalized, ok := uri.NormalizeEscapedPath(rawPath); ok { + elem = normalized + elemIsEscaped = strings.ContainsRune(elem, '%') + } + } + + elem, ok := s.cutPrefix(elem) + if !ok || len(elem) == 0 { + s.notFound(w, r) + return + } + + // Static code generated router with unwrapped path search. + switch { + default: + if len(elem) == 0 { + break + } + switch elem[0] { + case '/': // Prefix: "/path" + origElem := elem + if l := len("/path"); len(elem) >= l && elem[0:l] == "/path" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case '1': // Prefix: "1" + origElem := elem + if l := len("1"); len(elem) >= l && elem[0:l] == "1" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handlePath1Request([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + elem = origElem + case '2': // Prefix: "2" + origElem := elem + if l := len("2"); len(elem) >= l && elem[0:l] == "2" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + // Leaf node. + switch r.Method { + case "GET": + s.handlePath2Request([0]string{}, elemIsEscaped, w, r) + default: + s.notAllowed(w, r, "GET") + } + + return + } + + elem = origElem + } + + elem = origElem + } + } + s.notFound(w, r) +} + +// Route is route object. +type Route struct { + name string + summary string + operationID string + pathPattern string + count int + args [0]string +} + +// Name returns ogen operation name. +// +// It is guaranteed to be unique and not empty. +func (r Route) Name() string { + return r.name +} + +// Summary returns OpenAPI summary. +func (r Route) Summary() string { + return r.summary +} + +// OperationID returns OpenAPI operationId. +func (r Route) OperationID() string { + return r.operationID +} + +// PathPattern returns OpenAPI path. +func (r Route) PathPattern() string { + return r.pathPattern +} + +// Args returns parsed arguments. +func (r Route) Args() []string { + return r.args[:r.count] +} + +// FindRoute finds Route for given method and path. +// +// Note: this method does not unescape path or handle reserved characters in path properly. Use FindPath instead. +func (s *Server) FindRoute(method, path string) (Route, bool) { + return s.FindPath(method, &url.URL{Path: path}) +} + +// FindPath finds Route for given method and URL. +func (s *Server) FindPath(method string, u *url.URL) (r Route, _ bool) { + var ( + elem = u.Path + args = r.args + ) + if rawPath := u.RawPath; rawPath != "" { + if normalized, ok := uri.NormalizeEscapedPath(rawPath); ok { + elem = normalized + } + defer func() { + for i, arg := range r.args[:r.count] { + if unescaped, err := url.PathUnescape(arg); err == nil { + r.args[i] = unescaped + } + } + }() + } + + elem, ok := s.cutPrefix(elem) + if !ok { + return r, false + } + + // Static code generated router with unwrapped path search. + switch { + default: + if len(elem) == 0 { + break + } + switch elem[0] { + case '/': // Prefix: "/path" + origElem := elem + if l := len("/path"); len(elem) >= l && elem[0:l] == "/path" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + break + } + switch elem[0] { + case '1': // Prefix: "1" + origElem := elem + if l := len("1"); len(elem) >= l && elem[0:l] == "1" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + switch method { + case "GET": + // Leaf: Path1 + r.name = "Path1" + r.summary = "" + r.operationID = "Path1" + r.pathPattern = "/path1" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + elem = origElem + case '2': // Prefix: "2" + origElem := elem + if l := len("2"); len(elem) >= l && elem[0:l] == "2" { + elem = elem[l:] + } else { + break + } + + if len(elem) == 0 { + switch method { + case "GET": + // Leaf: Path2 + r.name = "Path2" + r.summary = "" + r.operationID = "Path2" + r.pathPattern = "/path2" + r.args = args + r.count = 0 + return r, true + default: + return + } + } + + elem = origElem + } + + elem = origElem + } + } + return r, false +} diff --git a/internal/integration/test_free_form/oas_schemas_gen.go b/internal/integration/test_free_form/oas_schemas_gen.go new file mode 100644 index 000000000..b3dbb605f --- /dev/null +++ b/internal/integration/test_free_form/oas_schemas_gen.go @@ -0,0 +1,81 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "github.com/go-faster/jx" +) + +type Path1Def map[string]jx.Raw + +func (s *Path1Def) init() Path1Def { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} + +// Path1DefStatusCode wraps Path1Def with StatusCode. +type Path1DefStatusCode struct { + StatusCode int + Response Path1Def +} + +// GetStatusCode returns the value of StatusCode. +func (s *Path1DefStatusCode) GetStatusCode() int { + return s.StatusCode +} + +// GetResponse returns the value of Response. +func (s *Path1DefStatusCode) GetResponse() Path1Def { + return s.Response +} + +// SetStatusCode sets the value of StatusCode. +func (s *Path1DefStatusCode) SetStatusCode(val int) { + s.StatusCode = val +} + +// SetResponse sets the value of Response. +func (s *Path1DefStatusCode) SetResponse(val Path1Def) { + s.Response = val +} + +type Path2Def map[string]jx.Raw + +func (s *Path2Def) init() Path2Def { + m := *s + if m == nil { + m = map[string]jx.Raw{} + *s = m + } + return m +} + +// Path2DefStatusCode wraps Path2Def with StatusCode. +type Path2DefStatusCode struct { + StatusCode int + Response Path2Def +} + +// GetStatusCode returns the value of StatusCode. +func (s *Path2DefStatusCode) GetStatusCode() int { + return s.StatusCode +} + +// GetResponse returns the value of Response. +func (s *Path2DefStatusCode) GetResponse() Path2Def { + return s.Response +} + +// SetStatusCode sets the value of StatusCode. +func (s *Path2DefStatusCode) SetStatusCode(val int) { + s.StatusCode = val +} + +// SetResponse sets the value of Response. +func (s *Path2DefStatusCode) SetResponse(val Path2Def) { + s.Response = val +} diff --git a/internal/integration/test_free_form/oas_server_gen.go b/internal/integration/test_free_form/oas_server_gen.go new file mode 100644 index 000000000..b57f5bb77 --- /dev/null +++ b/internal/integration/test_free_form/oas_server_gen.go @@ -0,0 +1,38 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "context" +) + +// Handler handles operations described by OpenAPI v3 specification. +type Handler interface { + // Path1 implements Path1 operation. + // + // GET /path1 + Path1(ctx context.Context) (*Path1DefStatusCode, error) + // Path2 implements Path2 operation. + // + // GET /path2 + Path2(ctx context.Context) (*Path2DefStatusCode, error) +} + +// Server implements http server based on OpenAPI v3 specification and +// calls Handler to handle requests. +type Server struct { + h Handler + baseServer +} + +// NewServer creates new Server. +func NewServer(h Handler, opts ...ServerOption) (*Server, error) { + s, err := newServerConfig(opts...).baseServer() + if err != nil { + return nil, err + } + return &Server{ + h: h, + baseServer: s, + }, nil +} diff --git a/internal/integration/test_free_form/oas_unimplemented_gen.go b/internal/integration/test_free_form/oas_unimplemented_gen.go new file mode 100644 index 000000000..8fc4b1273 --- /dev/null +++ b/internal/integration/test_free_form/oas_unimplemented_gen.go @@ -0,0 +1,28 @@ +// Code generated by ogen, DO NOT EDIT. + +package api + +import ( + "context" + + ht "github.com/ogen-go/ogen/http" +) + +// UnimplementedHandler is no-op Handler which returns http.ErrNotImplemented. +type UnimplementedHandler struct{} + +var _ Handler = UnimplementedHandler{} + +// Path1 implements Path1 operation. +// +// GET /path1 +func (UnimplementedHandler) Path1(ctx context.Context) (r *Path1DefStatusCode, _ error) { + return r, ht.ErrNotImplemented +} + +// Path2 implements Path2 operation. +// +// GET /path2 +func (UnimplementedHandler) Path2(ctx context.Context) (r *Path2DefStatusCode, _ error) { + return r, ht.ErrNotImplemented +}