From da622a76c14f1e593f05e97542b496979f95c199 Mon Sep 17 00:00:00 2001 From: Craig Pastro Date: Wed, 25 Oct 2023 11:34:11 -0700 Subject: [PATCH] Migrate to connectrpc --- buf.gen.yaml | 4 +- cmd/nungwi/main.go | 4 +- cmd/nungwi/main_test.go | 2 +- go.mod | 12 +- go.sum | 25 +- .../nungwiv1alphaconnect/service.connect.go | 136 +++---- internal/gen/nungwi/v1alpha/service.pb.go | 288 +++++++-------- .../gen/nungwi/v1alpha/service.pb.validate.go | 336 +----------------- internal/middleware/logger.go | 2 +- internal/middleware/validator.go | 2 +- internal/server/server.go | 2 +- proto/buf.lock | 10 +- proto/buf.yaml | 2 +- proto/nungwi/v1alpha/service.proto | 30 +- 14 files changed, 277 insertions(+), 578 deletions(-) diff --git a/buf.gen.yaml b/buf.gen.yaml index 358e5e1..891f113 100644 --- a/buf.gen.yaml +++ b/buf.gen.yaml @@ -5,12 +5,12 @@ default: github.com/craigpastro/nungwi/internal/gen except: - buf.build/googleapis/googleapis - - buf.build/envoyproxy/protoc-gen-validate + - buf.build/bufbuild/protovalidate plugins: - plugin: buf.build/protocolbuffers/go out: internal/gen opt: paths=source_relative - - plugin: buf.build/bufbuild/connect-go + - plugin: buf.build/connectrpc/go out: internal/gen opt: paths=source_relative - plugin: buf.build/bufbuild/validate-go diff --git a/cmd/nungwi/main.go b/cmd/nungwi/main.go index 1d73c91..97ae351 100644 --- a/cmd/nungwi/main.go +++ b/cmd/nungwi/main.go @@ -9,8 +9,8 @@ import ( "syscall" "time" - "github.com/bufbuild/connect-go" - grpcreflect "github.com/bufbuild/connect-grpcreflect-go" + "connectrpc.com/connect" + "connectrpc.com/grpcreflect" "github.com/craigpastro/nungwi/internal/gen/nungwi/v1alpha/nungwiv1alphaconnect" "github.com/craigpastro/nungwi/internal/middleware" "github.com/craigpastro/nungwi/internal/prolog" diff --git a/cmd/nungwi/main_test.go b/cmd/nungwi/main_test.go index 5330dc3..0dcebcc 100644 --- a/cmd/nungwi/main_test.go +++ b/cmd/nungwi/main_test.go @@ -10,7 +10,7 @@ import ( "testing" "time" - "github.com/bufbuild/connect-go" + "connectrpc.com/connect" "github.com/cenkalti/backoff/v4" pb "github.com/craigpastro/nungwi/internal/gen/nungwi/v1alpha" "github.com/craigpastro/nungwi/internal/gen/nungwi/v1alpha/nungwiv1alphaconnect" diff --git a/go.mod b/go.mod index ce5cd9f..ac2905c 100644 --- a/go.mod +++ b/go.mod @@ -1,19 +1,19 @@ module github.com/craigpastro/nungwi -go 1.20 +go 1.21 require ( + buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.31.0-20231017183020-0de7443d03cf.2 + connectrpc.com/connect v1.12.0 + connectrpc.com/grpcreflect v1.2.0 github.com/antlr4-go/antlr/v4 v4.13.0 - github.com/bufbuild/connect-go v1.10.0 - github.com/bufbuild/connect-grpcreflect-go v1.1.0 github.com/cenkalti/backoff/v4 v4.2.1 - github.com/envoyproxy/protoc-gen-validate v1.0.2 github.com/felixge/fgtrace v0.2.0 github.com/ichiban/prolog v1.1.3 github.com/sethvargo/go-envconfig v0.9.0 github.com/stretchr/testify v1.8.4 - golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1 - golang.org/x/net v0.15.0 + golang.org/x/exp v0.0.0-20231006140011-7918f672742d + golang.org/x/net v0.17.0 google.golang.org/protobuf v1.31.0 gopkg.in/yaml.v3 v3.0.1 ) diff --git a/go.sum b/go.sum index 50033a9..c66ce2f 100644 --- a/go.sum +++ b/go.sum @@ -1,27 +1,29 @@ +buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.31.0-20231017183020-0de7443d03cf.2 h1:t3Bq7+sq30Ga31zuUZVk02meAYwhiZ9SGMRVQPJJgqs= +buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.31.0-20231017183020-0de7443d03cf.2/go.mod h1:xafc+XIsTxTy76GJQ1TKgvJWsSugFBqMaN27WhUblew= +connectrpc.com/connect v1.12.0 h1:HwKdOY0lGhhoHdsza+hW55aqHEC64pYpObRNoAgn70g= +connectrpc.com/connect v1.12.0/go.mod h1:3AGaO6RRGMx5IKFfqbe3hvK1NqLosFNP2BxDYTPmNPo= +connectrpc.com/grpcreflect v1.2.0 h1:Q6og1S7HinmtbEuBvARLNwYmTbhEGRpHDhqrPNlmK+U= +connectrpc.com/grpcreflect v1.2.0/go.mod h1:nwSOKmE8nU5u/CidgHtPYk1PFI3U9ignz7iDMxOYkSY= github.com/DataDog/gostackparse v0.6.0 h1:egCGQviIabPwsyoWpGvIBGrEnNWez35aEO7OJ1vBI4o= github.com/DataDog/gostackparse v0.6.0/go.mod h1:lTfqcJKqS9KnXQGnyQMCugq3u1FP6UZMfWR0aitKFMM= github.com/antlr4-go/antlr/v4 v4.13.0 h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI= github.com/antlr4-go/antlr/v4 v4.13.0/go.mod h1:pfChB/xh/Unjila75QW7+VU4TSnWnnk9UTnmpPaOR2g= -github.com/bufbuild/connect-go v1.10.0 h1:QAJ3G9A1OYQW2Jbk3DeoJbkCxuKArrvZgDt47mjdTbg= -github.com/bufbuild/connect-go v1.10.0/go.mod h1:CAIePUgkDR5pAFaylSMtNK45ANQjp9JvpluG20rhpV8= -github.com/bufbuild/connect-grpcreflect-go v1.1.0 h1:T0FKu1y9zZW4cjHuF+Q7jIN6ek8HTpCxOP8ZsORZICg= -github.com/bufbuild/connect-grpcreflect-go v1.1.0/go.mod h1:AxcY2fSAr+oQQuu+K35qy2VDtX+LWr7SrS2SvfjY898= github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/envoyproxy/protoc-gen-validate v1.0.2 h1:QkIBuU5k+x7/QXPvPPnWXWlCdaBFApVqftFV6k087DA= -github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= github.com/felixge/fgtrace v0.2.0 h1:lq7RO6ELjR+S74+eD+ai/vhYvsjno7Vb84yzU6RPSeU= github.com/felixge/fgtrace v0.2.0/go.mod h1:q9vMuItthu3CRfNhirTCTwzBcJ8atUFkrJUhgQbjg8c= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/ichiban/prolog v1.1.3 h1:R9EZrbXeGOJEETjP7gDGr1ukv2kNMyiJuBvy4fDpfVw= github.com/ichiban/prolog v1.1.3/go.mod h1:RmvNfGaSktvEVZ7nmpn0gkWa5u0Y3zQcK0G+Pl+ul+s= github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= @@ -30,14 +32,16 @@ github.com/sethvargo/go-envconfig v0.9.0 h1:Q6FQ6hVEeTECULvkJZakq3dZMeBQ3JUpcKMf github.com/sethvargo/go-envconfig v0.9.0/go.mod h1:Iz1Gy1Sf3T64TQlJSvee81qDhf7YIlt8GMUX6yyNFs0= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= -golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1 h1:MGwJjxBy0HJshjDNfLsYO8xppfqWlA5ZT9OhtUUhTNw= -golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= -golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8= -golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +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/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -46,6 +50,7 @@ google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/internal/gen/nungwi/v1alpha/nungwiv1alphaconnect/service.connect.go b/internal/gen/nungwi/v1alpha/nungwiv1alphaconnect/service.connect.go index 87f7b99..42ff02d 100644 --- a/internal/gen/nungwi/v1alpha/nungwiv1alphaconnect/service.connect.go +++ b/internal/gen/nungwi/v1alpha/nungwiv1alphaconnect/service.connect.go @@ -5,9 +5,9 @@ package nungwiv1alphaconnect import ( + connect "connectrpc.com/connect" context "context" errors "errors" - connect_go "github.com/bufbuild/connect-go" v1alpha "github.com/craigpastro/nungwi/internal/gen/nungwi/v1alpha" http "net/http" strings "strings" @@ -18,7 +18,7 @@ import ( // generated with a version of connect newer than the one compiled into your binary. You can fix the // problem by either regenerating this code with an older version of connect or updating the connect // version compiled into your binary. -const _ = connect_go.IsAtLeastVersion0_1_0 +const _ = connect.IsAtLeastVersion0_1_0 const ( // NungwiServiceName is the fully-qualified name of the NungwiService service. @@ -58,14 +58,14 @@ const ( // NungwiServiceClient is a client for the nungwi.v1alpha.NungwiService service. type NungwiServiceClient interface { - WriteSchema(context.Context, *connect_go.Request[v1alpha.WriteSchemaRequest]) (*connect_go.Response[v1alpha.WriteSchemaResponse], error) - GetSchema(context.Context, *connect_go.Request[v1alpha.GetSchemaRequest]) (*connect_go.Response[v1alpha.GetSchemaResponse], error) - DeleteSchema(context.Context, *connect_go.Request[v1alpha.DeleteSchemaRequest]) (*connect_go.Response[v1alpha.DeleteSchemaResponse], error) - WriteTuples(context.Context, *connect_go.Request[v1alpha.WriteTuplesRequest]) (*connect_go.Response[v1alpha.WriteTuplesResponse], error) - GetTuples(context.Context, *connect_go.Request[v1alpha.GetTuplesRequest]) (*connect_go.Response[v1alpha.GetTuplesResponse], error) - DeleteTuples(context.Context, *connect_go.Request[v1alpha.DeleteTuplesRequest]) (*connect_go.Response[v1alpha.DeleteTuplesResponse], error) - Check(context.Context, *connect_go.Request[v1alpha.CheckRequest]) (*connect_go.Response[v1alpha.CheckResponse], error) - ListObjects(context.Context, *connect_go.Request[v1alpha.ListObjectsRequest]) (*connect_go.Response[v1alpha.ListObjectsResponse], error) + WriteSchema(context.Context, *connect.Request[v1alpha.WriteSchemaRequest]) (*connect.Response[v1alpha.WriteSchemaResponse], error) + GetSchema(context.Context, *connect.Request[v1alpha.GetSchemaRequest]) (*connect.Response[v1alpha.GetSchemaResponse], error) + DeleteSchema(context.Context, *connect.Request[v1alpha.DeleteSchemaRequest]) (*connect.Response[v1alpha.DeleteSchemaResponse], error) + WriteTuples(context.Context, *connect.Request[v1alpha.WriteTuplesRequest]) (*connect.Response[v1alpha.WriteTuplesResponse], error) + GetTuples(context.Context, *connect.Request[v1alpha.GetTuplesRequest]) (*connect.Response[v1alpha.GetTuplesResponse], error) + DeleteTuples(context.Context, *connect.Request[v1alpha.DeleteTuplesRequest]) (*connect.Response[v1alpha.DeleteTuplesResponse], error) + Check(context.Context, *connect.Request[v1alpha.CheckRequest]) (*connect.Response[v1alpha.CheckResponse], error) + ListObjects(context.Context, *connect.Request[v1alpha.ListObjectsRequest]) (*connect.Response[v1alpha.ListObjectsResponse], error) } // NewNungwiServiceClient constructs a client for the nungwi.v1alpha.NungwiService service. By @@ -75,45 +75,45 @@ type NungwiServiceClient interface { // // The URL supplied here should be the base URL for the Connect or gRPC server (for example, // http://api.acme.com or https://acme.com/grpc). -func NewNungwiServiceClient(httpClient connect_go.HTTPClient, baseURL string, opts ...connect_go.ClientOption) NungwiServiceClient { +func NewNungwiServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) NungwiServiceClient { baseURL = strings.TrimRight(baseURL, "/") return &nungwiServiceClient{ - writeSchema: connect_go.NewClient[v1alpha.WriteSchemaRequest, v1alpha.WriteSchemaResponse]( + writeSchema: connect.NewClient[v1alpha.WriteSchemaRequest, v1alpha.WriteSchemaResponse]( httpClient, baseURL+NungwiServiceWriteSchemaProcedure, opts..., ), - getSchema: connect_go.NewClient[v1alpha.GetSchemaRequest, v1alpha.GetSchemaResponse]( + getSchema: connect.NewClient[v1alpha.GetSchemaRequest, v1alpha.GetSchemaResponse]( httpClient, baseURL+NungwiServiceGetSchemaProcedure, opts..., ), - deleteSchema: connect_go.NewClient[v1alpha.DeleteSchemaRequest, v1alpha.DeleteSchemaResponse]( + deleteSchema: connect.NewClient[v1alpha.DeleteSchemaRequest, v1alpha.DeleteSchemaResponse]( httpClient, baseURL+NungwiServiceDeleteSchemaProcedure, opts..., ), - writeTuples: connect_go.NewClient[v1alpha.WriteTuplesRequest, v1alpha.WriteTuplesResponse]( + writeTuples: connect.NewClient[v1alpha.WriteTuplesRequest, v1alpha.WriteTuplesResponse]( httpClient, baseURL+NungwiServiceWriteTuplesProcedure, opts..., ), - getTuples: connect_go.NewClient[v1alpha.GetTuplesRequest, v1alpha.GetTuplesResponse]( + getTuples: connect.NewClient[v1alpha.GetTuplesRequest, v1alpha.GetTuplesResponse]( httpClient, baseURL+NungwiServiceGetTuplesProcedure, opts..., ), - deleteTuples: connect_go.NewClient[v1alpha.DeleteTuplesRequest, v1alpha.DeleteTuplesResponse]( + deleteTuples: connect.NewClient[v1alpha.DeleteTuplesRequest, v1alpha.DeleteTuplesResponse]( httpClient, baseURL+NungwiServiceDeleteTuplesProcedure, opts..., ), - check: connect_go.NewClient[v1alpha.CheckRequest, v1alpha.CheckResponse]( + check: connect.NewClient[v1alpha.CheckRequest, v1alpha.CheckResponse]( httpClient, baseURL+NungwiServiceCheckProcedure, opts..., ), - listObjects: connect_go.NewClient[v1alpha.ListObjectsRequest, v1alpha.ListObjectsResponse]( + listObjects: connect.NewClient[v1alpha.ListObjectsRequest, v1alpha.ListObjectsResponse]( httpClient, baseURL+NungwiServiceListObjectsProcedure, opts..., @@ -123,66 +123,66 @@ func NewNungwiServiceClient(httpClient connect_go.HTTPClient, baseURL string, op // nungwiServiceClient implements NungwiServiceClient. type nungwiServiceClient struct { - writeSchema *connect_go.Client[v1alpha.WriteSchemaRequest, v1alpha.WriteSchemaResponse] - getSchema *connect_go.Client[v1alpha.GetSchemaRequest, v1alpha.GetSchemaResponse] - deleteSchema *connect_go.Client[v1alpha.DeleteSchemaRequest, v1alpha.DeleteSchemaResponse] - writeTuples *connect_go.Client[v1alpha.WriteTuplesRequest, v1alpha.WriteTuplesResponse] - getTuples *connect_go.Client[v1alpha.GetTuplesRequest, v1alpha.GetTuplesResponse] - deleteTuples *connect_go.Client[v1alpha.DeleteTuplesRequest, v1alpha.DeleteTuplesResponse] - check *connect_go.Client[v1alpha.CheckRequest, v1alpha.CheckResponse] - listObjects *connect_go.Client[v1alpha.ListObjectsRequest, v1alpha.ListObjectsResponse] + writeSchema *connect.Client[v1alpha.WriteSchemaRequest, v1alpha.WriteSchemaResponse] + getSchema *connect.Client[v1alpha.GetSchemaRequest, v1alpha.GetSchemaResponse] + deleteSchema *connect.Client[v1alpha.DeleteSchemaRequest, v1alpha.DeleteSchemaResponse] + writeTuples *connect.Client[v1alpha.WriteTuplesRequest, v1alpha.WriteTuplesResponse] + getTuples *connect.Client[v1alpha.GetTuplesRequest, v1alpha.GetTuplesResponse] + deleteTuples *connect.Client[v1alpha.DeleteTuplesRequest, v1alpha.DeleteTuplesResponse] + check *connect.Client[v1alpha.CheckRequest, v1alpha.CheckResponse] + listObjects *connect.Client[v1alpha.ListObjectsRequest, v1alpha.ListObjectsResponse] } // WriteSchema calls nungwi.v1alpha.NungwiService.WriteSchema. -func (c *nungwiServiceClient) WriteSchema(ctx context.Context, req *connect_go.Request[v1alpha.WriteSchemaRequest]) (*connect_go.Response[v1alpha.WriteSchemaResponse], error) { +func (c *nungwiServiceClient) WriteSchema(ctx context.Context, req *connect.Request[v1alpha.WriteSchemaRequest]) (*connect.Response[v1alpha.WriteSchemaResponse], error) { return c.writeSchema.CallUnary(ctx, req) } // GetSchema calls nungwi.v1alpha.NungwiService.GetSchema. -func (c *nungwiServiceClient) GetSchema(ctx context.Context, req *connect_go.Request[v1alpha.GetSchemaRequest]) (*connect_go.Response[v1alpha.GetSchemaResponse], error) { +func (c *nungwiServiceClient) GetSchema(ctx context.Context, req *connect.Request[v1alpha.GetSchemaRequest]) (*connect.Response[v1alpha.GetSchemaResponse], error) { return c.getSchema.CallUnary(ctx, req) } // DeleteSchema calls nungwi.v1alpha.NungwiService.DeleteSchema. -func (c *nungwiServiceClient) DeleteSchema(ctx context.Context, req *connect_go.Request[v1alpha.DeleteSchemaRequest]) (*connect_go.Response[v1alpha.DeleteSchemaResponse], error) { +func (c *nungwiServiceClient) DeleteSchema(ctx context.Context, req *connect.Request[v1alpha.DeleteSchemaRequest]) (*connect.Response[v1alpha.DeleteSchemaResponse], error) { return c.deleteSchema.CallUnary(ctx, req) } // WriteTuples calls nungwi.v1alpha.NungwiService.WriteTuples. -func (c *nungwiServiceClient) WriteTuples(ctx context.Context, req *connect_go.Request[v1alpha.WriteTuplesRequest]) (*connect_go.Response[v1alpha.WriteTuplesResponse], error) { +func (c *nungwiServiceClient) WriteTuples(ctx context.Context, req *connect.Request[v1alpha.WriteTuplesRequest]) (*connect.Response[v1alpha.WriteTuplesResponse], error) { return c.writeTuples.CallUnary(ctx, req) } // GetTuples calls nungwi.v1alpha.NungwiService.GetTuples. -func (c *nungwiServiceClient) GetTuples(ctx context.Context, req *connect_go.Request[v1alpha.GetTuplesRequest]) (*connect_go.Response[v1alpha.GetTuplesResponse], error) { +func (c *nungwiServiceClient) GetTuples(ctx context.Context, req *connect.Request[v1alpha.GetTuplesRequest]) (*connect.Response[v1alpha.GetTuplesResponse], error) { return c.getTuples.CallUnary(ctx, req) } // DeleteTuples calls nungwi.v1alpha.NungwiService.DeleteTuples. -func (c *nungwiServiceClient) DeleteTuples(ctx context.Context, req *connect_go.Request[v1alpha.DeleteTuplesRequest]) (*connect_go.Response[v1alpha.DeleteTuplesResponse], error) { +func (c *nungwiServiceClient) DeleteTuples(ctx context.Context, req *connect.Request[v1alpha.DeleteTuplesRequest]) (*connect.Response[v1alpha.DeleteTuplesResponse], error) { return c.deleteTuples.CallUnary(ctx, req) } // Check calls nungwi.v1alpha.NungwiService.Check. -func (c *nungwiServiceClient) Check(ctx context.Context, req *connect_go.Request[v1alpha.CheckRequest]) (*connect_go.Response[v1alpha.CheckResponse], error) { +func (c *nungwiServiceClient) Check(ctx context.Context, req *connect.Request[v1alpha.CheckRequest]) (*connect.Response[v1alpha.CheckResponse], error) { return c.check.CallUnary(ctx, req) } // ListObjects calls nungwi.v1alpha.NungwiService.ListObjects. -func (c *nungwiServiceClient) ListObjects(ctx context.Context, req *connect_go.Request[v1alpha.ListObjectsRequest]) (*connect_go.Response[v1alpha.ListObjectsResponse], error) { +func (c *nungwiServiceClient) ListObjects(ctx context.Context, req *connect.Request[v1alpha.ListObjectsRequest]) (*connect.Response[v1alpha.ListObjectsResponse], error) { return c.listObjects.CallUnary(ctx, req) } // NungwiServiceHandler is an implementation of the nungwi.v1alpha.NungwiService service. type NungwiServiceHandler interface { - WriteSchema(context.Context, *connect_go.Request[v1alpha.WriteSchemaRequest]) (*connect_go.Response[v1alpha.WriteSchemaResponse], error) - GetSchema(context.Context, *connect_go.Request[v1alpha.GetSchemaRequest]) (*connect_go.Response[v1alpha.GetSchemaResponse], error) - DeleteSchema(context.Context, *connect_go.Request[v1alpha.DeleteSchemaRequest]) (*connect_go.Response[v1alpha.DeleteSchemaResponse], error) - WriteTuples(context.Context, *connect_go.Request[v1alpha.WriteTuplesRequest]) (*connect_go.Response[v1alpha.WriteTuplesResponse], error) - GetTuples(context.Context, *connect_go.Request[v1alpha.GetTuplesRequest]) (*connect_go.Response[v1alpha.GetTuplesResponse], error) - DeleteTuples(context.Context, *connect_go.Request[v1alpha.DeleteTuplesRequest]) (*connect_go.Response[v1alpha.DeleteTuplesResponse], error) - Check(context.Context, *connect_go.Request[v1alpha.CheckRequest]) (*connect_go.Response[v1alpha.CheckResponse], error) - ListObjects(context.Context, *connect_go.Request[v1alpha.ListObjectsRequest]) (*connect_go.Response[v1alpha.ListObjectsResponse], error) + WriteSchema(context.Context, *connect.Request[v1alpha.WriteSchemaRequest]) (*connect.Response[v1alpha.WriteSchemaResponse], error) + GetSchema(context.Context, *connect.Request[v1alpha.GetSchemaRequest]) (*connect.Response[v1alpha.GetSchemaResponse], error) + DeleteSchema(context.Context, *connect.Request[v1alpha.DeleteSchemaRequest]) (*connect.Response[v1alpha.DeleteSchemaResponse], error) + WriteTuples(context.Context, *connect.Request[v1alpha.WriteTuplesRequest]) (*connect.Response[v1alpha.WriteTuplesResponse], error) + GetTuples(context.Context, *connect.Request[v1alpha.GetTuplesRequest]) (*connect.Response[v1alpha.GetTuplesResponse], error) + DeleteTuples(context.Context, *connect.Request[v1alpha.DeleteTuplesRequest]) (*connect.Response[v1alpha.DeleteTuplesResponse], error) + Check(context.Context, *connect.Request[v1alpha.CheckRequest]) (*connect.Response[v1alpha.CheckResponse], error) + ListObjects(context.Context, *connect.Request[v1alpha.ListObjectsRequest]) (*connect.Response[v1alpha.ListObjectsResponse], error) } // NewNungwiServiceHandler builds an HTTP handler from the service implementation. It returns the @@ -190,43 +190,43 @@ type NungwiServiceHandler interface { // // By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf // and JSON codecs. They also support gzip compression. -func NewNungwiServiceHandler(svc NungwiServiceHandler, opts ...connect_go.HandlerOption) (string, http.Handler) { - nungwiServiceWriteSchemaHandler := connect_go.NewUnaryHandler( +func NewNungwiServiceHandler(svc NungwiServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) { + nungwiServiceWriteSchemaHandler := connect.NewUnaryHandler( NungwiServiceWriteSchemaProcedure, svc.WriteSchema, opts..., ) - nungwiServiceGetSchemaHandler := connect_go.NewUnaryHandler( + nungwiServiceGetSchemaHandler := connect.NewUnaryHandler( NungwiServiceGetSchemaProcedure, svc.GetSchema, opts..., ) - nungwiServiceDeleteSchemaHandler := connect_go.NewUnaryHandler( + nungwiServiceDeleteSchemaHandler := connect.NewUnaryHandler( NungwiServiceDeleteSchemaProcedure, svc.DeleteSchema, opts..., ) - nungwiServiceWriteTuplesHandler := connect_go.NewUnaryHandler( + nungwiServiceWriteTuplesHandler := connect.NewUnaryHandler( NungwiServiceWriteTuplesProcedure, svc.WriteTuples, opts..., ) - nungwiServiceGetTuplesHandler := connect_go.NewUnaryHandler( + nungwiServiceGetTuplesHandler := connect.NewUnaryHandler( NungwiServiceGetTuplesProcedure, svc.GetTuples, opts..., ) - nungwiServiceDeleteTuplesHandler := connect_go.NewUnaryHandler( + nungwiServiceDeleteTuplesHandler := connect.NewUnaryHandler( NungwiServiceDeleteTuplesProcedure, svc.DeleteTuples, opts..., ) - nungwiServiceCheckHandler := connect_go.NewUnaryHandler( + nungwiServiceCheckHandler := connect.NewUnaryHandler( NungwiServiceCheckProcedure, svc.Check, opts..., ) - nungwiServiceListObjectsHandler := connect_go.NewUnaryHandler( + nungwiServiceListObjectsHandler := connect.NewUnaryHandler( NungwiServiceListObjectsProcedure, svc.ListObjects, opts..., @@ -258,34 +258,34 @@ func NewNungwiServiceHandler(svc NungwiServiceHandler, opts ...connect_go.Handle // UnimplementedNungwiServiceHandler returns CodeUnimplemented from all methods. type UnimplementedNungwiServiceHandler struct{} -func (UnimplementedNungwiServiceHandler) WriteSchema(context.Context, *connect_go.Request[v1alpha.WriteSchemaRequest]) (*connect_go.Response[v1alpha.WriteSchemaResponse], error) { - return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("nungwi.v1alpha.NungwiService.WriteSchema is not implemented")) +func (UnimplementedNungwiServiceHandler) WriteSchema(context.Context, *connect.Request[v1alpha.WriteSchemaRequest]) (*connect.Response[v1alpha.WriteSchemaResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("nungwi.v1alpha.NungwiService.WriteSchema is not implemented")) } -func (UnimplementedNungwiServiceHandler) GetSchema(context.Context, *connect_go.Request[v1alpha.GetSchemaRequest]) (*connect_go.Response[v1alpha.GetSchemaResponse], error) { - return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("nungwi.v1alpha.NungwiService.GetSchema is not implemented")) +func (UnimplementedNungwiServiceHandler) GetSchema(context.Context, *connect.Request[v1alpha.GetSchemaRequest]) (*connect.Response[v1alpha.GetSchemaResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("nungwi.v1alpha.NungwiService.GetSchema is not implemented")) } -func (UnimplementedNungwiServiceHandler) DeleteSchema(context.Context, *connect_go.Request[v1alpha.DeleteSchemaRequest]) (*connect_go.Response[v1alpha.DeleteSchemaResponse], error) { - return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("nungwi.v1alpha.NungwiService.DeleteSchema is not implemented")) +func (UnimplementedNungwiServiceHandler) DeleteSchema(context.Context, *connect.Request[v1alpha.DeleteSchemaRequest]) (*connect.Response[v1alpha.DeleteSchemaResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("nungwi.v1alpha.NungwiService.DeleteSchema is not implemented")) } -func (UnimplementedNungwiServiceHandler) WriteTuples(context.Context, *connect_go.Request[v1alpha.WriteTuplesRequest]) (*connect_go.Response[v1alpha.WriteTuplesResponse], error) { - return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("nungwi.v1alpha.NungwiService.WriteTuples is not implemented")) +func (UnimplementedNungwiServiceHandler) WriteTuples(context.Context, *connect.Request[v1alpha.WriteTuplesRequest]) (*connect.Response[v1alpha.WriteTuplesResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("nungwi.v1alpha.NungwiService.WriteTuples is not implemented")) } -func (UnimplementedNungwiServiceHandler) GetTuples(context.Context, *connect_go.Request[v1alpha.GetTuplesRequest]) (*connect_go.Response[v1alpha.GetTuplesResponse], error) { - return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("nungwi.v1alpha.NungwiService.GetTuples is not implemented")) +func (UnimplementedNungwiServiceHandler) GetTuples(context.Context, *connect.Request[v1alpha.GetTuplesRequest]) (*connect.Response[v1alpha.GetTuplesResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("nungwi.v1alpha.NungwiService.GetTuples is not implemented")) } -func (UnimplementedNungwiServiceHandler) DeleteTuples(context.Context, *connect_go.Request[v1alpha.DeleteTuplesRequest]) (*connect_go.Response[v1alpha.DeleteTuplesResponse], error) { - return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("nungwi.v1alpha.NungwiService.DeleteTuples is not implemented")) +func (UnimplementedNungwiServiceHandler) DeleteTuples(context.Context, *connect.Request[v1alpha.DeleteTuplesRequest]) (*connect.Response[v1alpha.DeleteTuplesResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("nungwi.v1alpha.NungwiService.DeleteTuples is not implemented")) } -func (UnimplementedNungwiServiceHandler) Check(context.Context, *connect_go.Request[v1alpha.CheckRequest]) (*connect_go.Response[v1alpha.CheckResponse], error) { - return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("nungwi.v1alpha.NungwiService.Check is not implemented")) +func (UnimplementedNungwiServiceHandler) Check(context.Context, *connect.Request[v1alpha.CheckRequest]) (*connect.Response[v1alpha.CheckResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("nungwi.v1alpha.NungwiService.Check is not implemented")) } -func (UnimplementedNungwiServiceHandler) ListObjects(context.Context, *connect_go.Request[v1alpha.ListObjectsRequest]) (*connect_go.Response[v1alpha.ListObjectsResponse], error) { - return nil, connect_go.NewError(connect_go.CodeUnimplemented, errors.New("nungwi.v1alpha.NungwiService.ListObjects is not implemented")) +func (UnimplementedNungwiServiceHandler) ListObjects(context.Context, *connect.Request[v1alpha.ListObjectsRequest]) (*connect.Response[v1alpha.ListObjectsResponse], error) { + return nil, connect.NewError(connect.CodeUnimplemented, errors.New("nungwi.v1alpha.NungwiService.ListObjects is not implemented")) } diff --git a/internal/gen/nungwi/v1alpha/service.pb.go b/internal/gen/nungwi/v1alpha/service.pb.go index ef53f2c..ef1216c 100644 --- a/internal/gen/nungwi/v1alpha/service.pb.go +++ b/internal/gen/nungwi/v1alpha/service.pb.go @@ -7,7 +7,7 @@ package nungwiv1alpha import ( - _ "github.com/envoyproxy/protoc-gen-validate/validate" + _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" @@ -889,156 +889,156 @@ var File_nungwi_v1alpha_service_proto protoreflect.FileDescriptor var file_nungwi_v1alpha_service_proto_rawDesc = []byte{ 0x0a, 0x1c, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, - 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x1a, 0x17, - 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbc, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x38, 0x0a, 0x09, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xfa, - 0x42, 0x17, 0x72, 0x15, 0x28, 0x80, 0x02, 0x32, 0x10, 0x5e, 0x5b, 0x2d, 0x5f, 0x61, 0x2d, 0x7a, - 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xfa, 0x42, 0x17, 0x72, 0x15, 0x28, 0x80, 0x02, - 0x32, 0x10, 0x5e, 0x5b, 0x2d, 0x5f, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, - 0x2b, 0x24, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x38, 0x0a, 0x07, - 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xfa, - 0x42, 0x1b, 0x72, 0x19, 0x28, 0x80, 0x08, 0x32, 0x14, 0x5e, 0x5b, 0x2d, 0x5f, 0x61, 0x2d, 0x7a, - 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x28, 0x29, 0x2c, 0x20, 0x5d, 0x2b, 0x24, 0x52, 0x07, 0x72, - 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x22, 0xd9, 0x01, 0x0a, 0x05, 0x54, 0x75, 0x70, 0x6c, 0x65, - 0x12, 0x38, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x1a, 0xfa, 0x42, 0x17, 0x72, 0x15, 0x28, 0x80, 0x02, 0x32, 0x10, 0x5e, - 0x5b, 0x2d, 0x5f, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2a, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xfa, 0x42, 0x17, 0x72, 0x15, 0x28, 0x80, 0x02, - 0x32, 0x10, 0x5e, 0x5b, 0x2d, 0x5f, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, - 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xfa, 0x42, 0x17, 0x72, 0x15, 0x28, - 0x80, 0x02, 0x32, 0x10, 0x5e, 0x5b, 0x2d, 0x5f, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, - 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, - 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xfa, 0x42, - 0x1b, 0x72, 0x19, 0x28, 0x80, 0x04, 0x32, 0x14, 0x5e, 0x5b, 0x2d, 0x5f, 0x61, 0x2d, 0x7a, 0x41, - 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x28, 0x29, 0x2c, 0x20, 0x5d, 0x2b, 0x24, 0x52, 0x04, 0x75, 0x73, - 0x65, 0x72, 0x22, 0x4e, 0x0a, 0x12, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6e, 0x75, 0x6e, 0x67, - 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x47, 0x65, 0x74, - 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4d, 0x0a, - 0x11, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x22, 0x15, 0x0a, 0x13, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x22, 0x16, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x43, 0x0a, 0x12, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x15, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x2e, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x52, 0x06, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, - 0x22, 0x15, 0x0a, 0x13, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x54, 0x75, - 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x42, 0x0a, 0x11, 0x47, - 0x65, 0x74, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x2d, 0x0a, 0x06, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x15, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x2e, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x52, 0x06, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x22, - 0x44, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x52, 0x06, 0x74, - 0x75, 0x70, 0x6c, 0x65, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, - 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe0, 0x01, - 0x0a, 0x0c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, + 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x1a, 0x1b, + 0x62, 0x75, 0x66, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbc, 0x01, 0x0a, 0x0e, + 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x38, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x1a, 0xfa, 0x42, 0x17, 0x72, 0x15, 0x28, 0x80, 0x02, 0x32, 0x10, 0x5e, 0x5b, 0x2d, + 0x09, 0x42, 0x1a, 0xba, 0x48, 0x17, 0x72, 0x15, 0x28, 0x80, 0x02, 0x32, 0x10, 0x5e, 0x5b, 0x2d, 0x5f, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xfa, 0x42, 0x17, 0x72, 0x15, 0x28, 0x80, 0x02, 0x32, 0x10, - 0x5e, 0x5b, 0x2d, 0x5f, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xfa, 0x42, 0x17, 0x72, 0x15, 0x28, 0x80, 0x02, - 0x32, 0x10, 0x5e, 0x5b, 0x2d, 0x5f, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, - 0x2b, 0x24, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x04, - 0x75, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xfa, 0x42, 0x1b, 0x72, - 0x19, 0x28, 0x80, 0x04, 0x32, 0x14, 0x5e, 0x5b, 0x2d, 0x5f, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, - 0x30, 0x2d, 0x39, 0x28, 0x29, 0x2c, 0x20, 0x5d, 0x2b, 0x24, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, - 0x22, 0x29, 0x0a, 0x0d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x07, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x22, 0xba, 0x01, 0x0a, 0x12, - 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xba, 0x48, 0x17, 0x72, + 0x15, 0x28, 0x80, 0x02, 0x32, 0x10, 0x5e, 0x5b, 0x2d, 0x5f, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, + 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x38, 0x0a, 0x07, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x1e, 0xba, 0x48, 0x1b, 0x72, 0x19, 0x28, 0x80, 0x08, 0x32, 0x14, 0x5e, 0x5b, 0x2d, + 0x5f, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x28, 0x29, 0x2c, 0x20, 0x5d, 0x2b, + 0x24, 0x52, 0x07, 0x72, 0x65, 0x77, 0x72, 0x69, 0x74, 0x65, 0x22, 0xd9, 0x01, 0x0a, 0x05, 0x54, + 0x75, 0x70, 0x6c, 0x65, 0x12, 0x38, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xba, 0x48, 0x17, 0x72, 0x15, 0x28, 0x80, + 0x02, 0x32, 0x10, 0x5e, 0x5b, 0x2d, 0x5f, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, + 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2a, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xba, 0x48, 0x17, 0x72, + 0x15, 0x28, 0x80, 0x02, 0x32, 0x10, 0x5e, 0x5b, 0x2d, 0x5f, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, + 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xba, 0x48, + 0x17, 0x72, 0x15, 0x28, 0x80, 0x02, 0x32, 0x10, 0x5e, 0x5b, 0x2d, 0x5f, 0x61, 0x2d, 0x7a, 0x41, + 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x1e, 0xba, 0x48, 0x1b, 0x72, 0x19, 0x28, 0x80, 0x04, 0x32, 0x14, 0x5e, 0x5b, 0x2d, 0x5f, + 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x28, 0x29, 0x2c, 0x20, 0x5d, 0x2b, 0x24, + 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x4e, 0x0a, 0x12, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x07, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, + 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x0a, + 0x10, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x22, 0x4d, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, + 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x73, + 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x16, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x43, 0x0a, 0x12, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x52, 0x06, 0x74, 0x75, + 0x70, 0x6c, 0x65, 0x73, 0x22, 0x15, 0x0a, 0x13, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, 0x75, 0x70, + 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x47, + 0x65, 0x74, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, + 0x42, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x06, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x52, 0x06, 0x74, 0x75, 0x70, + 0x6c, 0x65, 0x73, 0x22, 0x44, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x75, 0x70, + 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x06, 0x74, 0x75, + 0x70, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6e, 0x75, 0x6e, + 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x54, 0x75, 0x70, 0x6c, + 0x65, 0x52, 0x06, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xe0, 0x01, 0x0a, 0x0c, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xfa, 0x42, 0x17, 0x72, 0x15, 0x28, 0x80, 0x02, 0x32, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xba, 0x48, 0x17, 0x72, 0x15, 0x28, 0x80, 0x02, 0x32, 0x10, 0x5e, 0x5b, 0x2d, 0x5f, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, - 0x24, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x36, 0x0a, 0x08, - 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, - 0xfa, 0x42, 0x17, 0x72, 0x15, 0x28, 0x80, 0x02, 0x32, 0x10, 0x5e, 0x5b, 0x2d, 0x5f, 0x61, 0x2d, - 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x1e, 0xfa, 0x42, 0x1b, 0x72, 0x19, 0x28, 0x80, 0x04, 0x32, 0x14, 0x5e, 0x5b, - 0x2d, 0x5f, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x28, 0x29, 0x2c, 0x20, 0x5d, - 0x2b, 0x24, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x27, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x69, 0x64, - 0x73, 0x32, 0xc7, 0x05, 0x0a, 0x0d, 0x4e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0x58, 0x0a, 0x0b, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, - 0x6d, 0x61, 0x12, 0x22, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, + 0x24, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2a, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xba, 0x48, 0x17, 0x72, 0x15, 0x28, + 0x80, 0x02, 0x32, 0x10, 0x5e, 0x5b, 0x2d, 0x5f, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, + 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x02, 0x69, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xba, 0x48, 0x17, 0x72, + 0x15, 0x28, 0x80, 0x02, 0x32, 0x10, 0x5e, 0x5b, 0x2d, 0x5f, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, + 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x32, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, + 0xba, 0x48, 0x1b, 0x72, 0x19, 0x28, 0x80, 0x04, 0x32, 0x14, 0x5e, 0x5b, 0x2d, 0x5f, 0x61, 0x2d, + 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x28, 0x29, 0x2c, 0x20, 0x5d, 0x2b, 0x24, 0x52, 0x04, + 0x75, 0x73, 0x65, 0x72, 0x22, 0x29, 0x0a, 0x0d, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x22, + 0xba, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1a, 0xba, 0x48, 0x17, 0x72, 0x15, + 0x28, 0x80, 0x02, 0x32, 0x10, 0x5e, 0x5b, 0x2d, 0x5f, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, + 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x12, 0x36, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x1a, 0xba, 0x48, 0x17, 0x72, 0x15, 0x28, 0x80, 0x02, 0x32, 0x10, 0x5e, 0x5b, + 0x2d, 0x5f, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x2b, 0x24, 0x52, 0x08, + 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x32, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1e, 0xba, 0x48, 0x1b, 0x72, 0x19, 0x28, 0x80, 0x04, + 0x32, 0x14, 0x5e, 0x5b, 0x2d, 0x5f, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x28, + 0x29, 0x2c, 0x20, 0x5d, 0x2b, 0x24, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x27, 0x0a, 0x13, + 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x03, 0x69, 0x64, 0x73, 0x32, 0xc7, 0x05, 0x0a, 0x0d, 0x4e, 0x75, 0x6e, 0x67, 0x77, 0x69, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x58, 0x0a, 0x0b, 0x57, 0x72, 0x69, 0x74, 0x65, + 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x22, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x53, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, - 0x09, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x20, 0x2e, 0x6e, 0x75, 0x6e, - 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x53, - 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6e, - 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65, - 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x5b, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, - 0x61, 0x12, 0x23, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, - 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x58, - 0x0a, 0x0b, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x22, 0x2e, - 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x57, - 0x72, 0x69, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x23, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, + 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6e, 0x75, 0x6e, + 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x52, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x20, + 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, + 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x21, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, + 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x23, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6e, 0x75, 0x6e, + 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x58, 0x0a, 0x0b, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, + 0x73, 0x12, 0x22, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x54, - 0x75, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, - 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, - 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x75, 0x70, 0x6c, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x5b, 0x0a, 0x0c, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x23, 0x2e, 0x6e, - 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x24, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x05, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x12, 0x1c, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1d, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x58, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x12, 0x22, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, - 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x52, 0x0a, 0x09, + 0x47, 0x65, 0x74, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x20, 0x2e, 0x6e, 0x75, 0x6e, 0x67, + 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x75, + 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6e, 0x75, + 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x47, 0x65, 0x74, + 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x5b, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, + 0x12, 0x23, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x75, 0x70, + 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, + 0x05, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, 0x1c, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, + 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, + 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x58, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x12, 0x22, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0xc4, 0x01, 0x0a, 0x12, - 0x63, 0x6f, 0x6d, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x42, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, - 0x50, 0x01, 0x5a, 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, - 0x72, 0x61, 0x69, 0x67, 0x70, 0x61, 0x73, 0x74, 0x72, 0x6f, 0x2f, 0x6e, 0x75, 0x6e, 0x67, 0x77, - 0x69, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x6e, - 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x3b, 0x6e, 0x75, - 0x6e, 0x67, 0x77, 0x69, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0xa2, 0x02, 0x03, 0x4e, 0x58, - 0x58, 0xaa, 0x02, 0x0e, 0x4e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x56, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0xca, 0x02, 0x0e, 0x4e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x5c, 0x56, 0x31, 0x61, 0x6c, - 0x70, 0x68, 0x61, 0xe2, 0x02, 0x1a, 0x4e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x5c, 0x56, 0x31, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0xea, 0x02, 0x0f, 0x4e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x3a, 0x3a, 0x56, 0x31, 0x61, 0x6c, 0x70, - 0x68, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, + 0x69, 0x2e, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, + 0xc4, 0x01, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x76, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x42, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x47, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x63, 0x72, 0x61, 0x69, 0x67, 0x70, 0x61, 0x73, 0x74, 0x72, 0x6f, 0x2f, 0x6e, + 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x2f, 0x67, + 0x65, 0x6e, 0x2f, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2f, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, + 0x61, 0x3b, 0x6e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x76, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0xa2, + 0x02, 0x03, 0x4e, 0x58, 0x58, 0xaa, 0x02, 0x0e, 0x4e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x2e, 0x56, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0xca, 0x02, 0x0e, 0x4e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x5c, + 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0xe2, 0x02, 0x1a, 0x4e, 0x75, 0x6e, 0x67, 0x77, 0x69, + 0x5c, 0x56, 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x4e, 0x75, 0x6e, 0x67, 0x77, 0x69, 0x3a, 0x3a, 0x56, + 0x31, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/internal/gen/nungwi/v1alpha/service.pb.validate.go b/internal/gen/nungwi/v1alpha/service.pb.validate.go index 80715fe..857cbd0 100644 --- a/internal/gen/nungwi/v1alpha/service.pb.validate.go +++ b/internal/gen/nungwi/v1alpha/service.pb.validate.go @@ -57,71 +57,11 @@ func (m *RelationConfig) validate(all bool) error { var errors []error - if len(m.GetNamespace()) > 256 { - err := RelationConfigValidationError{ - field: "Namespace", - reason: "value length must be at most 256 bytes", - } - if !all { - return err - } - errors = append(errors, err) - } - - if !_RelationConfig_Namespace_Pattern.MatchString(m.GetNamespace()) { - err := RelationConfigValidationError{ - field: "Namespace", - reason: "value does not match regex pattern \"^[-_a-zA-Z0-9]+$\"", - } - if !all { - return err - } - errors = append(errors, err) - } - - if len(m.GetRelation()) > 256 { - err := RelationConfigValidationError{ - field: "Relation", - reason: "value length must be at most 256 bytes", - } - if !all { - return err - } - errors = append(errors, err) - } - - if !_RelationConfig_Relation_Pattern.MatchString(m.GetRelation()) { - err := RelationConfigValidationError{ - field: "Relation", - reason: "value does not match regex pattern \"^[-_a-zA-Z0-9]+$\"", - } - if !all { - return err - } - errors = append(errors, err) - } + // no validation rules for Namespace - if len(m.GetRewrite()) > 1024 { - err := RelationConfigValidationError{ - field: "Rewrite", - reason: "value length must be at most 1024 bytes", - } - if !all { - return err - } - errors = append(errors, err) - } + // no validation rules for Relation - if !_RelationConfig_Rewrite_Pattern.MatchString(m.GetRewrite()) { - err := RelationConfigValidationError{ - field: "Rewrite", - reason: "value does not match regex pattern \"^[-_a-zA-Z0-9(), ]+$\"", - } - if !all { - return err - } - errors = append(errors, err) - } + // no validation rules for Rewrite if len(errors) > 0 { return RelationConfigMultiError(errors) @@ -201,12 +141,6 @@ var _ interface { ErrorName() string } = RelationConfigValidationError{} -var _RelationConfig_Namespace_Pattern = regexp.MustCompile("^[-_a-zA-Z0-9]+$") - -var _RelationConfig_Relation_Pattern = regexp.MustCompile("^[-_a-zA-Z0-9]+$") - -var _RelationConfig_Rewrite_Pattern = regexp.MustCompile("^[-_a-zA-Z0-9(), ]+$") - // Validate checks the field values on Tuple with the rules defined in the // proto definition for this message. If any rules are violated, the first // error encountered is returned, or nil if there are no violations. @@ -228,93 +162,13 @@ func (m *Tuple) validate(all bool) error { var errors []error - if len(m.GetNamespace()) > 256 { - err := TupleValidationError{ - field: "Namespace", - reason: "value length must be at most 256 bytes", - } - if !all { - return err - } - errors = append(errors, err) - } - - if !_Tuple_Namespace_Pattern.MatchString(m.GetNamespace()) { - err := TupleValidationError{ - field: "Namespace", - reason: "value does not match regex pattern \"^[-_a-zA-Z0-9]+$\"", - } - if !all { - return err - } - errors = append(errors, err) - } - - if len(m.GetId()) > 256 { - err := TupleValidationError{ - field: "Id", - reason: "value length must be at most 256 bytes", - } - if !all { - return err - } - errors = append(errors, err) - } - - if !_Tuple_Id_Pattern.MatchString(m.GetId()) { - err := TupleValidationError{ - field: "Id", - reason: "value does not match regex pattern \"^[-_a-zA-Z0-9]+$\"", - } - if !all { - return err - } - errors = append(errors, err) - } - - if len(m.GetRelation()) > 256 { - err := TupleValidationError{ - field: "Relation", - reason: "value length must be at most 256 bytes", - } - if !all { - return err - } - errors = append(errors, err) - } + // no validation rules for Namespace - if !_Tuple_Relation_Pattern.MatchString(m.GetRelation()) { - err := TupleValidationError{ - field: "Relation", - reason: "value does not match regex pattern \"^[-_a-zA-Z0-9]+$\"", - } - if !all { - return err - } - errors = append(errors, err) - } + // no validation rules for Id - if len(m.GetUser()) > 512 { - err := TupleValidationError{ - field: "User", - reason: "value length must be at most 512 bytes", - } - if !all { - return err - } - errors = append(errors, err) - } + // no validation rules for Relation - if !_Tuple_User_Pattern.MatchString(m.GetUser()) { - err := TupleValidationError{ - field: "User", - reason: "value does not match regex pattern \"^[-_a-zA-Z0-9(), ]+$\"", - } - if !all { - return err - } - errors = append(errors, err) - } + // no validation rules for User if len(errors) > 0 { return TupleMultiError(errors) @@ -393,14 +247,6 @@ var _ interface { ErrorName() string } = TupleValidationError{} -var _Tuple_Namespace_Pattern = regexp.MustCompile("^[-_a-zA-Z0-9]+$") - -var _Tuple_Id_Pattern = regexp.MustCompile("^[-_a-zA-Z0-9]+$") - -var _Tuple_Relation_Pattern = regexp.MustCompile("^[-_a-zA-Z0-9]+$") - -var _Tuple_User_Pattern = regexp.MustCompile("^[-_a-zA-Z0-9(), ]+$") - // Validate checks the field values on WriteSchemaRequest with the rules // defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. @@ -1813,93 +1659,13 @@ func (m *CheckRequest) validate(all bool) error { var errors []error - if len(m.GetNamespace()) > 256 { - err := CheckRequestValidationError{ - field: "Namespace", - reason: "value length must be at most 256 bytes", - } - if !all { - return err - } - errors = append(errors, err) - } - - if !_CheckRequest_Namespace_Pattern.MatchString(m.GetNamespace()) { - err := CheckRequestValidationError{ - field: "Namespace", - reason: "value does not match regex pattern \"^[-_a-zA-Z0-9]+$\"", - } - if !all { - return err - } - errors = append(errors, err) - } - - if len(m.GetId()) > 256 { - err := CheckRequestValidationError{ - field: "Id", - reason: "value length must be at most 256 bytes", - } - if !all { - return err - } - errors = append(errors, err) - } - - if !_CheckRequest_Id_Pattern.MatchString(m.GetId()) { - err := CheckRequestValidationError{ - field: "Id", - reason: "value does not match regex pattern \"^[-_a-zA-Z0-9]+$\"", - } - if !all { - return err - } - errors = append(errors, err) - } + // no validation rules for Namespace - if len(m.GetRelation()) > 256 { - err := CheckRequestValidationError{ - field: "Relation", - reason: "value length must be at most 256 bytes", - } - if !all { - return err - } - errors = append(errors, err) - } - - if !_CheckRequest_Relation_Pattern.MatchString(m.GetRelation()) { - err := CheckRequestValidationError{ - field: "Relation", - reason: "value does not match regex pattern \"^[-_a-zA-Z0-9]+$\"", - } - if !all { - return err - } - errors = append(errors, err) - } + // no validation rules for Id - if len(m.GetUser()) > 512 { - err := CheckRequestValidationError{ - field: "User", - reason: "value length must be at most 512 bytes", - } - if !all { - return err - } - errors = append(errors, err) - } + // no validation rules for Relation - if !_CheckRequest_User_Pattern.MatchString(m.GetUser()) { - err := CheckRequestValidationError{ - field: "User", - reason: "value does not match regex pattern \"^[-_a-zA-Z0-9(), ]+$\"", - } - if !all { - return err - } - errors = append(errors, err) - } + // no validation rules for User if len(errors) > 0 { return CheckRequestMultiError(errors) @@ -1978,14 +1744,6 @@ var _ interface { ErrorName() string } = CheckRequestValidationError{} -var _CheckRequest_Namespace_Pattern = regexp.MustCompile("^[-_a-zA-Z0-9]+$") - -var _CheckRequest_Id_Pattern = regexp.MustCompile("^[-_a-zA-Z0-9]+$") - -var _CheckRequest_Relation_Pattern = regexp.MustCompile("^[-_a-zA-Z0-9]+$") - -var _CheckRequest_User_Pattern = regexp.MustCompile("^[-_a-zA-Z0-9(), ]+$") - // Validate checks the field values on CheckResponse with the rules defined in // the proto definition for this message. If any rules are violated, the first // error encountered is returned, or nil if there are no violations. @@ -2110,71 +1868,11 @@ func (m *ListObjectsRequest) validate(all bool) error { var errors []error - if len(m.GetNamespace()) > 256 { - err := ListObjectsRequestValidationError{ - field: "Namespace", - reason: "value length must be at most 256 bytes", - } - if !all { - return err - } - errors = append(errors, err) - } - - if !_ListObjectsRequest_Namespace_Pattern.MatchString(m.GetNamespace()) { - err := ListObjectsRequestValidationError{ - field: "Namespace", - reason: "value does not match regex pattern \"^[-_a-zA-Z0-9]+$\"", - } - if !all { - return err - } - errors = append(errors, err) - } - - if len(m.GetRelation()) > 256 { - err := ListObjectsRequestValidationError{ - field: "Relation", - reason: "value length must be at most 256 bytes", - } - if !all { - return err - } - errors = append(errors, err) - } - - if !_ListObjectsRequest_Relation_Pattern.MatchString(m.GetRelation()) { - err := ListObjectsRequestValidationError{ - field: "Relation", - reason: "value does not match regex pattern \"^[-_a-zA-Z0-9]+$\"", - } - if !all { - return err - } - errors = append(errors, err) - } + // no validation rules for Namespace - if len(m.GetUser()) > 512 { - err := ListObjectsRequestValidationError{ - field: "User", - reason: "value length must be at most 512 bytes", - } - if !all { - return err - } - errors = append(errors, err) - } + // no validation rules for Relation - if !_ListObjectsRequest_User_Pattern.MatchString(m.GetUser()) { - err := ListObjectsRequestValidationError{ - field: "User", - reason: "value does not match regex pattern \"^[-_a-zA-Z0-9(), ]+$\"", - } - if !all { - return err - } - errors = append(errors, err) - } + // no validation rules for User if len(errors) > 0 { return ListObjectsRequestMultiError(errors) @@ -2256,12 +1954,6 @@ var _ interface { ErrorName() string } = ListObjectsRequestValidationError{} -var _ListObjectsRequest_Namespace_Pattern = regexp.MustCompile("^[-_a-zA-Z0-9]+$") - -var _ListObjectsRequest_Relation_Pattern = regexp.MustCompile("^[-_a-zA-Z0-9]+$") - -var _ListObjectsRequest_User_Pattern = regexp.MustCompile("^[-_a-zA-Z0-9(), ]+$") - // Validate checks the field values on ListObjectsResponse with the rules // defined in the proto definition for this message. If any rules are // violated, the first error encountered is returned, or nil if there are no violations. diff --git a/internal/middleware/logger.go b/internal/middleware/logger.go index cd0b3ec..0dffd4e 100644 --- a/internal/middleware/logger.go +++ b/internal/middleware/logger.go @@ -4,7 +4,7 @@ import ( "context" "time" - "github.com/bufbuild/connect-go" + "connectrpc.com/connect" "golang.org/x/exp/slog" ) diff --git a/internal/middleware/validator.go b/internal/middleware/validator.go index efa202c..004f229 100644 --- a/internal/middleware/validator.go +++ b/internal/middleware/validator.go @@ -3,7 +3,7 @@ package middleware import ( "context" - "github.com/bufbuild/connect-go" + "connectrpc.com/connect" ) type validator interface { diff --git a/internal/server/server.go b/internal/server/server.go index 0f3397e..868f843 100644 --- a/internal/server/server.go +++ b/internal/server/server.go @@ -4,7 +4,7 @@ import ( "context" "errors" - "github.com/bufbuild/connect-go" + "connectrpc.com/connect" pb "github.com/craigpastro/nungwi/internal/gen/nungwi/v1alpha" "github.com/craigpastro/nungwi/internal/gen/nungwi/v1alpha/nungwiv1alphaconnect" "github.com/craigpastro/nungwi/internal/prolog" diff --git a/proto/buf.lock b/proto/buf.lock index 2eb6b88..f39d844 100644 --- a/proto/buf.lock +++ b/proto/buf.lock @@ -2,10 +2,12 @@ version: v1 deps: - remote: buf.build - owner: envoyproxy - repository: protoc-gen-validate - commit: 6607b10f00ed4a3d98f906807131c44a + owner: bufbuild + repository: protovalidate + commit: 0de7443d03cf41228f8a9790b12b417e + digest: shake256:3c0676a73cef06439c107cb9560627354815adbc254976f807d645de7e2c1bf19d0438d5d56d5bc92465377e0d9315951e986fc6ced2871e450534b2b8c953b0 - remote: buf.build owner: googleapis repository: googleapis - commit: faacf837d7304c58b7c9020c7807fa6e + commit: 28151c0d0a1641bf938a7672c500e01d + digest: shake256:49215edf8ef57f7863004539deff8834cfb2195113f0b890dd1f67815d9353e28e668019165b9d872395871eeafcbab3ccfdb2b5f11734d3cca95be9e8d139de diff --git a/proto/buf.yaml b/proto/buf.yaml index ba89e5a..c881894 100644 --- a/proto/buf.yaml +++ b/proto/buf.yaml @@ -1,7 +1,7 @@ version: v1 deps: - buf.build/googleapis/googleapis - - buf.build/envoyproxy/protoc-gen-validate + - buf.build/bufbuild/protovalidate breaking: ignore_unstable_packages: true use: diff --git a/proto/nungwi/v1alpha/service.proto b/proto/nungwi/v1alpha/service.proto index bfc3ad6..7994abb 100644 --- a/proto/nungwi/v1alpha/service.proto +++ b/proto/nungwi/v1alpha/service.proto @@ -2,7 +2,7 @@ syntax = "proto3"; package nungwi.v1alpha; -import "validate/validate.proto"; +import "buf/validate/validate.proto"; service NungwiService { rpc WriteSchema(WriteSchemaRequest) returns (WriteSchemaResponse) {} @@ -23,39 +23,39 @@ service NungwiService { } message RelationConfig { - string namespace = 1 [(validate.rules).string = { + string namespace = 1 [(buf.validate.field).string = { pattern: "^[-_a-zA-Z0-9]+$", max_bytes: 256 }]; - string relation = 2 [(validate.rules).string = { + string relation = 2 [(buf.validate.field).string = { pattern: "^[-_a-zA-Z0-9]+$", max_bytes: 256 }]; - string rewrite = 3 [(validate.rules).string = { + string rewrite = 3 [(buf.validate.field).string = { pattern: "^[-_a-zA-Z0-9(), ]+$", max_bytes: 1024 }]; } message Tuple { - string namespace = 1 [(validate.rules).string = { + string namespace = 1 [(buf.validate.field).string = { pattern: "^[-_a-zA-Z0-9]+$", max_bytes: 256 }]; - string id = 2 [(validate.rules).string = { + string id = 2 [(buf.validate.field).string = { pattern: "^[-_a-zA-Z0-9]+$", max_bytes: 256 }]; - string relation = 3 [(validate.rules).string = { + string relation = 3 [(buf.validate.field).string = { pattern: "^[-_a-zA-Z0-9]+$", max_bytes: 256 }]; - string user = 4 [(validate.rules).string = { + string user = 4 [(buf.validate.field).string = { pattern: "^[-_a-zA-Z0-9(), ]+$", max_bytes: 512 }]; @@ -96,22 +96,22 @@ message DeleteTuplesRequest { message DeleteTuplesResponse {} message CheckRequest { - string namespace = 1 [(validate.rules).string = { + string namespace = 1 [(buf.validate.field).string = { pattern: "^[-_a-zA-Z0-9]+$", max_bytes: 256 }]; - string id = 2 [(validate.rules).string = { + string id = 2 [(buf.validate.field).string = { pattern: "^[-_a-zA-Z0-9]+$", max_bytes: 256 }]; - string relation = 3 [(validate.rules).string = { + string relation = 3 [(buf.validate.field).string = { pattern: "^[-_a-zA-Z0-9]+$", max_bytes: 256 }]; - string user = 4 [(validate.rules).string = { + string user = 4 [(buf.validate.field).string = { pattern: "^[-_a-zA-Z0-9(), ]+$", max_bytes: 512 }]; @@ -122,17 +122,17 @@ message CheckResponse { } message ListObjectsRequest { - string namespace = 1 [(validate.rules).string = { + string namespace = 1 [(buf.validate.field).string = { pattern: "^[-_a-zA-Z0-9]+$", max_bytes: 256 }]; - string relation = 3 [(validate.rules).string = { + string relation = 3 [(buf.validate.field).string = { pattern: "^[-_a-zA-Z0-9]+$", max_bytes: 256 }]; - string user = 4 [(validate.rules).string = { + string user = 4 [(buf.validate.field).string = { pattern: "^[-_a-zA-Z0-9(), ]+$", max_bytes: 512 }];