Skip to content

Commit

Permalink
feat: add support nested enum
Browse files Browse the repository at this point in the history
Signed-off-by: Sasha Melentyev <[email protected]>
  • Loading branch information
sashamelentyev committed Apr 2, 2024
1 parent c9f5523 commit 21010c2
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 12 deletions.
8 changes: 8 additions & 0 deletions example/message.proto
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ message GetItemsResponse {
repeated Item items = 1 [(google.api.field_behavior) = REQUIRED];
int32 total_count = 2 [(google.api.field_behavior) = REQUIRED];
NestedItem nested_item = 3;
NestedEnum.ItemType nested_type = 4;
}

message GetItemRequest {
Expand Down Expand Up @@ -67,3 +68,10 @@ enum ItemType {
ITEM_TYPE_UNSPECIFIED = 0;
ITEM_TYPE_BASIC = 1;
}

message NestedEnum {
enum ItemType {
ITEM_TYPE_UNSPECIFIED = 0;
ITEM_TYPE_BASIC = 1;
}
}
7 changes: 7 additions & 0 deletions example/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,8 @@ components:
format: int32
nestedItem:
$ref: '#/components/schemas/GetItemsResponse.NestedItem'
nestedType:
$ref: '#/components/schemas/NestedEnum.ItemType'
required:
- items
- totalCount
Expand Down Expand Up @@ -195,3 +197,8 @@ components:
enum:
- ITEM_TYPE_UNSPECIFIED
- ITEM_TYPE_BASIC
NestedEnum.ItemType:
type: string
enum:
- ITEM_TYPE_UNSPECIFIED
- ITEM_TYPE_BASIC
5 changes: 2 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ require (
github.com/go-faster/yaml v0.4.6
github.com/ogen-go/ogen v1.0.0
github.com/stretchr/testify v1.9.0
golang.org/x/exp v0.0.0-20231006140011-7918f672742d
google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b
golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8
google.golang.org/genproto/googleapis/api v0.0.0-20240401170217-c3f982113cda
google.golang.org/protobuf v1.33.0
)

Expand All @@ -32,7 +32,6 @@ require (
golang.org/x/net v0.22.0 // indirect
golang.org/x/sys v0.18.0 // indirect
golang.org/x/text v0.14.0 // indirect
google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
)
10 changes: 4 additions & 6 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI=
golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo=
golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8 h1:aAcj0Da7eBAtrTp03QXWvm88pSyOt+UgdZw2BFZ+lEw=
golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ=
golang.org/x/mod v0.16.0 h1:QX4fJ0Rr5cPQCF7O9lh9Se4pmwfwskqZfq5moyldzic=
golang.org/x/mod v0.16.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc=
Expand All @@ -59,10 +59,8 @@ golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/tools v0.19.0 h1:tfGCXNR1OsFG+sVdLAitlpjAvD/I6dHDKnYrpEZUHkw=
golang.org/x/tools v0.19.0/go.mod h1:qoJWxmGSIBmAeriMx19ogtrEPrGtDbPK634QFIcLAhc=
google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b h1:+YaDE2r2OG8t/z5qmsh7Y+XXwCbvadxxZ0YY6mTdrVA=
google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:CgAqfJo+Xmu0GwA0411Ht3OU3OntXwsGmrmjI8ioGXI=
google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b h1:CIC2YMXmIhYw6evmhPxBKJ4fmLbOFtXQN/GV3XOZR8k=
google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:IBQ646DjkDkvUIsVq/cc03FUFQ9wbZu7yE396YcL870=
google.golang.org/genproto/googleapis/api v0.0.0-20240401170217-c3f982113cda h1:b6F6WIV4xHHD0FA4oIyzU6mHWg2WI2X1RBehwa5QN38=
google.golang.org/genproto/googleapis/api v0.0.0-20240401170217-c3f982113cda/go.mod h1:AHcE/gZH76Bk/ROZhQphlRoWo5xKDEtz3eVEO1LfA8c=
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
Expand Down
14 changes: 11 additions & 3 deletions internal/gen/schema.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,19 @@ func (g *Generator) mkSchema(msg *protogen.Message) error {
}

for _, field := range msg.Fields {
if field.Desc.HasPresence() || !field.Desc.HasPresence() && field.Message == nil {
if field.Desc.HasPresence() {
continue
}
if err := g.mkSchema(field.Message); err != nil {
return err

if field.Message != nil {
if err := g.mkSchema(field.Message); err != nil {
return err
}
}
if field.Enum != nil {
if err := g.mkEnum(field.Enum); err != nil {
return err
}
}
}

Expand Down

0 comments on commit 21010c2

Please sign in to comment.