Skip to content

Commit e5848b7

Browse files
adambabikadamb-scylladb
authored andcommitted
internal/descriptor: add support for proto3 optional
1 parent 4717692 commit e5848b7

File tree

13 files changed

+743
-660
lines changed

13 files changed

+743
-660
lines changed

examples/internal/clients/abe/api/swagger.yaml

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -403,11 +403,11 @@ paths:
403403
type: "string"
404404
x-exportParamName: "OutputOnlyStringViaFieldBehaviorAnnotation"
405405
x-optionalDataType: "String"
406-
- name: "optionalString"
406+
- name: "optionalStringValue"
407407
in: "query"
408408
required: false
409409
type: "string"
410-
x-exportParamName: "OptionalString"
410+
x-exportParamName: "OptionalStringValue"
411411
x-optionalDataType: "String"
412412
responses:
413413
200:
@@ -720,11 +720,11 @@ paths:
720720
type: "string"
721721
x-exportParamName: "OutputOnlyStringViaFieldBehaviorAnnotation"
722722
x-optionalDataType: "String"
723-
- name: "optionalString"
723+
- name: "optionalStringValue"
724724
in: "query"
725725
required: false
726726
type: "string"
727-
x-exportParamName: "OptionalString"
727+
x-exportParamName: "OptionalStringValue"
728728
x-optionalDataType: "String"
729729
responses:
730730
200:
@@ -1024,11 +1024,11 @@ paths:
10241024
type: "string"
10251025
x-exportParamName: "OutputOnlyStringViaFieldBehaviorAnnotation"
10261026
x-optionalDataType: "String"
1027-
- name: "optionalString"
1027+
- name: "optionalStringValue"
10281028
in: "query"
10291029
required: false
10301030
type: "string"
1031-
x-exportParamName: "OptionalString"
1031+
x-exportParamName: "OptionalStringValue"
10321032
x-optionalDataType: "String"
10331033
responses:
10341034
200:
@@ -1348,11 +1348,11 @@ paths:
13481348
type: "string"
13491349
x-exportParamName: "OutputOnlyStringViaFieldBehaviorAnnotation"
13501350
x-optionalDataType: "String"
1351-
- name: "optionalString"
1351+
- name: "optionalStringValue"
13521352
in: "query"
13531353
required: false
13541354
type: "string"
1355-
x-exportParamName: "OptionalString"
1355+
x-exportParamName: "OptionalStringValue"
13561356
x-optionalDataType: "String"
13571357
responses:
13581358
200:
@@ -1384,7 +1384,7 @@ paths:
13841384
description: "Find out more about GetQuery"
13851385
url: "https://github.com/grpc-ecosystem/grpc-gateway"
13861386
deprecated: true
1387-
? /v1/example/a_bit_of_everything/{floatValue}/{doubleValue}/{int64Value}/separator/{uint64Value}/{int32Value}/{fixed64Value}/{fixed32Value}/{boolValue}/{stringValue}/{uint32Value}/{sfixed32Value}/{sfixed64Value}/{sint32Value}/{sint64Value}/{nonConventionalNameValue}/{enumValue}/{pathEnumValue}/{nestedPathEnumValue}/{enumValueAnnotation}
1387+
? /v1/example/a_bit_of_everything/{floatValue}/{doubleValue}/{int64Value}/separator/{uint64Value}/{int32Value}/{fixed64Value}/{fixed32Value}/{boolValue}/{stringValue}/{uint32Value}/{sfixed32Value}/{sfixed64Value}/{sint32Value}/{sint64Value}/{nonConventionalNameValue}/{enumValue}/{pathEnumValue}/{nestedPathEnumValue}/{enumValueAnnotation}/{optionalStringValue}
13881388
: post:
13891389
tags:
13901390
- "ABitOfEverythingService"
@@ -1514,6 +1514,11 @@ paths:
15141514
- "ZERO"
15151515
- "ONE"
15161516
x-exportParamName: "EnumValueAnnotation"
1517+
- name: "optionalStringValue"
1518+
in: "path"
1519+
required: true
1520+
type: "string"
1521+
x-exportParamName: "OptionalStringValue"
15171522
responses:
15181523
200:
15191524
description: "A successful response."
@@ -2722,7 +2727,7 @@ definitions:
27222727
type: "string"
27232728
title: "mark a field as readonly in Open API definition"
27242729
readOnly: true
2725-
optionalString:
2730+
optionalStringValue:
27262731
type: "string"
27272732
externalDocs:
27282733
description: "Find out more about ABitOfEverything"

examples/internal/clients/abe/api_a_bit_of_everything_service.go

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ ABitOfEverythingServiceApiService
222222
* @param "NestedAnnotationOk" (optional.String) - DeepEnum description. - FALSE: FALSE is false. - TRUE: TRUE is true.
223223
* @param "Int64OverrideType" (optional.Int64) -
224224
* @param "OutputOnlyStringViaFieldBehaviorAnnotation" (optional.String) - mark a field as readonly in Open API definition.
225-
* @param "OptionalString" (optional.String) -
225+
* @param "OptionalStringValue" (optional.String) -
226226
227227
@return ExamplepbABitOfEverything
228228
*/
@@ -260,7 +260,7 @@ type ABitOfEverythingServiceCheckGetQueryParamsOpts struct {
260260
NestedAnnotationOk optional.String
261261
Int64OverrideType optional.Int64
262262
OutputOnlyStringViaFieldBehaviorAnnotation optional.String
263-
OptionalString optional.String
263+
OptionalStringValue optional.String
264264
}
265265

266266
func (a *ABitOfEverythingServiceApiService) ABitOfEverythingServiceCheckGetQueryParams(ctx context.Context, singleNestedName string, floatValue float32, requiredStringViaFieldBehaviorAnnotation string, localVarOptionals *ABitOfEverythingServiceCheckGetQueryParamsOpts) (ExamplepbABitOfEverything, *http.Response, error) {
@@ -378,8 +378,8 @@ func (a *ABitOfEverythingServiceApiService) ABitOfEverythingServiceCheckGetQuery
378378
if localVarOptionals != nil && localVarOptionals.OutputOnlyStringViaFieldBehaviorAnnotation.IsSet() {
379379
localVarQueryParams.Add("outputOnlyStringViaFieldBehaviorAnnotation", parameterToString(localVarOptionals.OutputOnlyStringViaFieldBehaviorAnnotation.Value(), ""))
380380
}
381-
if localVarOptionals != nil && localVarOptionals.OptionalString.IsSet() {
382-
localVarQueryParams.Add("optionalString", parameterToString(localVarOptionals.OptionalString.Value(), ""))
381+
if localVarOptionals != nil && localVarOptionals.OptionalStringValue.IsSet() {
382+
localVarQueryParams.Add("optionalStringValue", parameterToString(localVarOptionals.OptionalStringValue.Value(), ""))
383383
}
384384
// to determine the Content-Type header
385385
localVarHttpContentTypes := []string{"application/json", "application/x-foo-mime"}
@@ -552,7 +552,7 @@ ABitOfEverythingServiceApiService
552552
* @param "NestedAnnotationAmount" (optional.Int64) -
553553
* @param "Int64OverrideType" (optional.Int64) -
554554
* @param "OutputOnlyStringViaFieldBehaviorAnnotation" (optional.String) - mark a field as readonly in Open API definition.
555-
* @param "OptionalString" (optional.String) -
555+
* @param "OptionalStringValue" (optional.String) -
556556
557557
@return ExamplepbABitOfEverything
558558
*/
@@ -590,7 +590,7 @@ type ABitOfEverythingServiceCheckNestedEnumGetQueryParamsOpts struct {
590590
NestedAnnotationAmount optional.Int64
591591
Int64OverrideType optional.Int64
592592
OutputOnlyStringViaFieldBehaviorAnnotation optional.String
593-
OptionalString optional.String
593+
OptionalStringValue optional.String
594594
}
595595

596596
func (a *ABitOfEverythingServiceApiService) ABitOfEverythingServiceCheckNestedEnumGetQueryParams(ctx context.Context, singleNestedOk string, floatValue float32, requiredStringViaFieldBehaviorAnnotation string, localVarOptionals *ABitOfEverythingServiceCheckNestedEnumGetQueryParamsOpts) (ExamplepbABitOfEverything, *http.Response, error) {
@@ -708,8 +708,8 @@ func (a *ABitOfEverythingServiceApiService) ABitOfEverythingServiceCheckNestedEn
708708
if localVarOptionals != nil && localVarOptionals.OutputOnlyStringViaFieldBehaviorAnnotation.IsSet() {
709709
localVarQueryParams.Add("outputOnlyStringViaFieldBehaviorAnnotation", parameterToString(localVarOptionals.OutputOnlyStringViaFieldBehaviorAnnotation.Value(), ""))
710710
}
711-
if localVarOptionals != nil && localVarOptionals.OptionalString.IsSet() {
712-
localVarQueryParams.Add("optionalString", parameterToString(localVarOptionals.OptionalString.Value(), ""))
711+
if localVarOptionals != nil && localVarOptionals.OptionalStringValue.IsSet() {
712+
localVarQueryParams.Add("optionalStringValue", parameterToString(localVarOptionals.OptionalStringValue.Value(), ""))
713713
}
714714
// to determine the Content-Type header
715715
localVarHttpContentTypes := []string{"application/json", "application/x-foo-mime"}
@@ -881,7 +881,7 @@ ABitOfEverythingServiceApiService
881881
* @param "NestedAnnotationOk" (optional.String) - DeepEnum description. - FALSE: FALSE is false. - TRUE: TRUE is true.
882882
* @param "Int64OverrideType" (optional.Int64) -
883883
* @param "OutputOnlyStringViaFieldBehaviorAnnotation" (optional.String) - mark a field as readonly in Open API definition.
884-
* @param "OptionalString" (optional.String) -
884+
* @param "OptionalStringValue" (optional.String) -
885885
886886
@return ExamplepbABitOfEverything
887887
*/
@@ -917,7 +917,7 @@ type ABitOfEverythingServiceCheckPostQueryParamsOpts struct {
917917
NestedAnnotationOk optional.String
918918
Int64OverrideType optional.Int64
919919
OutputOnlyStringViaFieldBehaviorAnnotation optional.String
920-
OptionalString optional.String
920+
OptionalStringValue optional.String
921921
}
922922

923923
func (a *ABitOfEverythingServiceApiService) ABitOfEverythingServiceCheckPostQueryParams(ctx context.Context, stringValue string, body ABitOfEverythingNested, floatValue float32, requiredStringViaFieldBehaviorAnnotation string, localVarOptionals *ABitOfEverythingServiceCheckPostQueryParamsOpts) (ExamplepbABitOfEverything, *http.Response, error) {
@@ -1029,8 +1029,8 @@ func (a *ABitOfEverythingServiceApiService) ABitOfEverythingServiceCheckPostQuer
10291029
if localVarOptionals != nil && localVarOptionals.OutputOnlyStringViaFieldBehaviorAnnotation.IsSet() {
10301030
localVarQueryParams.Add("outputOnlyStringViaFieldBehaviorAnnotation", parameterToString(localVarOptionals.OutputOnlyStringViaFieldBehaviorAnnotation.Value(), ""))
10311031
}
1032-
if localVarOptionals != nil && localVarOptionals.OptionalString.IsSet() {
1033-
localVarQueryParams.Add("optionalString", parameterToString(localVarOptionals.OptionalString.Value(), ""))
1032+
if localVarOptionals != nil && localVarOptionals.OptionalStringValue.IsSet() {
1033+
localVarQueryParams.Add("optionalStringValue", parameterToString(localVarOptionals.OptionalStringValue.Value(), ""))
10341034
}
10351035
// to determine the Content-Type header
10361036
localVarHttpContentTypes := []string{"application/json", "application/x-foo-mime"}
@@ -1343,10 +1343,11 @@ This API creates a new ABitOfEverything
13431343
* @param pathEnumValue
13441344
* @param nestedPathEnumValue
13451345
* @param enumValueAnnotation Numeric enum description.
1346+
* @param optionalStringValue
13461347
13471348
@return ExamplepbABitOfEverything
13481349
*/
1349-
func (a *ABitOfEverythingServiceApiService) ABitOfEverythingServiceCreate(ctx context.Context, floatValue float32, doubleValue float64, int64Value string, uint64Value string, int32Value int32, fixed64Value string, fixed32Value int64, boolValue bool, stringValue string, uint32Value int64, sfixed32Value int32, sfixed64Value string, sint32Value int32, sint64Value string, nonConventionalNameValue string, enumValue string, pathEnumValue string, nestedPathEnumValue string, enumValueAnnotation string) (ExamplepbABitOfEverything, *http.Response, error) {
1350+
func (a *ABitOfEverythingServiceApiService) ABitOfEverythingServiceCreate(ctx context.Context, floatValue float32, doubleValue float64, int64Value string, uint64Value string, int32Value int32, fixed64Value string, fixed32Value int64, boolValue bool, stringValue string, uint32Value int64, sfixed32Value int32, sfixed64Value string, sint32Value int32, sint64Value string, nonConventionalNameValue string, enumValue string, pathEnumValue string, nestedPathEnumValue string, enumValueAnnotation string, optionalStringValue string) (ExamplepbABitOfEverything, *http.Response, error) {
13501351
var (
13511352
localVarHttpMethod = strings.ToUpper("Post")
13521353
localVarPostBody interface{}
@@ -1356,7 +1357,7 @@ func (a *ABitOfEverythingServiceApiService) ABitOfEverythingServiceCreate(ctx co
13561357
)
13571358

13581359
// create path and map variables
1359-
localVarPath := a.client.cfg.BasePath + "/v1/example/a_bit_of_everything/{floatValue}/{doubleValue}/{int64Value}/separator/{uint64Value}/{int32Value}/{fixed64Value}/{fixed32Value}/{boolValue}/{stringValue}/{uint32Value}/{sfixed32Value}/{sfixed64Value}/{sint32Value}/{sint64Value}/{nonConventionalNameValue}/{enumValue}/{pathEnumValue}/{nestedPathEnumValue}/{enumValueAnnotation}"
1360+
localVarPath := a.client.cfg.BasePath + "/v1/example/a_bit_of_everything/{floatValue}/{doubleValue}/{int64Value}/separator/{uint64Value}/{int32Value}/{fixed64Value}/{fixed32Value}/{boolValue}/{stringValue}/{uint32Value}/{sfixed32Value}/{sfixed64Value}/{sint32Value}/{sint64Value}/{nonConventionalNameValue}/{enumValue}/{pathEnumValue}/{nestedPathEnumValue}/{enumValueAnnotation}/{optionalStringValue}"
13601361
localVarPath = strings.Replace(localVarPath, "{"+"floatValue"+"}", fmt.Sprintf("%v", floatValue), -1)
13611362
localVarPath = strings.Replace(localVarPath, "{"+"doubleValue"+"}", fmt.Sprintf("%v", doubleValue), -1)
13621363
localVarPath = strings.Replace(localVarPath, "{"+"int64Value"+"}", fmt.Sprintf("%v", int64Value), -1)
@@ -1376,6 +1377,7 @@ func (a *ABitOfEverythingServiceApiService) ABitOfEverythingServiceCreate(ctx co
13761377
localVarPath = strings.Replace(localVarPath, "{"+"pathEnumValue"+"}", fmt.Sprintf("%v", pathEnumValue), -1)
13771378
localVarPath = strings.Replace(localVarPath, "{"+"nestedPathEnumValue"+"}", fmt.Sprintf("%v", nestedPathEnumValue), -1)
13781379
localVarPath = strings.Replace(localVarPath, "{"+"enumValueAnnotation"+"}", fmt.Sprintf("%v", enumValueAnnotation), -1)
1380+
localVarPath = strings.Replace(localVarPath, "{"+"optionalStringValue"+"}", fmt.Sprintf("%v", optionalStringValue), -1)
13791381

13801382
localVarHeaderParams := make(map[string]string)
13811383
localVarQueryParams := url.Values{}
@@ -2507,7 +2509,7 @@ ABitOfEverythingServiceApiService
25072509
* @param "NestedAnnotationOk" (optional.String) - DeepEnum description. - FALSE: FALSE is false. - TRUE: TRUE is true.
25082510
* @param "Int64OverrideType" (optional.Int64) -
25092511
* @param "OutputOnlyStringViaFieldBehaviorAnnotation" (optional.String) - mark a field as readonly in Open API definition.
2510-
* @param "OptionalString" (optional.String) -
2512+
* @param "OptionalStringValue" (optional.String) -
25112513
25122514
@return interface{}
25132515
*/
@@ -2546,7 +2548,7 @@ type ABitOfEverythingServiceGetQueryOpts struct {
25462548
NestedAnnotationOk optional.String
25472549
Int64OverrideType optional.Int64
25482550
OutputOnlyStringViaFieldBehaviorAnnotation optional.String
2549-
OptionalString optional.String
2551+
OptionalStringValue optional.String
25502552
}
25512553

25522554
func (a *ABitOfEverythingServiceApiService) ABitOfEverythingServiceGetQuery(ctx context.Context, uuid string, floatValue float32, requiredStringViaFieldBehaviorAnnotation string, localVarOptionals *ABitOfEverythingServiceGetQueryOpts) (interface{}, *http.Response, error) {
@@ -2667,8 +2669,8 @@ func (a *ABitOfEverythingServiceApiService) ABitOfEverythingServiceGetQuery(ctx
26672669
if localVarOptionals != nil && localVarOptionals.OutputOnlyStringViaFieldBehaviorAnnotation.IsSet() {
26682670
localVarQueryParams.Add("outputOnlyStringViaFieldBehaviorAnnotation", parameterToString(localVarOptionals.OutputOnlyStringViaFieldBehaviorAnnotation.Value(), ""))
26692671
}
2670-
if localVarOptionals != nil && localVarOptionals.OptionalString.IsSet() {
2671-
localVarQueryParams.Add("optionalString", parameterToString(localVarOptionals.OptionalString.Value(), ""))
2672+
if localVarOptionals != nil && localVarOptionals.OptionalStringValue.IsSet() {
2673+
localVarQueryParams.Add("optionalStringValue", parameterToString(localVarOptionals.OptionalStringValue.Value(), ""))
26722674
}
26732675
// to determine the Content-Type header
26742676
localVarHttpContentTypes := []string{"application/json", "application/x-foo-mime"}

examples/internal/clients/abe/model_examplepb_a_bit_of_everything.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,5 +60,5 @@ type ExamplepbABitOfEverything struct {
6060
Int64OverrideType int64 `json:"int64OverrideType,omitempty"`
6161
RequiredStringViaFieldBehaviorAnnotation string `json:"requiredStringViaFieldBehaviorAnnotation"`
6262
OutputOnlyStringViaFieldBehaviorAnnotation string `json:"outputOnlyStringViaFieldBehaviorAnnotation,omitempty"`
63-
OptionalString string `json:"optionalString,omitempty"`
63+
OptionalStringValue string `json:"optionalStringValue,omitempty"`
6464
}

examples/internal/integration/client_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ func testABEClientCreate(t *testing.T, cl *abe.APIClient) {
109109
want.PathEnumValue.String(),
110110
want.NestedPathEnumValue.String(),
111111
want.EnumValueAnnotation.String(),
112+
want.OptionalStringValue,
112113
)
113114
if err != nil {
114115
t.Fatalf("cl.Create(%#v) failed with %v; want success", want, err)

0 commit comments

Comments
 (0)