Skip to content

Commit 34e48cd

Browse files
authored
Merge pull request #455 from tdakkota/feat/try-go-experiment
refactor(ogen): use `go-json-experiment` instead of `encoding/json`
2 parents bbe893e + 2b09341 commit 34e48cd

32 files changed

+17798
-17266
lines changed

_testdata/positive/format_gen.json

Lines changed: 6345 additions & 6345 deletions
Large diffs are not rendered by default.

cmd/jschemagen/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ import (
99
"strings"
1010

1111
"github.com/go-faster/errors"
12+
"github.com/go-json-experiment/json"
1213

1314
"github.com/ogen-go/ogen/gen"
1415
"github.com/ogen-go/ogen/gen/genfs"
1516
"github.com/ogen-go/ogen/internal/ogenzap"
16-
"github.com/ogen-go/ogen/json"
1717
"github.com/ogen-go/ogen/jsonschema"
1818
)
1919

dsl.go

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package ogen
22

33
import (
4-
"encoding/json"
4+
jsonv1 "encoding/json"
55
"strings"
66

77
"github.com/go-faster/jx"
8+
jsonv2 "github.com/go-json-experiment/json"
89

910
"github.com/ogen-go/ogen/gen/ir"
1011
"github.com/ogen-go/ogen/jsonschema"
@@ -865,8 +866,10 @@ func (s *Schema) SetDiscriminator(d *Discriminator) *Schema {
865866
}
866867

867868
// SetEnum sets the Enum of the Schema.
868-
func (s *Schema) SetEnum(e []json.RawMessage) *Schema {
869-
s.Enum = e
869+
func (s *Schema) SetEnum(e []jsonv1.RawMessage) *Schema {
870+
for _, val := range e {
871+
s.Enum = append(s.Enum, jsonv2.RawValue(val))
872+
}
870873
return s
871874
}
872875

@@ -964,8 +967,8 @@ func (s *Schema) SetMinProperties(m *uint64) *Schema {
964967
}
965968

966969
// SetDefault sets the Default of the Schema.
967-
func (s *Schema) SetDefault(d json.RawMessage) *Schema {
968-
s.Default = d
970+
func (s *Schema) SetDefault(d jsonv1.RawMessage) *Schema {
971+
s.Default = jsonv2.RawValue(d)
969972
return s
970973
}
971974

@@ -1027,11 +1030,16 @@ func (s *Schema) AsArray() *Schema {
10271030
}
10281031

10291032
// AsEnum returns a new "enum" Schema wrapping the receiver.
1030-
func (s *Schema) AsEnum(def json.RawMessage, values ...json.RawMessage) *Schema {
1033+
func (s *Schema) AsEnum(def jsonv1.RawMessage, values ...jsonv1.RawMessage) *Schema {
10311034
return &Schema{
10321035
Type: s.Type,
1033-
Default: def,
1034-
Enum: values,
1036+
Default: jsonv2.RawValue(def),
1037+
Enum: func() (r []jsonv2.RawValue) {
1038+
for _, val := range values {
1039+
r = append(r, jsonv2.RawValue(val))
1040+
}
1041+
return r
1042+
}(),
10351043
}
10361044
}
10371045

dsl_test.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
package ogen_test
22

33
import (
4-
"encoding/json"
4+
jsonv1 "encoding/json"
55
"testing"
66

7+
jsonv2 "github.com/go-json-experiment/json"
78
"github.com/stretchr/testify/assert"
89

910
"github.com/ogen-go/ogen"
@@ -56,9 +57,9 @@ var (
5657
ogen.DateTime().ToProperty("required_DateTime"),
5758
ogen.Password().ToProperty("required_Password"),
5859
ogen.Int32().AsArray().ToProperty("required_array_Int32"),
59-
ogen.Int32().AsEnum(json.RawMessage("0"), json.RawMessage("0"), json.RawMessage("1")).
60+
ogen.Int32().AsEnum(jsonv1.RawMessage("0"), jsonv1.RawMessage("0"), jsonv1.RawMessage("1")).
6061
ToProperty("required_enum_Int32"),
61-
ogen.Int32().AsEnum(json.RawMessage(`"off"`), json.RawMessage(`"0"`), json.RawMessage(`"1"`)).
62+
ogen.Int32().AsEnum(jsonv1.RawMessage(`"off"`), jsonv1.RawMessage(`"0"`), jsonv1.RawMessage(`"1"`)).
6263
ToProperty("required_enum_String"),
6364
).
6465
AddOptionalProperties(
@@ -359,7 +360,7 @@ func TestBuilder(t *testing.T) {
359360
OneOf: []*ogen.Schema{ogen.NewSchema()},
360361
AnyOf: []*ogen.Schema{ogen.NewSchema()},
361362
Discriminator: &ogen.Discriminator{PropertyName: "prop"},
362-
Enum: []json.RawMessage{json.RawMessage("0"), json.RawMessage("1")},
363+
Enum: []jsonv2.RawValue{jsonv2.RawValue("0"), jsonv2.RawValue("1")},
363364
MultipleOf: mltStr,
364365
Maximum: maxStr,
365366
ExclusiveMaximum: true,
@@ -373,7 +374,7 @@ func TestBuilder(t *testing.T) {
373374
UniqueItems: true,
374375
MaxProperties: &umax,
375376
MinProperties: &umax,
376-
Default: json.RawMessage("0"),
377+
Default: jsonv2.RawValue("0"),
377378
}, ogen.NewSchema().
378379
SetRef("ref").
379380
SetDescription("desc").
@@ -387,7 +388,7 @@ func TestBuilder(t *testing.T) {
387388
SetOneOf([]*ogen.Schema{ogen.NewSchema()}).
388389
SetAnyOf([]*ogen.Schema{ogen.NewSchema()}).
389390
SetDiscriminator(&ogen.Discriminator{PropertyName: "prop"}).
390-
SetEnum([]json.RawMessage{json.RawMessage("0"), json.RawMessage("1")}).
391+
SetEnum([]jsonv1.RawMessage{jsonv1.RawMessage("0"), jsonv1.RawMessage("1")}).
391392
SetMultipleOf(&mlt).
392393
SetMaximum(&max).
393394
SetExclusiveMaximum(true).
@@ -401,6 +402,6 @@ func TestBuilder(t *testing.T) {
401402
SetUniqueItems(true).
402403
SetMaxProperties(&umax).
403404
SetMinProperties(&umax).
404-
SetDefault(json.RawMessage("0")),
405+
SetDefault(jsonv1.RawMessage("0")),
405406
)
406407
}

0 commit comments

Comments
 (0)