From 4be36d8ba2984771e0144e800881d403784102a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Egelund-M=C3=BCller?= Date: Wed, 23 Nov 2022 17:33:59 +0100 Subject: [PATCH] Use Buf to generate protos and standardize layout (#1276) * Move proto to root and generate using buf * Update developer docs * Reconfig and regen Orval * Add buf linting * Fix test failures * Fix lint errors not related to analytical APIs * Add details to proto ci * Merge main * Fix yaml errors * Fix yaml error 2 * Restore openapi error types * Restore error types * Fix orval generation rules * Fix prettier --- .github/workflows/proto-check.yml | 14 + CONTRIBUTING.md | 3 +- Makefile | 7 +- cli/cmd/start/start.go | 8 +- proto/README.md | 33 + proto/buf.gen.yaml | 30 + proto/buf.lock | 11 + proto/buf.yaml | 11 + .../gen/rill/runtime/v1/api.pb.go | 6321 +++++++---------- .../gen/rill/runtime/v1/api.pb.gw.go | 1073 ++- .../gen/rill/runtime/v1/api_grpc.pb.go | 48 +- proto/gen/rill/runtime/v1/catalog.pb.go | 788 ++ .../gen/rill/runtime/v1/runtime.swagger.yaml | 2454 +++++++ proto/gen/rill/runtime/v1/schema.pb.go | 574 ++ .../rill/runtime/v1/api.proto | 166 +- proto/rill/runtime/v1/catalog.proto | 83 + proto/rill/runtime/v1/schema.proto | 59 + runtime/Makefile | 13 - runtime/README.md | 24 +- runtime/api/README.md | 23 - runtime/api/generate.go | 3 - runtime/api/google/api/annotations.proto | 31 - runtime/api/google/api/field_behavior.proto | 90 - runtime/api/google/api/http.proto | 375 - runtime/api/google/api/httpbody.proto | 81 - runtime/api/runtime.swagger.json | 3507 --------- runtime/drivers/catalog.go | 4 +- runtime/drivers/catalog_test.go | 8 +- runtime/drivers/druid/druid_test.go | 15 +- runtime/drivers/druid/olap.go | 46 +- runtime/drivers/duckdb/catalog.go | 4 +- runtime/drivers/duckdb/information_schema.go | 78 +- .../drivers/duckdb/information_schema_test.go | 26 +- runtime/drivers/duckdb/olap.go | 10 +- runtime/drivers/olap.go | 6 +- runtime/drivers/sqlite/catalog.go | 4 +- runtime/server/catalog.go | 18 +- runtime/server/catalog_test.go | 6 +- runtime/server/column_api.go | 111 +- runtime/server/column_api_test.go | 35 +- runtime/server/connectors.go | 24 +- runtime/server/instances.go | 24 +- runtime/server/metrics_views.go | 55 +- runtime/server/migrations.go | 42 +- runtime/server/migrations_test.go | 26 +- runtime/server/queries.go | 14 +- runtime/server/repos.go | 46 +- runtime/server/server.go | 22 +- runtime/server/server_test.go | 6 +- runtime/server/table_api_test.go | 13 +- runtime/server/tablewide_api.go | 18 +- runtime/server/timeseries_api.go | 110 +- runtime/server/timeseries_api_test.go | 104 +- .../services/catalog/artifacts/artifacts.go | 10 +- .../catalog/artifacts/artifacts_test.go | 34 +- runtime/services/catalog/artifacts/sql/sql.go | 16 +- .../catalog/artifacts/yaml/objects.go | 22 +- .../services/catalog/artifacts/yaml/yaml.go | 10 +- runtime/services/catalog/catalog.go | 10 +- .../services/catalog/catalog_to_protobuf.go | 28 +- runtime/services/catalog/migrations.go | 44 +- runtime/services/catalog/migrations_test.go | 8 +- .../migrator/metrics_views/metrics_views.go | 24 +- runtime/services/catalog/migrator/migrator.go | 42 +- .../catalog/migrator/models/models.go | 18 +- .../catalog/migrator/sources/sources.go | 18 +- .../services/catalog/protobuf_to_catalog.go | 20 +- .../services/catalog/testutils/testutils.go | 22 +- runtime/sql/sql.go | 52 +- runtime/sql/sql_test.go | 44 +- runtime/tools.go | 12 - runtime/version.go | 3 - web-common/orval.config.ts | 22 +- .../src/runtime-client/gen/index.schemas.ts | 271 +- .../gen/runtime-service/runtime-service.ts | 376 +- 75 files changed, 8089 insertions(+), 9722 deletions(-) create mode 100644 .github/workflows/proto-check.yml create mode 100644 proto/README.md create mode 100644 proto/buf.gen.yaml create mode 100644 proto/buf.lock create mode 100644 proto/buf.yaml rename runtime/api/runtime.pb.go => proto/gen/rill/runtime/v1/api.pb.go (58%) rename runtime/api/runtime.pb.gw.go => proto/gen/rill/runtime/v1/api.pb.gw.go (75%) rename runtime/api/runtime_grpc.pb.go => proto/gen/rill/runtime/v1/api_grpc.pb.go (97%) create mode 100644 proto/gen/rill/runtime/v1/catalog.pb.go create mode 100644 proto/gen/rill/runtime/v1/runtime.swagger.yaml create mode 100644 proto/gen/rill/runtime/v1/schema.pb.go rename runtime/api/runtime.proto => proto/rill/runtime/v1/api.proto (89%) create mode 100644 proto/rill/runtime/v1/catalog.proto create mode 100644 proto/rill/runtime/v1/schema.proto delete mode 100644 runtime/api/README.md delete mode 100644 runtime/api/generate.go delete mode 100644 runtime/api/google/api/annotations.proto delete mode 100644 runtime/api/google/api/field_behavior.proto delete mode 100644 runtime/api/google/api/http.proto delete mode 100644 runtime/api/google/api/httpbody.proto delete mode 100644 runtime/api/runtime.swagger.json delete mode 100644 runtime/tools.go delete mode 100644 runtime/version.go diff --git a/.github/workflows/proto-check.yml b/.github/workflows/proto-check.yml new file mode 100644 index 00000000000..cb2b3534b68 --- /dev/null +++ b/.github/workflows/proto-check.yml @@ -0,0 +1,14 @@ +name: Check .proto files +on: + pull_request: + paths: + - "proto/**" +jobs: + check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: bufbuild/buf-setup-action@v1 + - uses: bufbuild/buf-lint-action@v1 + with: + input: "proto" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 685054daa54..d810abadada 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,7 +10,7 @@ This is a full list of development dependencies: - [Node.js 18](https://nodejs.org/en/) (we recommend installing it with [nvm](https://github.com/nvm-sh/nvm)) - [Go 1.19](https://go.dev) (on macOS, install with `brew install go`) - [GraalVM](https://www.graalvm.org) and [Maven](https://maven.apache.org) for Java (we recommend installing both through [sdkman](https://sdkman.io)) -- [Protocol Buffers](https://grpc.io/docs/protoc-installation/) (`protoc`) (on macOS, install with `brew install protobuf`) +- [Buf](https://buf.build) (Protocol Buffers) (on macOS, install with `brew install bufbuild/buf/buf`) ## Technologies @@ -40,6 +40,7 @@ Here's a guide to the top-level structure of the repository: - `.github` and `.travis.yml` contain CI/CD workflows. We allow both, but the goal is to move fully to Github Actions. - `cli` is an implementation of a new CLI in Go (in progress, not launched yet). - `docs` contains the user-facing documentation that we deploy to [docs.rilldata.com](https://docs.rilldata.com). +- `proto` contains protocol buffer definitions for all Rill components, which notably includes our API interfaces. - `runtime` is our data plane, responsible for querying and orchestrating data infra. It currently supports DuckDB and Druid. - `server-cloud` contains the backend control plane for a multi-user version of Rill (in progress, not launched yet). - `sql` contains our SQL parser and transpiler. It's based on Apache Calcite and is used heavily by the `runtime`. diff --git a/Makefile b/Makefile index 71e073de72e..ea658b6932c 100644 --- a/Makefile +++ b/Makefile @@ -4,4 +4,9 @@ cli: npm run build mkdir -p cli/pkg/web/embed/dist cp -r web-local/build/ cli/pkg/web/embed/dist - go build -o rill cli/main.go \ No newline at end of file + go build -o rill cli/main.go + +.PHONY: proto.generate +proto.generate: + rm -rf proto/gen + cd proto && buf generate diff --git a/cli/cmd/start/start.go b/cli/cmd/start/start.go index 0223e820fe8..339b9035db3 100644 --- a/cli/cmd/start/start.go +++ b/cli/cmd/start/start.go @@ -10,7 +10,7 @@ import ( "github.com/mattn/go-colorable" "github.com/rilldata/rill/cli/pkg/browser" "github.com/rilldata/rill/cli/pkg/web" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" _ "github.com/rilldata/rill/runtime/connectors/gcs" _ "github.com/rilldata/rill/runtime/connectors/https" _ "github.com/rilldata/rill/runtime/connectors/s3" @@ -88,7 +88,7 @@ func StartCmd() *cobra.Command { } // Create instance and repo configured for local use - _, err = server.CreateInstance(context.Background(), &api.CreateInstanceRequest{ + _, err = server.CreateInstance(context.Background(), &runtimev1.CreateInstanceRequest{ InstanceId: localInstanceID, Driver: olapDriver, Dsn: olapDSN, @@ -98,7 +98,7 @@ func StartCmd() *cobra.Command { if err != nil { return err } - _, err = server.CreateRepo(context.Background(), &api.CreateRepoRequest{ + _, err = server.CreateRepo(context.Background(), &runtimev1.CreateRepoRequest{ RepoId: localRepoID, Driver: "file", Dsn: repoDSN, @@ -115,7 +115,7 @@ func StartCmd() *cobra.Command { // Trigger a migration logger.Infof("Hydrating project at '%s'", repoAbs) - res, err := server.Migrate(context.Background(), &api.MigrateRequest{ + res, err := server.Migrate(context.Background(), &runtimev1.MigrateRequest{ InstanceId: localInstanceID, RepoId: localRepoID, }) diff --git a/proto/README.md b/proto/README.md new file mode 100644 index 00000000000..45f6a41e2d1 --- /dev/null +++ b/proto/README.md @@ -0,0 +1,33 @@ +# `proto/` + +This directory contains the protocol buffer definitions for all Rill components. Instead of placing `.proto` files in their respective sub-projects, we follow the convention of having a single `proto` folder to make cross-component imports and codegen easier. + +We use [Buf](https://buf.build) to lint and generate protocol buffers. The layout and style of our `.proto` files follow their [style guide](https://docs.buf.build/best-practices/style-guide). + +## Defining APIs + +We define APIs as gRPC services. All APIs should be defined centrally in this directory, but implemented in their respective sub-package of the monorepo. + +For all APIs, we setup [gRPC-Gateway](https://grpc-ecosystem.github.io/grpc-gateway/) to map the gRPC definitions to a RESTful API. The mapping rules are done inline in the `proto` file, using `google.api.http` annotations ([docs here](https://github.com/googleapis/googleapis/blob/master/google/api/http.proto#L44)). + +Using protocol buffers to define dual RPC and REST interfaces is a technique widely used at Google. We suggest taking a look at their excellent [API design guide](https://cloud.google.com/apis/design/resources), which describes this pattern (notice it's multiple pages). + +## Generating + +After changing a `.proto` file, you should re-generate the bindings: + +1. Install Buf if you haven't already ([docs](https://docs.buf.build/installation)) +2. From the repo root, run: +```bash +make proto.generate +``` + +### Typescript runtime client + +We separately have a generated TypeScript client for the runtime in `web-common/src/runtime-client`. If relevant, you can re-generate it by running: + +```bash +npm run generate:runtime-client -w web-common +``` + +(This is not automated as the frontend may currently be pinned to an older version of the runtime.) diff --git a/proto/buf.gen.yaml b/proto/buf.gen.yaml new file mode 100644 index 00000000000..54aa789826c --- /dev/null +++ b/proto/buf.gen.yaml @@ -0,0 +1,30 @@ +version: v1 +managed: + enabled: true + go_package_prefix: + default: github.com/rilldata/rill + except: + - buf.build/googleapis/googleapis +plugins: + - remote: buf.build/protocolbuffers/plugins/go:v1.28.1-1 + out: gen + opt: + - paths=source_relative + - remote: buf.build/grpc/plugins/go:v1.2.0-1 + out: gen + opt: + - paths=source_relative + - remote: buf.build/grpc-ecosystem/plugins/grpc-gateway:v2.13.0-1 + out: gen + opt: + - paths=source_relative + - logtostderr=true + - generate_unbound_methods=true + - remote: buf.build/grpc-ecosystem/plugins/openapiv2:v2.13.0-1 + out: gen + opt: + - logtostderr=true + - allow_merge=true,merge_file_name=rill/runtime/v1/runtime + - output_format=yaml + # - openapi_naming_strategy=simple # Removes "V1" prefix from types + # - simple_operation_ids=true # Removes "RuntimeService_" prefix from operations diff --git a/proto/buf.lock b/proto/buf.lock new file mode 100644 index 00000000000..656b82fa2db --- /dev/null +++ b/proto/buf.lock @@ -0,0 +1,11 @@ +# Generated by buf. DO NOT EDIT. +version: v1 +deps: + - remote: buf.build + owner: googleapis + repository: googleapis + commit: 5abafbf55b5c4c07ad5fb06d2599560f + - remote: buf.build + owner: grpc-ecosystem + repository: grpc-gateway + commit: b98ae2f8ce63452e97e6bae65c5add1b diff --git a/proto/buf.yaml b/proto/buf.yaml new file mode 100644 index 00000000000..2222f83fab1 --- /dev/null +++ b/proto/buf.yaml @@ -0,0 +1,11 @@ +version: v1 +name: buf.build/rilldata/rill +lint: + use: + - DEFAULT +breaking: + use: + - FILE +deps: + - buf.build/googleapis/googleapis + - buf.build/grpc-ecosystem/grpc-gateway diff --git a/runtime/api/runtime.pb.go b/proto/gen/rill/runtime/v1/api.pb.go similarity index 58% rename from runtime/api/runtime.pb.go rename to proto/gen/rill/runtime/v1/api.pb.go index e083f78c9cd..02e81412e46 100644 --- a/runtime/api/runtime.pb.go +++ b/proto/gen/rill/runtime/v1/api.pb.go @@ -1,10 +1,10 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 -// protoc v3.21.9 -// source: runtime.proto +// protoc (unknown) +// source: rill/runtime/v1/api.proto -package api +package runtimev1 import ( _ "google.golang.org/genproto/googleapis/api/annotations" @@ -74,11 +74,11 @@ func (x TimeGrain) String() string { } func (TimeGrain) Descriptor() protoreflect.EnumDescriptor { - return file_runtime_proto_enumTypes[0].Descriptor() + return file_rill_runtime_v1_api_proto_enumTypes[0].Descriptor() } func (TimeGrain) Type() protoreflect.EnumType { - return &file_runtime_proto_enumTypes[0] + return &file_rill_runtime_v1_api_proto_enumTypes[0] } func (x TimeGrain) Number() protoreflect.EnumNumber { @@ -87,7 +87,7 @@ func (x TimeGrain) Number() protoreflect.EnumNumber { // Deprecated: Use TimeGrain.Descriptor instead. func (TimeGrain) EnumDescriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{0} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{0} } type TimeRangeName int32 @@ -147,11 +147,11 @@ func (x TimeRangeName) String() string { } func (TimeRangeName) Descriptor() protoreflect.EnumDescriptor { - return file_runtime_proto_enumTypes[1].Descriptor() + return file_rill_runtime_v1_api_proto_enumTypes[1].Descriptor() } func (TimeRangeName) Type() protoreflect.EnumType { - return &file_runtime_proto_enumTypes[1] + return &file_rill_runtime_v1_api_proto_enumTypes[1] } func (x TimeRangeName) Number() protoreflect.EnumNumber { @@ -160,7 +160,7 @@ func (x TimeRangeName) Number() protoreflect.EnumNumber { // Deprecated: Use TimeRangeName.Descriptor instead. func (TimeRangeName) EnumDescriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{1} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{1} } type DatabaseObjectType int32 @@ -199,11 +199,11 @@ func (x DatabaseObjectType) String() string { } func (DatabaseObjectType) Descriptor() protoreflect.EnumDescriptor { - return file_runtime_proto_enumTypes[2].Descriptor() + return file_rill_runtime_v1_api_proto_enumTypes[2].Descriptor() } func (DatabaseObjectType) Type() protoreflect.EnumType { - return &file_runtime_proto_enumTypes[2] + return &file_rill_runtime_v1_api_proto_enumTypes[2] } func (x DatabaseObjectType) Number() protoreflect.EnumNumber { @@ -212,7 +212,7 @@ func (x DatabaseObjectType) Number() protoreflect.EnumNumber { // Deprecated: Use DatabaseObjectType.Descriptor instead. func (DatabaseObjectType) EnumDescriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{2} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{2} } type CatalogObject_Type int32 @@ -254,11 +254,11 @@ func (x CatalogObject_Type) String() string { } func (CatalogObject_Type) Descriptor() protoreflect.EnumDescriptor { - return file_runtime_proto_enumTypes[3].Descriptor() + return file_rill_runtime_v1_api_proto_enumTypes[3].Descriptor() } func (CatalogObject_Type) Type() protoreflect.EnumType { - return &file_runtime_proto_enumTypes[3] + return &file_rill_runtime_v1_api_proto_enumTypes[3] } func (x CatalogObject_Type) Number() protoreflect.EnumNumber { @@ -267,54 +267,7 @@ func (x CatalogObject_Type) Number() protoreflect.EnumNumber { // Deprecated: Use CatalogObject_Type.Descriptor instead. func (CatalogObject_Type) EnumDescriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{30, 0} -} - -// Dialects supported for models -type Model_Dialect int32 - -const ( - Model_DIALECT_UNSPECIFIED Model_Dialect = 0 - Model_DIALECT_DUCKDB Model_Dialect = 1 -) - -// Enum value maps for Model_Dialect. -var ( - Model_Dialect_name = map[int32]string{ - 0: "DIALECT_UNSPECIFIED", - 1: "DIALECT_DUCKDB", - } - Model_Dialect_value = map[string]int32{ - "DIALECT_UNSPECIFIED": 0, - "DIALECT_DUCKDB": 1, - } -) - -func (x Model_Dialect) Enum() *Model_Dialect { - p := new(Model_Dialect) - *p = x - return p -} - -func (x Model_Dialect) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Model_Dialect) Descriptor() protoreflect.EnumDescriptor { - return file_runtime_proto_enumTypes[4].Descriptor() -} - -func (Model_Dialect) Type() protoreflect.EnumType { - return &file_runtime_proto_enumTypes[4] -} - -func (x Model_Dialect) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use Model_Dialect.Descriptor instead. -func (Model_Dialect) EnumDescriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{33, 0} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{30, 0} } // Code represents different categories of migration errors @@ -366,11 +319,11 @@ func (x MigrationError_Code) String() string { } func (MigrationError_Code) Descriptor() protoreflect.EnumDescriptor { - return file_runtime_proto_enumTypes[5].Descriptor() + return file_rill_runtime_v1_api_proto_enumTypes[4].Descriptor() } func (MigrationError_Code) Type() protoreflect.EnumType { - return &file_runtime_proto_enumTypes[5] + return &file_rill_runtime_v1_api_proto_enumTypes[4] } func (x MigrationError_Code) Number() protoreflect.EnumNumber { @@ -379,7 +332,7 @@ func (x MigrationError_Code) Number() protoreflect.EnumNumber { // Deprecated: Use MigrationError_Code.Descriptor instead. func (MigrationError_Code) EnumDescriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{45, 0} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{41, 0} } // Type represents the field type @@ -422,11 +375,11 @@ func (x Connector_Property_Type) String() string { } func (Connector_Property_Type) Descriptor() protoreflect.EnumDescriptor { - return file_runtime_proto_enumTypes[6].Descriptor() + return file_rill_runtime_v1_api_proto_enumTypes[5].Descriptor() } func (Connector_Property_Type) Type() protoreflect.EnumType { - return &file_runtime_proto_enumTypes[6] + return &file_rill_runtime_v1_api_proto_enumTypes[5] } func (x Connector_Property_Type) Number() protoreflect.EnumNumber { @@ -435,123 +388,7 @@ func (x Connector_Property_Type) Number() protoreflect.EnumNumber { // Deprecated: Use Connector_Property_Type.Descriptor instead. func (Connector_Property_Type) EnumDescriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{114, 0, 0} -} - -// Code enumerates all the types that can be represented in a schema -type Type_Code int32 - -const ( - Type_CODE_UNSPECIFIED Type_Code = 0 - Type_CODE_BOOL Type_Code = 1 - Type_CODE_INT8 Type_Code = 2 - Type_CODE_INT16 Type_Code = 3 - Type_CODE_INT32 Type_Code = 4 - Type_CODE_INT64 Type_Code = 5 - Type_CODE_INT128 Type_Code = 6 - Type_CODE_UINT8 Type_Code = 7 - Type_CODE_UINT16 Type_Code = 8 - Type_CODE_UINT32 Type_Code = 9 - Type_CODE_UINT64 Type_Code = 10 - Type_CODE_UINT128 Type_Code = 11 - Type_CODE_FLOAT32 Type_Code = 12 - Type_CODE_FLOAT64 Type_Code = 13 - Type_CODE_TIMESTAMP Type_Code = 14 - Type_CODE_DATE Type_Code = 15 - Type_CODE_TIME Type_Code = 16 - Type_CODE_STRING Type_Code = 17 - Type_CODE_BYTES Type_Code = 18 - Type_CODE_ARRAY Type_Code = 19 - Type_CODE_STRUCT Type_Code = 20 - Type_CODE_MAP Type_Code = 21 - Type_CODE_DECIMAL Type_Code = 22 - Type_CODE_JSON Type_Code = 23 - Type_CODE_UUID Type_Code = 24 -) - -// Enum value maps for Type_Code. -var ( - Type_Code_name = map[int32]string{ - 0: "CODE_UNSPECIFIED", - 1: "CODE_BOOL", - 2: "CODE_INT8", - 3: "CODE_INT16", - 4: "CODE_INT32", - 5: "CODE_INT64", - 6: "CODE_INT128", - 7: "CODE_UINT8", - 8: "CODE_UINT16", - 9: "CODE_UINT32", - 10: "CODE_UINT64", - 11: "CODE_UINT128", - 12: "CODE_FLOAT32", - 13: "CODE_FLOAT64", - 14: "CODE_TIMESTAMP", - 15: "CODE_DATE", - 16: "CODE_TIME", - 17: "CODE_STRING", - 18: "CODE_BYTES", - 19: "CODE_ARRAY", - 20: "CODE_STRUCT", - 21: "CODE_MAP", - 22: "CODE_DECIMAL", - 23: "CODE_JSON", - 24: "CODE_UUID", - } - Type_Code_value = map[string]int32{ - "CODE_UNSPECIFIED": 0, - "CODE_BOOL": 1, - "CODE_INT8": 2, - "CODE_INT16": 3, - "CODE_INT32": 4, - "CODE_INT64": 5, - "CODE_INT128": 6, - "CODE_UINT8": 7, - "CODE_UINT16": 8, - "CODE_UINT32": 9, - "CODE_UINT64": 10, - "CODE_UINT128": 11, - "CODE_FLOAT32": 12, - "CODE_FLOAT64": 13, - "CODE_TIMESTAMP": 14, - "CODE_DATE": 15, - "CODE_TIME": 16, - "CODE_STRING": 17, - "CODE_BYTES": 18, - "CODE_ARRAY": 19, - "CODE_STRUCT": 20, - "CODE_MAP": 21, - "CODE_DECIMAL": 22, - "CODE_JSON": 23, - "CODE_UUID": 24, - } -) - -func (x Type_Code) Enum() *Type_Code { - p := new(Type_Code) - *p = x - return p -} - -func (x Type_Code) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Type_Code) Descriptor() protoreflect.EnumDescriptor { - return file_runtime_proto_enumTypes[7].Descriptor() -} - -func (Type_Code) Type() protoreflect.EnumType { - return &file_runtime_proto_enumTypes[7] -} - -func (x Type_Code) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use Type_Code.Descriptor instead. -func (Type_Code) EnumDescriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{117, 0} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{108, 0, 0} } // Request message for RuntimeService.Ping @@ -564,7 +401,7 @@ type PingRequest struct { func (x *PingRequest) Reset() { *x = PingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[0] + mi := &file_rill_runtime_v1_api_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -577,7 +414,7 @@ func (x *PingRequest) String() string { func (*PingRequest) ProtoMessage() {} func (x *PingRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[0] + mi := &file_rill_runtime_v1_api_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -590,7 +427,7 @@ func (x *PingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PingRequest.ProtoReflect.Descriptor instead. func (*PingRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{0} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{0} } // Response message for RuntimeService.Ping @@ -608,7 +445,7 @@ type PingResponse struct { func (x *PingResponse) Reset() { *x = PingResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[1] + mi := &file_rill_runtime_v1_api_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -621,7 +458,7 @@ func (x *PingResponse) String() string { func (*PingResponse) ProtoMessage() {} func (x *PingResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[1] + mi := &file_rill_runtime_v1_api_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -634,7 +471,7 @@ func (x *PingResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PingResponse.ProtoReflect.Descriptor instead. func (*PingResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{1} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{1} } func (x *PingResponse) GetVersion() string { @@ -670,7 +507,7 @@ type Repo struct { func (x *Repo) Reset() { *x = Repo{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[2] + mi := &file_rill_runtime_v1_api_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -683,7 +520,7 @@ func (x *Repo) String() string { func (*Repo) ProtoMessage() {} func (x *Repo) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[2] + mi := &file_rill_runtime_v1_api_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -696,7 +533,7 @@ func (x *Repo) ProtoReflect() protoreflect.Message { // Deprecated: Use Repo.ProtoReflect.Descriptor instead. func (*Repo) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{2} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{2} } func (x *Repo) GetRepoId() string { @@ -733,7 +570,7 @@ type ListReposRequest struct { func (x *ListReposRequest) Reset() { *x = ListReposRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[3] + mi := &file_rill_runtime_v1_api_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -746,7 +583,7 @@ func (x *ListReposRequest) String() string { func (*ListReposRequest) ProtoMessage() {} func (x *ListReposRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[3] + mi := &file_rill_runtime_v1_api_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -759,7 +596,7 @@ func (x *ListReposRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListReposRequest.ProtoReflect.Descriptor instead. func (*ListReposRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{3} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{3} } func (x *ListReposRequest) GetPageSize() int32 { @@ -789,7 +626,7 @@ type ListReposResponse struct { func (x *ListReposResponse) Reset() { *x = ListReposResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[4] + mi := &file_rill_runtime_v1_api_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -802,7 +639,7 @@ func (x *ListReposResponse) String() string { func (*ListReposResponse) ProtoMessage() {} func (x *ListReposResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[4] + mi := &file_rill_runtime_v1_api_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -815,7 +652,7 @@ func (x *ListReposResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListReposResponse.ProtoReflect.Descriptor instead. func (*ListReposResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{4} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{4} } func (x *ListReposResponse) GetRepos() []*Repo { @@ -844,7 +681,7 @@ type GetRepoRequest struct { func (x *GetRepoRequest) Reset() { *x = GetRepoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[5] + mi := &file_rill_runtime_v1_api_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -857,7 +694,7 @@ func (x *GetRepoRequest) String() string { func (*GetRepoRequest) ProtoMessage() {} func (x *GetRepoRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[5] + mi := &file_rill_runtime_v1_api_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -870,7 +707,7 @@ func (x *GetRepoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRepoRequest.ProtoReflect.Descriptor instead. func (*GetRepoRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{5} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{5} } func (x *GetRepoRequest) GetRepoId() string { @@ -892,7 +729,7 @@ type GetRepoResponse struct { func (x *GetRepoResponse) Reset() { *x = GetRepoResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[6] + mi := &file_rill_runtime_v1_api_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -905,7 +742,7 @@ func (x *GetRepoResponse) String() string { func (*GetRepoResponse) ProtoMessage() {} func (x *GetRepoResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[6] + mi := &file_rill_runtime_v1_api_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -918,7 +755,7 @@ func (x *GetRepoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRepoResponse.ProtoReflect.Descriptor instead. func (*GetRepoResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{6} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{6} } func (x *GetRepoResponse) GetRepo() *Repo { @@ -942,7 +779,7 @@ type CreateRepoRequest struct { func (x *CreateRepoRequest) Reset() { *x = CreateRepoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[7] + mi := &file_rill_runtime_v1_api_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -955,7 +792,7 @@ func (x *CreateRepoRequest) String() string { func (*CreateRepoRequest) ProtoMessage() {} func (x *CreateRepoRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[7] + mi := &file_rill_runtime_v1_api_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -968,7 +805,7 @@ func (x *CreateRepoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRepoRequest.ProtoReflect.Descriptor instead. func (*CreateRepoRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{7} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{7} } func (x *CreateRepoRequest) GetRepoId() string { @@ -1004,7 +841,7 @@ type CreateRepoResponse struct { func (x *CreateRepoResponse) Reset() { *x = CreateRepoResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[8] + mi := &file_rill_runtime_v1_api_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1017,7 +854,7 @@ func (x *CreateRepoResponse) String() string { func (*CreateRepoResponse) ProtoMessage() {} func (x *CreateRepoResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[8] + mi := &file_rill_runtime_v1_api_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1030,7 +867,7 @@ func (x *CreateRepoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRepoResponse.ProtoReflect.Descriptor instead. func (*CreateRepoResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{8} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{8} } func (x *CreateRepoResponse) GetRepo() *Repo { @@ -1052,7 +889,7 @@ type DeleteRepoRequest struct { func (x *DeleteRepoRequest) Reset() { *x = DeleteRepoRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[9] + mi := &file_rill_runtime_v1_api_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1065,7 +902,7 @@ func (x *DeleteRepoRequest) String() string { func (*DeleteRepoRequest) ProtoMessage() {} func (x *DeleteRepoRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[9] + mi := &file_rill_runtime_v1_api_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1078,7 +915,7 @@ func (x *DeleteRepoRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteRepoRequest.ProtoReflect.Descriptor instead. func (*DeleteRepoRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{9} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{9} } func (x *DeleteRepoRequest) GetRepoId() string { @@ -1098,7 +935,7 @@ type DeleteRepoResponse struct { func (x *DeleteRepoResponse) Reset() { *x = DeleteRepoResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[10] + mi := &file_rill_runtime_v1_api_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1111,7 +948,7 @@ func (x *DeleteRepoResponse) String() string { func (*DeleteRepoResponse) ProtoMessage() {} func (x *DeleteRepoResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[10] + mi := &file_rill_runtime_v1_api_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1124,7 +961,7 @@ func (x *DeleteRepoResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteRepoResponse.ProtoReflect.Descriptor instead. func (*DeleteRepoResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{10} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{10} } // Request message for RuntimeService.ListFiles @@ -1140,7 +977,7 @@ type ListFilesRequest struct { func (x *ListFilesRequest) Reset() { *x = ListFilesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[11] + mi := &file_rill_runtime_v1_api_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1153,7 +990,7 @@ func (x *ListFilesRequest) String() string { func (*ListFilesRequest) ProtoMessage() {} func (x *ListFilesRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[11] + mi := &file_rill_runtime_v1_api_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1166,7 +1003,7 @@ func (x *ListFilesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListFilesRequest.ProtoReflect.Descriptor instead. func (*ListFilesRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{11} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{11} } func (x *ListFilesRequest) GetRepoId() string { @@ -1195,7 +1032,7 @@ type ListFilesResponse struct { func (x *ListFilesResponse) Reset() { *x = ListFilesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[12] + mi := &file_rill_runtime_v1_api_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1208,7 +1045,7 @@ func (x *ListFilesResponse) String() string { func (*ListFilesResponse) ProtoMessage() {} func (x *ListFilesResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[12] + mi := &file_rill_runtime_v1_api_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1221,7 +1058,7 @@ func (x *ListFilesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListFilesResponse.ProtoReflect.Descriptor instead. func (*ListFilesResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{12} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{12} } func (x *ListFilesResponse) GetPaths() []string { @@ -1244,7 +1081,7 @@ type GetFileRequest struct { func (x *GetFileRequest) Reset() { *x = GetFileRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[13] + mi := &file_rill_runtime_v1_api_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1257,7 +1094,7 @@ func (x *GetFileRequest) String() string { func (*GetFileRequest) ProtoMessage() {} func (x *GetFileRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[13] + mi := &file_rill_runtime_v1_api_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1270,7 +1107,7 @@ func (x *GetFileRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFileRequest.ProtoReflect.Descriptor instead. func (*GetFileRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{13} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{13} } func (x *GetFileRequest) GetRepoId() string { @@ -1300,7 +1137,7 @@ type GetFileResponse struct { func (x *GetFileResponse) Reset() { *x = GetFileResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[14] + mi := &file_rill_runtime_v1_api_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1313,7 +1150,7 @@ func (x *GetFileResponse) String() string { func (*GetFileResponse) ProtoMessage() {} func (x *GetFileResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[14] + mi := &file_rill_runtime_v1_api_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1326,7 +1163,7 @@ func (x *GetFileResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetFileResponse.ProtoReflect.Descriptor instead. func (*GetFileResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{14} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{14} } func (x *GetFileResponse) GetBlob() string { @@ -1362,7 +1199,7 @@ type PutFileRequest struct { func (x *PutFileRequest) Reset() { *x = PutFileRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[15] + mi := &file_rill_runtime_v1_api_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1375,7 +1212,7 @@ func (x *PutFileRequest) String() string { func (*PutFileRequest) ProtoMessage() {} func (x *PutFileRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[15] + mi := &file_rill_runtime_v1_api_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1388,7 +1225,7 @@ func (x *PutFileRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PutFileRequest.ProtoReflect.Descriptor instead. func (*PutFileRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{15} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{15} } func (x *PutFileRequest) GetRepoId() string { @@ -1438,7 +1275,7 @@ type PutFileResponse struct { func (x *PutFileResponse) Reset() { *x = PutFileResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[16] + mi := &file_rill_runtime_v1_api_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1451,7 +1288,7 @@ func (x *PutFileResponse) String() string { func (*PutFileResponse) ProtoMessage() {} func (x *PutFileResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[16] + mi := &file_rill_runtime_v1_api_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1464,7 +1301,7 @@ func (x *PutFileResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PutFileResponse.ProtoReflect.Descriptor instead. func (*PutFileResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{16} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{16} } func (x *PutFileResponse) GetFilePath() string { @@ -1487,7 +1324,7 @@ type DeleteFileRequest struct { func (x *DeleteFileRequest) Reset() { *x = DeleteFileRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[17] + mi := &file_rill_runtime_v1_api_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1500,7 +1337,7 @@ func (x *DeleteFileRequest) String() string { func (*DeleteFileRequest) ProtoMessage() {} func (x *DeleteFileRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[17] + mi := &file_rill_runtime_v1_api_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1513,7 +1350,7 @@ func (x *DeleteFileRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteFileRequest.ProtoReflect.Descriptor instead. func (*DeleteFileRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{17} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{17} } func (x *DeleteFileRequest) GetRepoId() string { @@ -1540,7 +1377,7 @@ type DeleteFileResponse struct { func (x *DeleteFileResponse) Reset() { *x = DeleteFileResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[18] + mi := &file_rill_runtime_v1_api_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1553,7 +1390,7 @@ func (x *DeleteFileResponse) String() string { func (*DeleteFileResponse) ProtoMessage() {} func (x *DeleteFileResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[18] + mi := &file_rill_runtime_v1_api_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1566,7 +1403,7 @@ func (x *DeleteFileResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteFileResponse.ProtoReflect.Descriptor instead. func (*DeleteFileResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{18} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{18} } // Request message for RuntimeService.RenameFile @@ -1583,7 +1420,7 @@ type RenameFileRequest struct { func (x *RenameFileRequest) Reset() { *x = RenameFileRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[19] + mi := &file_rill_runtime_v1_api_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1596,7 +1433,7 @@ func (x *RenameFileRequest) String() string { func (*RenameFileRequest) ProtoMessage() {} func (x *RenameFileRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[19] + mi := &file_rill_runtime_v1_api_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1609,7 +1446,7 @@ func (x *RenameFileRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RenameFileRequest.ProtoReflect.Descriptor instead. func (*RenameFileRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{19} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{19} } func (x *RenameFileRequest) GetRepoId() string { @@ -1643,7 +1480,7 @@ type RenameFileResponse struct { func (x *RenameFileResponse) Reset() { *x = RenameFileResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[20] + mi := &file_rill_runtime_v1_api_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1656,7 +1493,7 @@ func (x *RenameFileResponse) String() string { func (*RenameFileResponse) ProtoMessage() {} func (x *RenameFileResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[20] + mi := &file_rill_runtime_v1_api_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1669,7 +1506,7 @@ func (x *RenameFileResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RenameFileResponse.ProtoReflect.Descriptor instead. func (*RenameFileResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{20} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{20} } // Instance represents one connection to an OLAP datastore (such as DuckDB or Druid). @@ -1703,7 +1540,7 @@ type Instance struct { func (x *Instance) Reset() { *x = Instance{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[21] + mi := &file_rill_runtime_v1_api_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1716,7 +1553,7 @@ func (x *Instance) String() string { func (*Instance) ProtoMessage() {} func (x *Instance) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[21] + mi := &file_rill_runtime_v1_api_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1729,7 +1566,7 @@ func (x *Instance) ProtoReflect() protoreflect.Message { // Deprecated: Use Instance.ProtoReflect.Descriptor instead. func (*Instance) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{21} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{21} } func (x *Instance) GetInstanceId() string { @@ -1787,7 +1624,7 @@ type ListInstancesRequest struct { func (x *ListInstancesRequest) Reset() { *x = ListInstancesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[22] + mi := &file_rill_runtime_v1_api_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1800,7 +1637,7 @@ func (x *ListInstancesRequest) String() string { func (*ListInstancesRequest) ProtoMessage() {} func (x *ListInstancesRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[22] + mi := &file_rill_runtime_v1_api_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1813,7 +1650,7 @@ func (x *ListInstancesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListInstancesRequest.ProtoReflect.Descriptor instead. func (*ListInstancesRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{22} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{22} } func (x *ListInstancesRequest) GetPageSize() int32 { @@ -1843,7 +1680,7 @@ type ListInstancesResponse struct { func (x *ListInstancesResponse) Reset() { *x = ListInstancesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[23] + mi := &file_rill_runtime_v1_api_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1856,7 +1693,7 @@ func (x *ListInstancesResponse) String() string { func (*ListInstancesResponse) ProtoMessage() {} func (x *ListInstancesResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[23] + mi := &file_rill_runtime_v1_api_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1869,7 +1706,7 @@ func (x *ListInstancesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListInstancesResponse.ProtoReflect.Descriptor instead. func (*ListInstancesResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{23} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{23} } func (x *ListInstancesResponse) GetInstances() []*Instance { @@ -1898,7 +1735,7 @@ type GetInstanceRequest struct { func (x *GetInstanceRequest) Reset() { *x = GetInstanceRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[24] + mi := &file_rill_runtime_v1_api_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1911,7 +1748,7 @@ func (x *GetInstanceRequest) String() string { func (*GetInstanceRequest) ProtoMessage() {} func (x *GetInstanceRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[24] + mi := &file_rill_runtime_v1_api_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1924,7 +1761,7 @@ func (x *GetInstanceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetInstanceRequest.ProtoReflect.Descriptor instead. func (*GetInstanceRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{24} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{24} } func (x *GetInstanceRequest) GetInstanceId() string { @@ -1946,7 +1783,7 @@ type GetInstanceResponse struct { func (x *GetInstanceResponse) Reset() { *x = GetInstanceResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[25] + mi := &file_rill_runtime_v1_api_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1959,7 +1796,7 @@ func (x *GetInstanceResponse) String() string { func (*GetInstanceResponse) ProtoMessage() {} func (x *GetInstanceResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[25] + mi := &file_rill_runtime_v1_api_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1972,7 +1809,7 @@ func (x *GetInstanceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetInstanceResponse.ProtoReflect.Descriptor instead. func (*GetInstanceResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{25} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{25} } func (x *GetInstanceResponse) GetInstance() *Instance { @@ -2000,7 +1837,7 @@ type CreateInstanceRequest struct { func (x *CreateInstanceRequest) Reset() { *x = CreateInstanceRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[26] + mi := &file_rill_runtime_v1_api_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2013,7 +1850,7 @@ func (x *CreateInstanceRequest) String() string { func (*CreateInstanceRequest) ProtoMessage() {} func (x *CreateInstanceRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[26] + mi := &file_rill_runtime_v1_api_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2026,7 +1863,7 @@ func (x *CreateInstanceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateInstanceRequest.ProtoReflect.Descriptor instead. func (*CreateInstanceRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{26} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{26} } func (x *CreateInstanceRequest) GetInstanceId() string { @@ -2084,7 +1921,7 @@ type CreateInstanceResponse struct { func (x *CreateInstanceResponse) Reset() { *x = CreateInstanceResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[27] + mi := &file_rill_runtime_v1_api_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2097,7 +1934,7 @@ func (x *CreateInstanceResponse) String() string { func (*CreateInstanceResponse) ProtoMessage() {} func (x *CreateInstanceResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[27] + mi := &file_rill_runtime_v1_api_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2110,7 +1947,7 @@ func (x *CreateInstanceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateInstanceResponse.ProtoReflect.Descriptor instead. func (*CreateInstanceResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{27} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{27} } func (x *CreateInstanceResponse) GetInstanceId() string { @@ -2139,7 +1976,7 @@ type DeleteInstanceRequest struct { func (x *DeleteInstanceRequest) Reset() { *x = DeleteInstanceRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[28] + mi := &file_rill_runtime_v1_api_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2152,7 +1989,7 @@ func (x *DeleteInstanceRequest) String() string { func (*DeleteInstanceRequest) ProtoMessage() {} func (x *DeleteInstanceRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[28] + mi := &file_rill_runtime_v1_api_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2165,7 +2002,7 @@ func (x *DeleteInstanceRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteInstanceRequest.ProtoReflect.Descriptor instead. func (*DeleteInstanceRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{28} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{28} } func (x *DeleteInstanceRequest) GetInstanceId() string { @@ -2185,7 +2022,7 @@ type DeleteInstanceResponse struct { func (x *DeleteInstanceResponse) Reset() { *x = DeleteInstanceResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[29] + mi := &file_rill_runtime_v1_api_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2198,7 +2035,7 @@ func (x *DeleteInstanceResponse) String() string { func (*DeleteInstanceResponse) ProtoMessage() {} func (x *DeleteInstanceResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[29] + mi := &file_rill_runtime_v1_api_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2211,7 +2048,7 @@ func (x *DeleteInstanceResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteInstanceResponse.ProtoReflect.Descriptor instead. func (*DeleteInstanceResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{29} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{29} } // CatalogObject represents an object stored in the catalog @@ -2235,7 +2072,7 @@ type CatalogObject struct { func (x *CatalogObject) Reset() { *x = CatalogObject{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[30] + mi := &file_rill_runtime_v1_api_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2248,7 +2085,7 @@ func (x *CatalogObject) String() string { func (*CatalogObject) ProtoMessage() {} func (x *CatalogObject) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[30] + mi := &file_rill_runtime_v1_api_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2261,7 +2098,7 @@ func (x *CatalogObject) ProtoReflect() protoreflect.Message { // Deprecated: Use CatalogObject.ProtoReflect.Descriptor instead. func (*CatalogObject) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{30} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{30} } func (x *CatalogObject) GetType() CatalogObject_Type { @@ -2334,40 +2171,33 @@ func (x *CatalogObject) GetRefreshedOn() *timestamppb.Timestamp { return nil } -// Table represents a table in the OLAP database. These include pre-existing tables discovered by periodically -// scanning the database's information schema when the instance is created with exposed=true. Pre-existing tables -// have managed = false. -type Table struct { +// Request message for RuntimeService.ListCatalogObjects +type ListCatalogObjectsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Table name - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Table schema - Schema *StructType `protobuf:"bytes,2,opt,name=schema,proto3" json:"schema,omitempty"` - // Managed is true if the table was created through a runtime migration, false if it was discovered in by - // scanning the database's information schema. - Managed bool `protobuf:"varint,3,opt,name=managed,proto3" json:"managed,omitempty"` + InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` + Type CatalogObject_Type `protobuf:"varint,2,opt,name=type,proto3,enum=rill.runtime.v1.CatalogObject_Type" json:"type,omitempty"` } -func (x *Table) Reset() { - *x = Table{} +func (x *ListCatalogObjectsRequest) Reset() { + *x = ListCatalogObjectsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[31] + mi := &file_rill_runtime_v1_api_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Table) String() string { +func (x *ListCatalogObjectsRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Table) ProtoMessage() {} +func (*ListCatalogObjectsRequest) ProtoMessage() {} -func (x *Table) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[31] +func (x *ListCatalogObjectsRequest) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2378,68 +2208,51 @@ func (x *Table) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Table.ProtoReflect.Descriptor instead. -func (*Table) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{31} +// Deprecated: Use ListCatalogObjectsRequest.ProtoReflect.Descriptor instead. +func (*ListCatalogObjectsRequest) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{31} } -func (x *Table) GetName() string { +func (x *ListCatalogObjectsRequest) GetInstanceId() string { if x != nil { - return x.Name + return x.InstanceId } return "" } -func (x *Table) GetSchema() *StructType { - if x != nil { - return x.Schema - } - return nil -} - -func (x *Table) GetManaged() bool { +func (x *ListCatalogObjectsRequest) GetType() CatalogObject_Type { if x != nil { - return x.Managed + return x.Type } - return false + return CatalogObject_TYPE_UNSPECIFIED } -// Source is the internal representation of a source definition -type Source struct { +// Response message for RuntimeService.ListCatalogObjects +type ListCatalogObjectsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name of the source - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Connector used by the source - Connector string `protobuf:"bytes,2,opt,name=connector,proto3" json:"connector,omitempty"` - // Connector properties assigned in the source - Properties *structpb.Struct `protobuf:"bytes,3,opt,name=properties,proto3" json:"properties,omitempty"` - // Detected schema of the source - Schema *StructType `protobuf:"bytes,5,opt,name=schema,proto3" json:"schema,omitempty"` - // Used for the SQL statement for sources - // TODO: Remove when frontend sources code has been refactored - Sql string `protobuf:"bytes,20,opt,name=sql,proto3" json:"sql,omitempty"` -} - -func (x *Source) Reset() { - *x = Source{} + Objects []*CatalogObject `protobuf:"bytes,1,rep,name=objects,proto3" json:"objects,omitempty"` +} + +func (x *ListCatalogObjectsResponse) Reset() { + *x = ListCatalogObjectsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[32] + mi := &file_rill_runtime_v1_api_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Source) String() string { +func (x *ListCatalogObjectsResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Source) ProtoMessage() {} +func (*ListCatalogObjectsResponse) ProtoMessage() {} -func (x *Source) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[32] +func (x *ListCatalogObjectsResponse) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2450,79 +2263,45 @@ func (x *Source) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Source.ProtoReflect.Descriptor instead. -func (*Source) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{32} -} - -func (x *Source) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Source) GetConnector() string { - if x != nil { - return x.Connector - } - return "" -} - -func (x *Source) GetProperties() *structpb.Struct { - if x != nil { - return x.Properties - } - return nil +// Deprecated: Use ListCatalogObjectsResponse.ProtoReflect.Descriptor instead. +func (*ListCatalogObjectsResponse) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{32} } -func (x *Source) GetSchema() *StructType { +func (x *ListCatalogObjectsResponse) GetObjects() []*CatalogObject { if x != nil { - return x.Schema + return x.Objects } return nil } -func (x *Source) GetSql() string { - if x != nil { - return x.Sql - } - return "" -} - -// Model is the internal representation of a model definition -type Model struct { +// Request message for RuntimeService.GetCatalogObject +type GetCatalogObjectRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name of the model - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // SQL is a SELECT statement representing the model - Sql string `protobuf:"bytes,2,opt,name=sql,proto3" json:"sql,omitempty"` - // Dialect of the SQL statement - Dialect Model_Dialect `protobuf:"varint,3,opt,name=dialect,proto3,enum=rill.runtime.v1.Model_Dialect" json:"dialect,omitempty"` - // Detected schema of the model - Schema *StructType `protobuf:"bytes,4,opt,name=schema,proto3" json:"schema,omitempty"` + InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` } -func (x *Model) Reset() { - *x = Model{} +func (x *GetCatalogObjectRequest) Reset() { + *x = GetCatalogObjectRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[33] + mi := &file_rill_runtime_v1_api_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Model) String() string { +func (x *GetCatalogObjectRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Model) ProtoMessage() {} +func (*GetCatalogObjectRequest) ProtoMessage() {} -func (x *Model) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[33] +func (x *GetCatalogObjectRequest) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2533,77 +2312,51 @@ func (x *Model) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Model.ProtoReflect.Descriptor instead. -func (*Model) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{33} +// Deprecated: Use GetCatalogObjectRequest.ProtoReflect.Descriptor instead. +func (*GetCatalogObjectRequest) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{33} } -func (x *Model) GetName() string { +func (x *GetCatalogObjectRequest) GetInstanceId() string { if x != nil { - return x.Name + return x.InstanceId } return "" } -func (x *Model) GetSql() string { +func (x *GetCatalogObjectRequest) GetName() string { if x != nil { - return x.Sql + return x.Name } return "" } -func (x *Model) GetDialect() Model_Dialect { - if x != nil { - return x.Dialect - } - return Model_DIALECT_UNSPECIFIED -} - -func (x *Model) GetSchema() *StructType { - if x != nil { - return x.Schema - } - return nil -} - -// Metrics view is the internal representation of a metrics view definition -type MetricsView struct { +// Response message for RuntimeService.GetCatalogObject +type GetCatalogObjectResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Name of the metrics view - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Name of the source or model that the metrics view is based on - From string `protobuf:"bytes,2,opt,name=from,proto3" json:"from,omitempty"` - // Name of the primary time dimension, used for rendering time series - TimeDimension string `protobuf:"bytes,3,opt,name=time_dimension,json=timeDimension,proto3" json:"time_dimension,omitempty"` - // Recommended granularities for rolling up the time dimension. - // Should be a valid SQL INTERVAL value. - TimeGrains []string `protobuf:"bytes,4,rep,name=time_grains,json=timeGrains,proto3" json:"time_grains,omitempty"` - // Dimensions in the metrics view - Dimensions []*MetricsView_Dimension `protobuf:"bytes,5,rep,name=dimensions,proto3" json:"dimensions,omitempty"` - // Measures in the metrics view - Measures []*MetricsView_Measure `protobuf:"bytes,6,rep,name=measures,proto3" json:"measures,omitempty"` -} - -func (x *MetricsView) Reset() { - *x = MetricsView{} + Object *CatalogObject `protobuf:"bytes,1,opt,name=object,proto3" json:"object,omitempty"` +} + +func (x *GetCatalogObjectResponse) Reset() { + *x = GetCatalogObjectResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[34] + mi := &file_rill_runtime_v1_api_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MetricsView) String() string { +func (x *GetCatalogObjectResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MetricsView) ProtoMessage() {} +func (*GetCatalogObjectResponse) ProtoMessage() {} -func (x *MetricsView) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[34] +func (x *GetCatalogObjectResponse) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2614,80 +2367,45 @@ func (x *MetricsView) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MetricsView.ProtoReflect.Descriptor instead. -func (*MetricsView) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{34} -} - -func (x *MetricsView) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *MetricsView) GetFrom() string { - if x != nil { - return x.From - } - return "" -} - -func (x *MetricsView) GetTimeDimension() string { - if x != nil { - return x.TimeDimension - } - return "" -} - -func (x *MetricsView) GetTimeGrains() []string { - if x != nil { - return x.TimeGrains - } - return nil -} - -func (x *MetricsView) GetDimensions() []*MetricsView_Dimension { - if x != nil { - return x.Dimensions - } - return nil +// Deprecated: Use GetCatalogObjectResponse.ProtoReflect.Descriptor instead. +func (*GetCatalogObjectResponse) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{34} } -func (x *MetricsView) GetMeasures() []*MetricsView_Measure { +func (x *GetCatalogObjectResponse) GetObject() *CatalogObject { if x != nil { - return x.Measures + return x.Object } return nil } -// Request message for RuntimeService.ListCatalogObjects -type ListCatalogObjectsRequest struct { +// Request message for RuntimeService.TriggerRefresh +type TriggerRefreshRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` - Type CatalogObject_Type `protobuf:"varint,2,opt,name=type,proto3,enum=rill.runtime.v1.CatalogObject_Type" json:"type,omitempty"` + InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` } -func (x *ListCatalogObjectsRequest) Reset() { - *x = ListCatalogObjectsRequest{} +func (x *TriggerRefreshRequest) Reset() { + *x = TriggerRefreshRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[35] + mi := &file_rill_runtime_v1_api_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListCatalogObjectsRequest) String() string { +func (x *TriggerRefreshRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListCatalogObjectsRequest) ProtoMessage() {} +func (*TriggerRefreshRequest) ProtoMessage() {} -func (x *ListCatalogObjectsRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[35] +func (x *TriggerRefreshRequest) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2698,51 +2416,49 @@ func (x *ListCatalogObjectsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListCatalogObjectsRequest.ProtoReflect.Descriptor instead. -func (*ListCatalogObjectsRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{35} +// Deprecated: Use TriggerRefreshRequest.ProtoReflect.Descriptor instead. +func (*TriggerRefreshRequest) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{35} } -func (x *ListCatalogObjectsRequest) GetInstanceId() string { +func (x *TriggerRefreshRequest) GetInstanceId() string { if x != nil { return x.InstanceId } return "" } -func (x *ListCatalogObjectsRequest) GetType() CatalogObject_Type { +func (x *TriggerRefreshRequest) GetName() string { if x != nil { - return x.Type + return x.Name } - return CatalogObject_TYPE_UNSPECIFIED + return "" } -// Response message for RuntimeService.ListCatalogObjects -type ListCatalogObjectsResponse struct { +// Response message for RuntimeService.TriggerRefresh +type TriggerRefreshResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - - Objects []*CatalogObject `protobuf:"bytes,1,rep,name=objects,proto3" json:"objects,omitempty"` } -func (x *ListCatalogObjectsResponse) Reset() { - *x = ListCatalogObjectsResponse{} +func (x *TriggerRefreshResponse) Reset() { + *x = TriggerRefreshResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[36] + mi := &file_rill_runtime_v1_api_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *ListCatalogObjectsResponse) String() string { +func (x *TriggerRefreshResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ListCatalogObjectsResponse) ProtoMessage() {} +func (*TriggerRefreshResponse) ProtoMessage() {} -func (x *ListCatalogObjectsResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[36] +func (x *TriggerRefreshResponse) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2753,243 +2469,37 @@ func (x *ListCatalogObjectsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ListCatalogObjectsResponse.ProtoReflect.Descriptor instead. -func (*ListCatalogObjectsResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{36} -} - -func (x *ListCatalogObjectsResponse) GetObjects() []*CatalogObject { - if x != nil { - return x.Objects - } - return nil +// Deprecated: Use TriggerRefreshResponse.ProtoReflect.Descriptor instead. +func (*TriggerRefreshResponse) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{36} } -// Request message for RuntimeService.GetCatalogObject -type GetCatalogObjectRequest struct { +// Request message for RuntimeService.TriggerSync +type TriggerSyncRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` } -func (x *GetCatalogObjectRequest) Reset() { - *x = GetCatalogObjectRequest{} +func (x *TriggerSyncRequest) Reset() { + *x = TriggerSyncRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[37] + mi := &file_rill_runtime_v1_api_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *GetCatalogObjectRequest) String() string { +func (x *TriggerSyncRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetCatalogObjectRequest) ProtoMessage() {} +func (*TriggerSyncRequest) ProtoMessage() {} -func (x *GetCatalogObjectRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[37] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetCatalogObjectRequest.ProtoReflect.Descriptor instead. -func (*GetCatalogObjectRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{37} -} - -func (x *GetCatalogObjectRequest) GetInstanceId() string { - if x != nil { - return x.InstanceId - } - return "" -} - -func (x *GetCatalogObjectRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -// Response message for RuntimeService.GetCatalogObject -type GetCatalogObjectResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Object *CatalogObject `protobuf:"bytes,1,opt,name=object,proto3" json:"object,omitempty"` -} - -func (x *GetCatalogObjectResponse) Reset() { - *x = GetCatalogObjectResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[38] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetCatalogObjectResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetCatalogObjectResponse) ProtoMessage() {} - -func (x *GetCatalogObjectResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[38] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use GetCatalogObjectResponse.ProtoReflect.Descriptor instead. -func (*GetCatalogObjectResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{38} -} - -func (x *GetCatalogObjectResponse) GetObject() *CatalogObject { - if x != nil { - return x.Object - } - return nil -} - -// Request message for RuntimeService.TriggerRefresh -type TriggerRefreshRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` -} - -func (x *TriggerRefreshRequest) Reset() { - *x = TriggerRefreshRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[39] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *TriggerRefreshRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TriggerRefreshRequest) ProtoMessage() {} - -func (x *TriggerRefreshRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[39] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TriggerRefreshRequest.ProtoReflect.Descriptor instead. -func (*TriggerRefreshRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{39} -} - -func (x *TriggerRefreshRequest) GetInstanceId() string { - if x != nil { - return x.InstanceId - } - return "" -} - -func (x *TriggerRefreshRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -// Response message for RuntimeService.TriggerRefresh -type TriggerRefreshResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *TriggerRefreshResponse) Reset() { - *x = TriggerRefreshResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[40] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *TriggerRefreshResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TriggerRefreshResponse) ProtoMessage() {} - -func (x *TriggerRefreshResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[40] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TriggerRefreshResponse.ProtoReflect.Descriptor instead. -func (*TriggerRefreshResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{40} -} - -// Request message for RuntimeService.TriggerSync -type TriggerSyncRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` -} - -func (x *TriggerSyncRequest) Reset() { - *x = TriggerSyncRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[41] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *TriggerSyncRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TriggerSyncRequest) ProtoMessage() {} - -func (x *TriggerSyncRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[41] +func (x *TriggerSyncRequest) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3002,7 +2512,7 @@ func (x *TriggerSyncRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TriggerSyncRequest.ProtoReflect.Descriptor instead. func (*TriggerSyncRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{41} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{37} } func (x *TriggerSyncRequest) GetInstanceId() string { @@ -3027,7 +2537,7 @@ type TriggerSyncResponse struct { func (x *TriggerSyncResponse) Reset() { *x = TriggerSyncResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[42] + mi := &file_rill_runtime_v1_api_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3040,7 +2550,7 @@ func (x *TriggerSyncResponse) String() string { func (*TriggerSyncResponse) ProtoMessage() {} func (x *TriggerSyncResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[42] + mi := &file_rill_runtime_v1_api_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3053,7 +2563,7 @@ func (x *TriggerSyncResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use TriggerSyncResponse.ProtoReflect.Descriptor instead. func (*TriggerSyncResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{42} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{38} } func (x *TriggerSyncResponse) GetObjectsCount() uint32 { @@ -3108,7 +2618,7 @@ type MigrateRequest struct { func (x *MigrateRequest) Reset() { *x = MigrateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[43] + mi := &file_rill_runtime_v1_api_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3121,7 +2631,7 @@ func (x *MigrateRequest) String() string { func (*MigrateRequest) ProtoMessage() {} func (x *MigrateRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[43] + mi := &file_rill_runtime_v1_api_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3134,7 +2644,7 @@ func (x *MigrateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MigrateRequest.ProtoReflect.Descriptor instead. func (*MigrateRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{43} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{39} } func (x *MigrateRequest) GetInstanceId() string { @@ -3190,7 +2700,7 @@ type MigrateResponse struct { func (x *MigrateResponse) Reset() { *x = MigrateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[44] + mi := &file_rill_runtime_v1_api_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3203,7 +2713,7 @@ func (x *MigrateResponse) String() string { func (*MigrateResponse) ProtoMessage() {} func (x *MigrateResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[44] + mi := &file_rill_runtime_v1_api_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3216,7 +2726,7 @@ func (x *MigrateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MigrateResponse.ProtoReflect.Descriptor instead. func (*MigrateResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{44} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{40} } func (x *MigrateResponse) GetErrors() []*MigrationError { @@ -3261,7 +2771,7 @@ type MigrationError struct { func (x *MigrationError) Reset() { *x = MigrationError{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[45] + mi := &file_rill_runtime_v1_api_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3274,7 +2784,7 @@ func (x *MigrationError) String() string { func (*MigrationError) ProtoMessage() {} func (x *MigrationError) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[45] + mi := &file_rill_runtime_v1_api_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3287,7 +2797,7 @@ func (x *MigrationError) ProtoReflect() protoreflect.Message { // Deprecated: Use MigrationError.ProtoReflect.Descriptor instead. func (*MigrationError) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{45} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{41} } func (x *MigrationError) GetCode() MigrationError_Code { @@ -3354,7 +2864,7 @@ type MigrateSingleRequest struct { func (x *MigrateSingleRequest) Reset() { *x = MigrateSingleRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[46] + mi := &file_rill_runtime_v1_api_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3367,7 +2877,7 @@ func (x *MigrateSingleRequest) String() string { func (*MigrateSingleRequest) ProtoMessage() {} func (x *MigrateSingleRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[46] + mi := &file_rill_runtime_v1_api_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3380,7 +2890,7 @@ func (x *MigrateSingleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MigrateSingleRequest.ProtoReflect.Descriptor instead. func (*MigrateSingleRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{46} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{42} } func (x *MigrateSingleRequest) GetInstanceId() string { @@ -3428,7 +2938,7 @@ type MigrateSingleResponse struct { func (x *MigrateSingleResponse) Reset() { *x = MigrateSingleResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[47] + mi := &file_rill_runtime_v1_api_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3441,7 +2951,7 @@ func (x *MigrateSingleResponse) String() string { func (*MigrateSingleResponse) ProtoMessage() {} func (x *MigrateSingleResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[47] + mi := &file_rill_runtime_v1_api_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3454,7 +2964,7 @@ func (x *MigrateSingleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MigrateSingleResponse.ProtoReflect.Descriptor instead. func (*MigrateSingleResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{47} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{43} } // Request message for RuntimeService.MigrateDelete @@ -3472,7 +2982,7 @@ type MigrateDeleteRequest struct { func (x *MigrateDeleteRequest) Reset() { *x = MigrateDeleteRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[48] + mi := &file_rill_runtime_v1_api_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3485,7 +2995,7 @@ func (x *MigrateDeleteRequest) String() string { func (*MigrateDeleteRequest) ProtoMessage() {} func (x *MigrateDeleteRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[48] + mi := &file_rill_runtime_v1_api_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3498,7 +3008,7 @@ func (x *MigrateDeleteRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MigrateDeleteRequest.ProtoReflect.Descriptor instead. func (*MigrateDeleteRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{48} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{44} } func (x *MigrateDeleteRequest) GetInstanceId() string { @@ -3525,7 +3035,7 @@ type MigrateDeleteResponse struct { func (x *MigrateDeleteResponse) Reset() { *x = MigrateDeleteResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[49] + mi := &file_rill_runtime_v1_api_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3538,7 +3048,7 @@ func (x *MigrateDeleteResponse) String() string { func (*MigrateDeleteResponse) ProtoMessage() {} func (x *MigrateDeleteResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[49] + mi := &file_rill_runtime_v1_api_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3551,7 +3061,7 @@ func (x *MigrateDeleteResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MigrateDeleteResponse.ProtoReflect.Descriptor instead. func (*MigrateDeleteResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{49} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{45} } type PutFileAndMigrateRequest struct { @@ -3583,7 +3093,7 @@ type PutFileAndMigrateRequest struct { func (x *PutFileAndMigrateRequest) Reset() { *x = PutFileAndMigrateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[50] + mi := &file_rill_runtime_v1_api_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3596,7 +3106,7 @@ func (x *PutFileAndMigrateRequest) String() string { func (*PutFileAndMigrateRequest) ProtoMessage() {} func (x *PutFileAndMigrateRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[50] + mi := &file_rill_runtime_v1_api_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3609,7 +3119,7 @@ func (x *PutFileAndMigrateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use PutFileAndMigrateRequest.ProtoReflect.Descriptor instead. func (*PutFileAndMigrateRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{50} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{46} } func (x *PutFileAndMigrateRequest) GetRepoId() string { @@ -3685,7 +3195,7 @@ type PutFileAndMigrateResponse struct { func (x *PutFileAndMigrateResponse) Reset() { *x = PutFileAndMigrateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[51] + mi := &file_rill_runtime_v1_api_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3698,7 +3208,7 @@ func (x *PutFileAndMigrateResponse) String() string { func (*PutFileAndMigrateResponse) ProtoMessage() {} func (x *PutFileAndMigrateResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[51] + mi := &file_rill_runtime_v1_api_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3711,7 +3221,7 @@ func (x *PutFileAndMigrateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use PutFileAndMigrateResponse.ProtoReflect.Descriptor instead. func (*PutFileAndMigrateResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{51} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{47} } func (x *PutFileAndMigrateResponse) GetErrors() []*MigrationError { @@ -3750,7 +3260,7 @@ type DeleteFileAndMigrateRequest struct { func (x *DeleteFileAndMigrateRequest) Reset() { *x = DeleteFileAndMigrateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[52] + mi := &file_rill_runtime_v1_api_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3763,7 +3273,7 @@ func (x *DeleteFileAndMigrateRequest) String() string { func (*DeleteFileAndMigrateRequest) ProtoMessage() {} func (x *DeleteFileAndMigrateRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[52] + mi := &file_rill_runtime_v1_api_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3776,7 +3286,7 @@ func (x *DeleteFileAndMigrateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteFileAndMigrateRequest.ProtoReflect.Descriptor instead. func (*DeleteFileAndMigrateRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{52} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{48} } func (x *DeleteFileAndMigrateRequest) GetRepoId() string { @@ -3831,7 +3341,7 @@ type DeleteFileAndMigrateResponse struct { func (x *DeleteFileAndMigrateResponse) Reset() { *x = DeleteFileAndMigrateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[53] + mi := &file_rill_runtime_v1_api_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3844,7 +3354,7 @@ func (x *DeleteFileAndMigrateResponse) String() string { func (*DeleteFileAndMigrateResponse) ProtoMessage() {} func (x *DeleteFileAndMigrateResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[53] + mi := &file_rill_runtime_v1_api_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3857,7 +3367,7 @@ func (x *DeleteFileAndMigrateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteFileAndMigrateResponse.ProtoReflect.Descriptor instead. func (*DeleteFileAndMigrateResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{53} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{49} } func (x *DeleteFileAndMigrateResponse) GetErrors() []*MigrationError { @@ -3898,7 +3408,7 @@ type RenameFileAndMigrateRequest struct { func (x *RenameFileAndMigrateRequest) Reset() { *x = RenameFileAndMigrateRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[54] + mi := &file_rill_runtime_v1_api_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3911,7 +3421,7 @@ func (x *RenameFileAndMigrateRequest) String() string { func (*RenameFileAndMigrateRequest) ProtoMessage() {} func (x *RenameFileAndMigrateRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[54] + mi := &file_rill_runtime_v1_api_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3924,7 +3434,7 @@ func (x *RenameFileAndMigrateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RenameFileAndMigrateRequest.ProtoReflect.Descriptor instead. func (*RenameFileAndMigrateRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{54} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{50} } func (x *RenameFileAndMigrateRequest) GetRepoId() string { @@ -3986,7 +3496,7 @@ type RenameFileAndMigrateResponse struct { func (x *RenameFileAndMigrateResponse) Reset() { *x = RenameFileAndMigrateResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[55] + mi := &file_rill_runtime_v1_api_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3999,7 +3509,7 @@ func (x *RenameFileAndMigrateResponse) String() string { func (*RenameFileAndMigrateResponse) ProtoMessage() {} func (x *RenameFileAndMigrateResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[55] + mi := &file_rill_runtime_v1_api_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4012,7 +3522,7 @@ func (x *RenameFileAndMigrateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RenameFileAndMigrateResponse.ProtoReflect.Descriptor instead. func (*RenameFileAndMigrateResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{55} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{51} } func (x *RenameFileAndMigrateResponse) GetErrors() []*MigrationError { @@ -4050,7 +3560,7 @@ type QueryRequest struct { func (x *QueryRequest) Reset() { *x = QueryRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[56] + mi := &file_rill_runtime_v1_api_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4063,7 +3573,7 @@ func (x *QueryRequest) String() string { func (*QueryRequest) ProtoMessage() {} func (x *QueryRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[56] + mi := &file_rill_runtime_v1_api_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4076,7 +3586,7 @@ func (x *QueryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryRequest.ProtoReflect.Descriptor instead. func (*QueryRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{56} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{52} } func (x *QueryRequest) GetInstanceId() string { @@ -4129,7 +3639,7 @@ type QueryResponse struct { func (x *QueryResponse) Reset() { *x = QueryResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[57] + mi := &file_rill_runtime_v1_api_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4142,7 +3652,7 @@ func (x *QueryResponse) String() string { func (*QueryResponse) ProtoMessage() {} func (x *QueryResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[57] + mi := &file_rill_runtime_v1_api_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4155,7 +3665,7 @@ func (x *QueryResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryResponse.ProtoReflect.Descriptor instead. func (*QueryResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{57} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{53} } func (x *QueryResponse) GetMeta() *StructType { @@ -4193,7 +3703,7 @@ type QueryDirectRequest struct { func (x *QueryDirectRequest) Reset() { *x = QueryDirectRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[58] + mi := &file_rill_runtime_v1_api_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4206,7 +3716,7 @@ func (x *QueryDirectRequest) String() string { func (*QueryDirectRequest) ProtoMessage() {} func (x *QueryDirectRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[58] + mi := &file_rill_runtime_v1_api_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4219,7 +3729,7 @@ func (x *QueryDirectRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryDirectRequest.ProtoReflect.Descriptor instead. func (*QueryDirectRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{58} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{54} } func (x *QueryDirectRequest) GetInstanceId() string { @@ -4272,7 +3782,7 @@ type QueryDirectResponse struct { func (x *QueryDirectResponse) Reset() { *x = QueryDirectResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[59] + mi := &file_rill_runtime_v1_api_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4285,7 +3795,7 @@ func (x *QueryDirectResponse) String() string { func (*QueryDirectResponse) ProtoMessage() {} func (x *QueryDirectResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[59] + mi := &file_rill_runtime_v1_api_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4298,7 +3808,7 @@ func (x *QueryDirectResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use QueryDirectResponse.ProtoReflect.Descriptor instead. func (*QueryDirectResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{59} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{55} } func (x *QueryDirectResponse) GetMeta() *StructType { @@ -4315,33 +3825,41 @@ func (x *QueryDirectResponse) GetData() []*structpb.Struct { return nil } -// Request message for RuntimeService.MetricsViewMeta -type MetricsViewMetaRequest struct { +// Request message for RuntimeService.MetricsViewToplist +type MetricsViewToplistRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` - MetricsViewName string `protobuf:"bytes,2,opt,name=metrics_view_name,json=metricsViewName,proto3" json:"metrics_view_name,omitempty"` + InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` + MetricsViewName string `protobuf:"bytes,2,opt,name=metrics_view_name,json=metricsViewName,proto3" json:"metrics_view_name,omitempty"` + DimensionName string `protobuf:"bytes,3,opt,name=dimension_name,json=dimensionName,proto3" json:"dimension_name,omitempty"` + MeasureNames []string `protobuf:"bytes,4,rep,name=measure_names,json=measureNames,proto3" json:"measure_names,omitempty"` + TimeStart *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=time_start,json=timeStart,proto3" json:"time_start,omitempty"` + TimeEnd *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=time_end,json=timeEnd,proto3" json:"time_end,omitempty"` + Limit int64 `protobuf:"varint,7,opt,name=limit,proto3" json:"limit,omitempty"` + Offset int64 `protobuf:"varint,8,opt,name=offset,proto3" json:"offset,omitempty"` + Sort []*MetricsViewSort `protobuf:"bytes,9,rep,name=sort,proto3" json:"sort,omitempty"` + Filter *MetricsViewFilter `protobuf:"bytes,10,opt,name=filter,proto3" json:"filter,omitempty"` } -func (x *MetricsViewMetaRequest) Reset() { - *x = MetricsViewMetaRequest{} +func (x *MetricsViewToplistRequest) Reset() { + *x = MetricsViewToplistRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[60] + mi := &file_rill_runtime_v1_api_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MetricsViewMetaRequest) String() string { +func (x *MetricsViewToplistRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MetricsViewMetaRequest) ProtoMessage() {} +func (*MetricsViewToplistRequest) ProtoMessage() {} -func (x *MetricsViewMetaRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[60] +func (x *MetricsViewToplistRequest) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4352,213 +3870,77 @@ func (x *MetricsViewMetaRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MetricsViewMetaRequest.ProtoReflect.Descriptor instead. -func (*MetricsViewMetaRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{60} +// Deprecated: Use MetricsViewToplistRequest.ProtoReflect.Descriptor instead. +func (*MetricsViewToplistRequest) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{56} } -func (x *MetricsViewMetaRequest) GetInstanceId() string { +func (x *MetricsViewToplistRequest) GetInstanceId() string { if x != nil { return x.InstanceId } return "" } -func (x *MetricsViewMetaRequest) GetMetricsViewName() string { +func (x *MetricsViewToplistRequest) GetMetricsViewName() string { if x != nil { return x.MetricsViewName } return "" } -// Response message for RuntimeService.MetricsViewMeta -type MetricsViewMetaResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - MetricsViewName string `protobuf:"bytes,1,opt,name=metrics_view_name,json=metricsViewName,proto3" json:"metrics_view_name,omitempty"` - FromObject string `protobuf:"bytes,2,opt,name=from_object,json=fromObject,proto3" json:"from_object,omitempty"` - Dimensions []*MetricsView_Dimension `protobuf:"bytes,3,rep,name=dimensions,proto3" json:"dimensions,omitempty"` - Measures []*MetricsView_Measure `protobuf:"bytes,4,rep,name=measures,proto3" json:"measures,omitempty"` -} - -func (x *MetricsViewMetaResponse) Reset() { - *x = MetricsViewMetaResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[61] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) +func (x *MetricsViewToplistRequest) GetDimensionName() string { + if x != nil { + return x.DimensionName } + return "" } -func (x *MetricsViewMetaResponse) String() string { - return protoimpl.X.MessageStringOf(x) +func (x *MetricsViewToplistRequest) GetMeasureNames() []string { + if x != nil { + return x.MeasureNames + } + return nil } -func (*MetricsViewMetaResponse) ProtoMessage() {} - -func (x *MetricsViewMetaResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[61] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms +func (x *MetricsViewToplistRequest) GetTimeStart() *timestamppb.Timestamp { + if x != nil { + return x.TimeStart } - return mi.MessageOf(x) + return nil } -// Deprecated: Use MetricsViewMetaResponse.ProtoReflect.Descriptor instead. -func (*MetricsViewMetaResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{61} +func (x *MetricsViewToplistRequest) GetTimeEnd() *timestamppb.Timestamp { + if x != nil { + return x.TimeEnd + } + return nil } -func (x *MetricsViewMetaResponse) GetMetricsViewName() string { +func (x *MetricsViewToplistRequest) GetLimit() int64 { if x != nil { - return x.MetricsViewName + return x.Limit } - return "" + return 0 } -func (x *MetricsViewMetaResponse) GetFromObject() string { +func (x *MetricsViewToplistRequest) GetOffset() int64 { if x != nil { - return x.FromObject + return x.Offset } - return "" + return 0 } -func (x *MetricsViewMetaResponse) GetDimensions() []*MetricsView_Dimension { +func (x *MetricsViewToplistRequest) GetSort() []*MetricsViewSort { if x != nil { - return x.Dimensions + return x.Sort } return nil } -func (x *MetricsViewMetaResponse) GetMeasures() []*MetricsView_Measure { +func (x *MetricsViewToplistRequest) GetFilter() *MetricsViewFilter { if x != nil { - return x.Measures - } - return nil -} - -// Request message for RuntimeService.MetricsViewToplist -type MetricsViewToplistRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` - MetricsViewName string `protobuf:"bytes,2,opt,name=metrics_view_name,json=metricsViewName,proto3" json:"metrics_view_name,omitempty"` - DimensionName string `protobuf:"bytes,3,opt,name=dimension_name,json=dimensionName,proto3" json:"dimension_name,omitempty"` - MeasureNames []string `protobuf:"bytes,4,rep,name=measure_names,json=measureNames,proto3" json:"measure_names,omitempty"` - TimeStart *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=time_start,json=timeStart,proto3" json:"time_start,omitempty"` - TimeEnd *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=time_end,json=timeEnd,proto3" json:"time_end,omitempty"` - Limit int64 `protobuf:"varint,7,opt,name=limit,proto3" json:"limit,omitempty"` - Offset int64 `protobuf:"varint,8,opt,name=offset,proto3" json:"offset,omitempty"` - Sort []*MetricsViewSort `protobuf:"bytes,9,rep,name=sort,proto3" json:"sort,omitempty"` - Filter *MetricsViewFilter `protobuf:"bytes,10,opt,name=filter,proto3" json:"filter,omitempty"` -} - -func (x *MetricsViewToplistRequest) Reset() { - *x = MetricsViewToplistRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[62] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MetricsViewToplistRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MetricsViewToplistRequest) ProtoMessage() {} - -func (x *MetricsViewToplistRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[62] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MetricsViewToplistRequest.ProtoReflect.Descriptor instead. -func (*MetricsViewToplistRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{62} -} - -func (x *MetricsViewToplistRequest) GetInstanceId() string { - if x != nil { - return x.InstanceId - } - return "" -} - -func (x *MetricsViewToplistRequest) GetMetricsViewName() string { - if x != nil { - return x.MetricsViewName - } - return "" -} - -func (x *MetricsViewToplistRequest) GetDimensionName() string { - if x != nil { - return x.DimensionName - } - return "" -} - -func (x *MetricsViewToplistRequest) GetMeasureNames() []string { - if x != nil { - return x.MeasureNames - } - return nil -} - -func (x *MetricsViewToplistRequest) GetTimeStart() *timestamppb.Timestamp { - if x != nil { - return x.TimeStart - } - return nil -} - -func (x *MetricsViewToplistRequest) GetTimeEnd() *timestamppb.Timestamp { - if x != nil { - return x.TimeEnd - } - return nil -} - -func (x *MetricsViewToplistRequest) GetLimit() int64 { - if x != nil { - return x.Limit - } - return 0 -} - -func (x *MetricsViewToplistRequest) GetOffset() int64 { - if x != nil { - return x.Offset - } - return 0 -} - -func (x *MetricsViewToplistRequest) GetSort() []*MetricsViewSort { - if x != nil { - return x.Sort - } - return nil -} - -func (x *MetricsViewToplistRequest) GetFilter() *MetricsViewFilter { - if x != nil { - return x.Filter + return x.Filter } return nil } @@ -4576,7 +3958,7 @@ type MetricsViewToplistResponse struct { func (x *MetricsViewToplistResponse) Reset() { *x = MetricsViewToplistResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[63] + mi := &file_rill_runtime_v1_api_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4589,7 +3971,7 @@ func (x *MetricsViewToplistResponse) String() string { func (*MetricsViewToplistResponse) ProtoMessage() {} func (x *MetricsViewToplistResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[63] + mi := &file_rill_runtime_v1_api_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4602,7 +3984,7 @@ func (x *MetricsViewToplistResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MetricsViewToplistResponse.ProtoReflect.Descriptor instead. func (*MetricsViewToplistResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{63} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{57} } func (x *MetricsViewToplistResponse) GetMeta() []*MetricsViewColumn { @@ -4637,7 +4019,7 @@ type MetricsViewTimeSeriesRequest struct { func (x *MetricsViewTimeSeriesRequest) Reset() { *x = MetricsViewTimeSeriesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[64] + mi := &file_rill_runtime_v1_api_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4650,7 +4032,7 @@ func (x *MetricsViewTimeSeriesRequest) String() string { func (*MetricsViewTimeSeriesRequest) ProtoMessage() {} func (x *MetricsViewTimeSeriesRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[64] + mi := &file_rill_runtime_v1_api_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4663,7 +4045,7 @@ func (x *MetricsViewTimeSeriesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MetricsViewTimeSeriesRequest.ProtoReflect.Descriptor instead. func (*MetricsViewTimeSeriesRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{64} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{58} } func (x *MetricsViewTimeSeriesRequest) GetInstanceId() string { @@ -4728,7 +4110,7 @@ type MetricsViewTimeSeriesResponse struct { func (x *MetricsViewTimeSeriesResponse) Reset() { *x = MetricsViewTimeSeriesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[65] + mi := &file_rill_runtime_v1_api_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4741,7 +4123,7 @@ func (x *MetricsViewTimeSeriesResponse) String() string { func (*MetricsViewTimeSeriesResponse) ProtoMessage() {} func (x *MetricsViewTimeSeriesResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[65] + mi := &file_rill_runtime_v1_api_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4754,7 +4136,7 @@ func (x *MetricsViewTimeSeriesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MetricsViewTimeSeriesResponse.ProtoReflect.Descriptor instead. func (*MetricsViewTimeSeriesResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{65} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{59} } func (x *MetricsViewTimeSeriesResponse) GetMeta() []*MetricsViewColumn { @@ -4788,7 +4170,7 @@ type MetricsViewTotalsRequest struct { func (x *MetricsViewTotalsRequest) Reset() { *x = MetricsViewTotalsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[66] + mi := &file_rill_runtime_v1_api_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4801,7 +4183,7 @@ func (x *MetricsViewTotalsRequest) String() string { func (*MetricsViewTotalsRequest) ProtoMessage() {} func (x *MetricsViewTotalsRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[66] + mi := &file_rill_runtime_v1_api_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4814,7 +4196,7 @@ func (x *MetricsViewTotalsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use MetricsViewTotalsRequest.ProtoReflect.Descriptor instead. func (*MetricsViewTotalsRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{66} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{60} } func (x *MetricsViewTotalsRequest) GetInstanceId() string { @@ -4872,7 +4254,7 @@ type MetricsViewTotalsResponse struct { func (x *MetricsViewTotalsResponse) Reset() { *x = MetricsViewTotalsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[67] + mi := &file_rill_runtime_v1_api_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4885,7 +4267,7 @@ func (x *MetricsViewTotalsResponse) String() string { func (*MetricsViewTotalsResponse) ProtoMessage() {} func (x *MetricsViewTotalsResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[67] + mi := &file_rill_runtime_v1_api_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4898,7 +4280,7 @@ func (x *MetricsViewTotalsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use MetricsViewTotalsResponse.ProtoReflect.Descriptor instead. func (*MetricsViewTotalsResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{67} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{61} } func (x *MetricsViewTotalsResponse) GetMeta() []*MetricsViewColumn { @@ -4928,7 +4310,7 @@ type MetricsViewSort struct { func (x *MetricsViewSort) Reset() { *x = MetricsViewSort{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[68] + mi := &file_rill_runtime_v1_api_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4941,7 +4323,7 @@ func (x *MetricsViewSort) String() string { func (*MetricsViewSort) ProtoMessage() {} func (x *MetricsViewSort) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[68] + mi := &file_rill_runtime_v1_api_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -4954,7 +4336,7 @@ func (x *MetricsViewSort) ProtoReflect() protoreflect.Message { // Deprecated: Use MetricsViewSort.ProtoReflect.Descriptor instead. func (*MetricsViewSort) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{68} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{62} } func (x *MetricsViewSort) GetName() string { @@ -4985,7 +4367,7 @@ type MetricsViewFilter struct { func (x *MetricsViewFilter) Reset() { *x = MetricsViewFilter{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[69] + mi := &file_rill_runtime_v1_api_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -4998,7 +4380,7 @@ func (x *MetricsViewFilter) String() string { func (*MetricsViewFilter) ProtoMessage() {} func (x *MetricsViewFilter) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[69] + mi := &file_rill_runtime_v1_api_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5011,7 +4393,7 @@ func (x *MetricsViewFilter) ProtoReflect() protoreflect.Message { // Deprecated: Use MetricsViewFilter.ProtoReflect.Descriptor instead. func (*MetricsViewFilter) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{69} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{63} } func (x *MetricsViewFilter) GetMatch() []string { @@ -5049,7 +4431,7 @@ type MetricsViewColumn struct { func (x *MetricsViewColumn) Reset() { *x = MetricsViewColumn{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[70] + mi := &file_rill_runtime_v1_api_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5062,7 +4444,7 @@ func (x *MetricsViewColumn) String() string { func (*MetricsViewColumn) ProtoMessage() {} func (x *MetricsViewColumn) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[70] + mi := &file_rill_runtime_v1_api_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5075,7 +4457,7 @@ func (x *MetricsViewColumn) ProtoReflect() protoreflect.Message { // Deprecated: Use MetricsViewColumn.ProtoReflect.Descriptor instead. func (*MetricsViewColumn) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{70} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{64} } func (x *MetricsViewColumn) GetName() string { @@ -5112,7 +4494,7 @@ type EstimateRollupIntervalRequest struct { func (x *EstimateRollupIntervalRequest) Reset() { *x = EstimateRollupIntervalRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[71] + mi := &file_rill_runtime_v1_api_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5125,7 +4507,7 @@ func (x *EstimateRollupIntervalRequest) String() string { func (*EstimateRollupIntervalRequest) ProtoMessage() {} func (x *EstimateRollupIntervalRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[71] + mi := &file_rill_runtime_v1_api_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5138,7 +4520,7 @@ func (x *EstimateRollupIntervalRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use EstimateRollupIntervalRequest.ProtoReflect.Descriptor instead. func (*EstimateRollupIntervalRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{71} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{65} } func (x *EstimateRollupIntervalRequest) GetInstanceId() string { @@ -5175,7 +4557,7 @@ type EstimateRollupIntervalResponse struct { func (x *EstimateRollupIntervalResponse) Reset() { *x = EstimateRollupIntervalResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[72] + mi := &file_rill_runtime_v1_api_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5188,7 +4570,7 @@ func (x *EstimateRollupIntervalResponse) String() string { func (*EstimateRollupIntervalResponse) ProtoMessage() {} func (x *EstimateRollupIntervalResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[72] + mi := &file_rill_runtime_v1_api_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5201,7 +4583,7 @@ func (x *EstimateRollupIntervalResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use EstimateRollupIntervalResponse.ProtoReflect.Descriptor instead. func (*EstimateRollupIntervalResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{72} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{66} } func (x *EstimateRollupIntervalResponse) GetStart() *timestamppb.Timestamp { @@ -5231,7 +4613,6 @@ type ProfileColumnSummary struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Case: - // // *ProfileColumnSummary_CategoricalSummary // *ProfileColumnSummary_NumericSummary // *ProfileColumnSummary_TimeRangeSummary @@ -5241,7 +4622,7 @@ type ProfileColumnSummary struct { func (x *ProfileColumnSummary) Reset() { *x = ProfileColumnSummary{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[73] + mi := &file_rill_runtime_v1_api_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5254,7 +4635,7 @@ func (x *ProfileColumnSummary) String() string { func (*ProfileColumnSummary) ProtoMessage() {} func (x *ProfileColumnSummary) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[73] + mi := &file_rill_runtime_v1_api_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5267,7 +4648,7 @@ func (x *ProfileColumnSummary) ProtoReflect() protoreflect.Message { // Deprecated: Use ProfileColumnSummary.ProtoReflect.Descriptor instead. func (*ProfileColumnSummary) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{73} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{67} } func (m *ProfileColumnSummary) GetCase() isProfileColumnSummary_Case { @@ -5327,7 +4708,6 @@ type CategoricalSummary struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Case: - // // *CategoricalSummary_TopK // *CategoricalSummary_Cardinality Case isCategoricalSummary_Case `protobuf_oneof:"Case"` @@ -5336,7 +4716,7 @@ type CategoricalSummary struct { func (x *CategoricalSummary) Reset() { *x = CategoricalSummary{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[74] + mi := &file_rill_runtime_v1_api_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5349,7 +4729,7 @@ func (x *CategoricalSummary) String() string { func (*CategoricalSummary) ProtoMessage() {} func (x *CategoricalSummary) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[74] + mi := &file_rill_runtime_v1_api_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5362,7 +4742,7 @@ func (x *CategoricalSummary) ProtoReflect() protoreflect.Message { // Deprecated: Use CategoricalSummary.ProtoReflect.Descriptor instead. func (*CategoricalSummary) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{74} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{68} } func (m *CategoricalSummary) GetCase() isCategoricalSummary_Case { @@ -5413,7 +4793,7 @@ type GetCardinalityOfColumnResponse struct { func (x *GetCardinalityOfColumnResponse) Reset() { *x = GetCardinalityOfColumnResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[75] + mi := &file_rill_runtime_v1_api_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5426,7 +4806,7 @@ func (x *GetCardinalityOfColumnResponse) String() string { func (*GetCardinalityOfColumnResponse) ProtoMessage() {} func (x *GetCardinalityOfColumnResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[75] + mi := &file_rill_runtime_v1_api_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5439,7 +4819,7 @@ func (x *GetCardinalityOfColumnResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCardinalityOfColumnResponse.ProtoReflect.Descriptor instead. func (*GetCardinalityOfColumnResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{75} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{69} } func (x *GetCardinalityOfColumnResponse) GetCategoricalSummary() *CategoricalSummary { @@ -5460,7 +4840,7 @@ type GetTopKResponse struct { func (x *GetTopKResponse) Reset() { *x = GetTopKResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[76] + mi := &file_rill_runtime_v1_api_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5473,7 +4853,7 @@ func (x *GetTopKResponse) String() string { func (*GetTopKResponse) ProtoMessage() {} func (x *GetTopKResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[76] + mi := &file_rill_runtime_v1_api_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5486,7 +4866,7 @@ func (x *GetTopKResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTopKResponse.ProtoReflect.Descriptor instead. func (*GetTopKResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{76} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{70} } func (x *GetTopKResponse) GetCategoricalSummary() *CategoricalSummary { @@ -5504,7 +4884,6 @@ type NumericSummary struct { unknownFields protoimpl.UnknownFields // Types that are assignable to Case: - // // *NumericSummary_NumericHistogramBins // *NumericSummary_NumericStatistics // *NumericSummary_NumericOutliers @@ -5514,7 +4893,7 @@ type NumericSummary struct { func (x *NumericSummary) Reset() { *x = NumericSummary{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[77] + mi := &file_rill_runtime_v1_api_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5527,7 +4906,7 @@ func (x *NumericSummary) String() string { func (*NumericSummary) ProtoMessage() {} func (x *NumericSummary) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[77] + mi := &file_rill_runtime_v1_api_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5540,7 +4919,7 @@ func (x *NumericSummary) ProtoReflect() protoreflect.Message { // Deprecated: Use NumericSummary.ProtoReflect.Descriptor instead. func (*NumericSummary) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{77} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{71} } func (m *NumericSummary) GetCase() isNumericSummary_Case { @@ -5604,7 +4983,7 @@ type GetRugHistogramResponse struct { func (x *GetRugHistogramResponse) Reset() { *x = GetRugHistogramResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[78] + mi := &file_rill_runtime_v1_api_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5617,7 +4996,7 @@ func (x *GetRugHistogramResponse) String() string { func (*GetRugHistogramResponse) ProtoMessage() {} func (x *GetRugHistogramResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[78] + mi := &file_rill_runtime_v1_api_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5630,7 +5009,7 @@ func (x *GetRugHistogramResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRugHistogramResponse.ProtoReflect.Descriptor instead. func (*GetRugHistogramResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{78} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{72} } func (x *GetRugHistogramResponse) GetNumericSummary() *NumericSummary { @@ -5651,7 +5030,7 @@ type GetNumericHistogramResponse struct { func (x *GetNumericHistogramResponse) Reset() { *x = GetNumericHistogramResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[79] + mi := &file_rill_runtime_v1_api_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5664,7 +5043,7 @@ func (x *GetNumericHistogramResponse) String() string { func (*GetNumericHistogramResponse) ProtoMessage() {} func (x *GetNumericHistogramResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[79] + mi := &file_rill_runtime_v1_api_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5677,7 +5056,7 @@ func (x *GetNumericHistogramResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetNumericHistogramResponse.ProtoReflect.Descriptor instead. func (*GetNumericHistogramResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{79} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{73} } func (x *GetNumericHistogramResponse) GetNumericSummary() *NumericSummary { @@ -5698,7 +5077,7 @@ type GetDescriptiveStatisticsResponse struct { func (x *GetDescriptiveStatisticsResponse) Reset() { *x = GetDescriptiveStatisticsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[80] + mi := &file_rill_runtime_v1_api_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5711,7 +5090,7 @@ func (x *GetDescriptiveStatisticsResponse) String() string { func (*GetDescriptiveStatisticsResponse) ProtoMessage() {} func (x *GetDescriptiveStatisticsResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[80] + mi := &file_rill_runtime_v1_api_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5724,7 +5103,7 @@ func (x *GetDescriptiveStatisticsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDescriptiveStatisticsResponse.ProtoReflect.Descriptor instead. func (*GetDescriptiveStatisticsResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{80} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{74} } func (x *GetDescriptiveStatisticsResponse) GetNumericSummary() *NumericSummary { @@ -5745,7 +5124,7 @@ type GetTimeRangeSummaryResponse struct { func (x *GetTimeRangeSummaryResponse) Reset() { *x = GetTimeRangeSummaryResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[81] + mi := &file_rill_runtime_v1_api_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5758,7 +5137,7 @@ func (x *GetTimeRangeSummaryResponse) String() string { func (*GetTimeRangeSummaryResponse) ProtoMessage() {} func (x *GetTimeRangeSummaryResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[81] + mi := &file_rill_runtime_v1_api_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5771,7 +5150,7 @@ func (x *GetTimeRangeSummaryResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTimeRangeSummaryResponse.ProtoReflect.Descriptor instead. func (*GetTimeRangeSummaryResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{81} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{75} } func (x *GetTimeRangeSummaryResponse) GetTimeRangeSummary() *TimeRangeSummary { @@ -5794,7 +5173,7 @@ type TimeRangeSummary struct { func (x *TimeRangeSummary) Reset() { *x = TimeRangeSummary{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[82] + mi := &file_rill_runtime_v1_api_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5807,7 +5186,7 @@ func (x *TimeRangeSummary) String() string { func (*TimeRangeSummary) ProtoMessage() {} func (x *TimeRangeSummary) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[82] + mi := &file_rill_runtime_v1_api_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5820,7 +5199,7 @@ func (x *TimeRangeSummary) ProtoReflect() protoreflect.Message { // Deprecated: Use TimeRangeSummary.ProtoReflect.Descriptor instead. func (*TimeRangeSummary) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{82} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{76} } func (x *TimeRangeSummary) GetMin() *timestamppb.Timestamp { @@ -5855,7 +5234,7 @@ type NumericOutliers struct { func (x *NumericOutliers) Reset() { *x = NumericOutliers{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[83] + mi := &file_rill_runtime_v1_api_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5868,7 +5247,7 @@ func (x *NumericOutliers) String() string { func (*NumericOutliers) ProtoMessage() {} func (x *NumericOutliers) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[83] + mi := &file_rill_runtime_v1_api_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5881,7 +5260,7 @@ func (x *NumericOutliers) ProtoReflect() protoreflect.Message { // Deprecated: Use NumericOutliers.ProtoReflect.Descriptor instead. func (*NumericOutliers) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{83} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{77} } func (x *NumericOutliers) GetOutliers() []*NumericOutliers_Outlier { @@ -5907,7 +5286,7 @@ type GetTopKRequest struct { func (x *GetTopKRequest) Reset() { *x = GetTopKRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[84] + mi := &file_rill_runtime_v1_api_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5920,7 +5299,7 @@ func (x *GetTopKRequest) String() string { func (*GetTopKRequest) ProtoMessage() {} func (x *GetTopKRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[84] + mi := &file_rill_runtime_v1_api_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -5933,7 +5312,7 @@ func (x *GetTopKRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTopKRequest.ProtoReflect.Descriptor instead. func (*GetTopKRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{84} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{78} } func (x *GetTopKRequest) GetInstanceId() string { @@ -5982,7 +5361,7 @@ type TopK struct { func (x *TopK) Reset() { *x = TopK{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[85] + mi := &file_rill_runtime_v1_api_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -5995,7 +5374,7 @@ func (x *TopK) String() string { func (*TopK) ProtoMessage() {} func (x *TopK) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[85] + mi := &file_rill_runtime_v1_api_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6008,7 +5387,7 @@ func (x *TopK) ProtoReflect() protoreflect.Message { // Deprecated: Use TopK.ProtoReflect.Descriptor instead. func (*TopK) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{85} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{79} } func (x *TopK) GetEntries() []*TopK_TopKEntry { @@ -6032,7 +5411,7 @@ type GetNullCountRequest struct { func (x *GetNullCountRequest) Reset() { *x = GetNullCountRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[86] + mi := &file_rill_runtime_v1_api_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6045,7 +5424,7 @@ func (x *GetNullCountRequest) String() string { func (*GetNullCountRequest) ProtoMessage() {} func (x *GetNullCountRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[86] + mi := &file_rill_runtime_v1_api_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6058,7 +5437,7 @@ func (x *GetNullCountRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetNullCountRequest.ProtoReflect.Descriptor instead. func (*GetNullCountRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{86} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{80} } func (x *GetNullCountRequest) GetInstanceId() string { @@ -6094,7 +5473,7 @@ type GetNullCountResponse struct { func (x *GetNullCountResponse) Reset() { *x = GetNullCountResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[87] + mi := &file_rill_runtime_v1_api_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6107,7 +5486,7 @@ func (x *GetNullCountResponse) String() string { func (*GetNullCountResponse) ProtoMessage() {} func (x *GetNullCountResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[87] + mi := &file_rill_runtime_v1_api_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6120,7 +5499,7 @@ func (x *GetNullCountResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetNullCountResponse.ProtoReflect.Descriptor instead. func (*GetNullCountResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{87} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{81} } func (x *GetNullCountResponse) GetCount() int64 { @@ -6144,7 +5523,7 @@ type GetDescriptiveStatisticsRequest struct { func (x *GetDescriptiveStatisticsRequest) Reset() { *x = GetDescriptiveStatisticsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[88] + mi := &file_rill_runtime_v1_api_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6157,7 +5536,7 @@ func (x *GetDescriptiveStatisticsRequest) String() string { func (*GetDescriptiveStatisticsRequest) ProtoMessage() {} func (x *GetDescriptiveStatisticsRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[88] + mi := &file_rill_runtime_v1_api_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6170,7 +5549,7 @@ func (x *GetDescriptiveStatisticsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDescriptiveStatisticsRequest.ProtoReflect.Descriptor instead. func (*GetDescriptiveStatisticsRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{88} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{82} } func (x *GetDescriptiveStatisticsRequest) GetInstanceId() string { @@ -6212,7 +5591,7 @@ type NumericStatistics struct { func (x *NumericStatistics) Reset() { *x = NumericStatistics{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[89] + mi := &file_rill_runtime_v1_api_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6225,7 +5604,7 @@ func (x *NumericStatistics) String() string { func (*NumericStatistics) ProtoMessage() {} func (x *NumericStatistics) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[89] + mi := &file_rill_runtime_v1_api_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6238,7 +5617,7 @@ func (x *NumericStatistics) ProtoReflect() protoreflect.Message { // Deprecated: Use NumericStatistics.ProtoReflect.Descriptor instead. func (*NumericStatistics) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{89} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{83} } func (x *NumericStatistics) GetMin() float64 { @@ -6304,7 +5683,7 @@ type EstimateSmallestTimeGrainRequest struct { func (x *EstimateSmallestTimeGrainRequest) Reset() { *x = EstimateSmallestTimeGrainRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[90] + mi := &file_rill_runtime_v1_api_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6317,7 +5696,7 @@ func (x *EstimateSmallestTimeGrainRequest) String() string { func (*EstimateSmallestTimeGrainRequest) ProtoMessage() {} func (x *EstimateSmallestTimeGrainRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[90] + mi := &file_rill_runtime_v1_api_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6330,7 +5709,7 @@ func (x *EstimateSmallestTimeGrainRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use EstimateSmallestTimeGrainRequest.ProtoReflect.Descriptor instead. func (*EstimateSmallestTimeGrainRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{90} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{84} } func (x *EstimateSmallestTimeGrainRequest) GetInstanceId() string { @@ -6366,7 +5745,7 @@ type EstimateSmallestTimeGrainResponse struct { func (x *EstimateSmallestTimeGrainResponse) Reset() { *x = EstimateSmallestTimeGrainResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[91] + mi := &file_rill_runtime_v1_api_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6379,7 +5758,7 @@ func (x *EstimateSmallestTimeGrainResponse) String() string { func (*EstimateSmallestTimeGrainResponse) ProtoMessage() {} func (x *EstimateSmallestTimeGrainResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[91] + mi := &file_rill_runtime_v1_api_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6392,7 +5771,7 @@ func (x *EstimateSmallestTimeGrainResponse) ProtoReflect() protoreflect.Message // Deprecated: Use EstimateSmallestTimeGrainResponse.ProtoReflect.Descriptor instead. func (*EstimateSmallestTimeGrainResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{91} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{85} } func (x *EstimateSmallestTimeGrainResponse) GetTimeGrain() TimeGrain { @@ -6416,7 +5795,7 @@ type GetNumericHistogramRequest struct { func (x *GetNumericHistogramRequest) Reset() { *x = GetNumericHistogramRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[92] + mi := &file_rill_runtime_v1_api_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6429,7 +5808,7 @@ func (x *GetNumericHistogramRequest) String() string { func (*GetNumericHistogramRequest) ProtoMessage() {} func (x *GetNumericHistogramRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[92] + mi := &file_rill_runtime_v1_api_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6442,7 +5821,7 @@ func (x *GetNumericHistogramRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetNumericHistogramRequest.ProtoReflect.Descriptor instead. func (*GetNumericHistogramRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{92} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{86} } func (x *GetNumericHistogramRequest) GetInstanceId() string { @@ -6478,7 +5857,7 @@ type NumericHistogramBins struct { func (x *NumericHistogramBins) Reset() { *x = NumericHistogramBins{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[93] + mi := &file_rill_runtime_v1_api_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6491,7 +5870,7 @@ func (x *NumericHistogramBins) String() string { func (*NumericHistogramBins) ProtoMessage() {} func (x *NumericHistogramBins) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[93] + mi := &file_rill_runtime_v1_api_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6504,7 +5883,7 @@ func (x *NumericHistogramBins) ProtoReflect() protoreflect.Message { // Deprecated: Use NumericHistogramBins.ProtoReflect.Descriptor instead. func (*NumericHistogramBins) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{93} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{87} } func (x *NumericHistogramBins) GetBins() []*NumericHistogramBins_Bin { @@ -6528,7 +5907,7 @@ type GetRugHistogramRequest struct { func (x *GetRugHistogramRequest) Reset() { *x = GetRugHistogramRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[94] + mi := &file_rill_runtime_v1_api_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6541,7 +5920,7 @@ func (x *GetRugHistogramRequest) String() string { func (*GetRugHistogramRequest) ProtoMessage() {} func (x *GetRugHistogramRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[94] + mi := &file_rill_runtime_v1_api_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6554,7 +5933,7 @@ func (x *GetRugHistogramRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRugHistogramRequest.ProtoReflect.Descriptor instead. func (*GetRugHistogramRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{94} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{88} } func (x *GetRugHistogramRequest) GetInstanceId() string { @@ -6592,7 +5971,7 @@ type GetTimeRangeSummaryRequest struct { func (x *GetTimeRangeSummaryRequest) Reset() { *x = GetTimeRangeSummaryRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[95] + mi := &file_rill_runtime_v1_api_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6605,7 +5984,7 @@ func (x *GetTimeRangeSummaryRequest) String() string { func (*GetTimeRangeSummaryRequest) ProtoMessage() {} func (x *GetTimeRangeSummaryRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[95] + mi := &file_rill_runtime_v1_api_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6618,7 +5997,7 @@ func (x *GetTimeRangeSummaryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTimeRangeSummaryRequest.ProtoReflect.Descriptor instead. func (*GetTimeRangeSummaryRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{95} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{89} } func (x *GetTimeRangeSummaryRequest) GetInstanceId() string { @@ -6656,7 +6035,7 @@ type GetCardinalityOfColumnRequest struct { func (x *GetCardinalityOfColumnRequest) Reset() { *x = GetCardinalityOfColumnRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[96] + mi := &file_rill_runtime_v1_api_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6669,7 +6048,7 @@ func (x *GetCardinalityOfColumnRequest) String() string { func (*GetCardinalityOfColumnRequest) ProtoMessage() {} func (x *GetCardinalityOfColumnRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[96] + mi := &file_rill_runtime_v1_api_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6682,7 +6061,7 @@ func (x *GetCardinalityOfColumnRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetCardinalityOfColumnRequest.ProtoReflect.Descriptor instead. func (*GetCardinalityOfColumnRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{96} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{90} } func (x *GetCardinalityOfColumnRequest) GetInstanceId() string { @@ -6724,7 +6103,7 @@ type GenerateTimeSeriesRequest struct { func (x *GenerateTimeSeriesRequest) Reset() { *x = GenerateTimeSeriesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[97] + mi := &file_rill_runtime_v1_api_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6737,7 +6116,7 @@ func (x *GenerateTimeSeriesRequest) String() string { func (*GenerateTimeSeriesRequest) ProtoMessage() {} func (x *GenerateTimeSeriesRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[97] + mi := &file_rill_runtime_v1_api_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6750,7 +6129,7 @@ func (x *GenerateTimeSeriesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateTimeSeriesRequest.ProtoReflect.Descriptor instead. func (*GenerateTimeSeriesRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{97} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{91} } func (x *GenerateTimeSeriesRequest) GetInstanceId() string { @@ -6824,7 +6203,7 @@ type BasicMeasureDefinition struct { func (x *BasicMeasureDefinition) Reset() { *x = BasicMeasureDefinition{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[98] + mi := &file_rill_runtime_v1_api_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6837,7 +6216,7 @@ func (x *BasicMeasureDefinition) String() string { func (*BasicMeasureDefinition) ProtoMessage() {} func (x *BasicMeasureDefinition) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[98] + mi := &file_rill_runtime_v1_api_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6850,7 +6229,7 @@ func (x *BasicMeasureDefinition) ProtoReflect() protoreflect.Message { // Deprecated: Use BasicMeasureDefinition.ProtoReflect.Descriptor instead. func (*BasicMeasureDefinition) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{98} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{92} } func (x *BasicMeasureDefinition) GetId() string { @@ -6887,7 +6266,7 @@ type TimeSeriesTimeRange struct { func (x *TimeSeriesTimeRange) Reset() { *x = TimeSeriesTimeRange{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[99] + mi := &file_rill_runtime_v1_api_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6900,7 +6279,7 @@ func (x *TimeSeriesTimeRange) String() string { func (*TimeSeriesTimeRange) ProtoMessage() {} func (x *TimeSeriesTimeRange) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[99] + mi := &file_rill_runtime_v1_api_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6913,7 +6292,7 @@ func (x *TimeSeriesTimeRange) ProtoReflect() protoreflect.Message { // Deprecated: Use TimeSeriesTimeRange.ProtoReflect.Descriptor instead. func (*TimeSeriesTimeRange) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{99} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{93} } func (x *TimeSeriesTimeRange) GetStart() *timestamppb.Timestamp { @@ -6950,7 +6329,7 @@ type MetricsViewDimensionValue struct { func (x *MetricsViewDimensionValue) Reset() { *x = MetricsViewDimensionValue{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[100] + mi := &file_rill_runtime_v1_api_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -6963,7 +6342,7 @@ func (x *MetricsViewDimensionValue) String() string { func (*MetricsViewDimensionValue) ProtoMessage() {} func (x *MetricsViewDimensionValue) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[100] + mi := &file_rill_runtime_v1_api_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -6976,7 +6355,7 @@ func (x *MetricsViewDimensionValue) ProtoReflect() protoreflect.Message { // Deprecated: Use MetricsViewDimensionValue.ProtoReflect.Descriptor instead. func (*MetricsViewDimensionValue) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{100} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{94} } func (x *MetricsViewDimensionValue) GetName() string { @@ -7012,7 +6391,7 @@ type MetricsViewRequestFilter struct { func (x *MetricsViewRequestFilter) Reset() { *x = MetricsViewRequestFilter{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[101] + mi := &file_rill_runtime_v1_api_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7025,7 +6404,7 @@ func (x *MetricsViewRequestFilter) String() string { func (*MetricsViewRequestFilter) ProtoMessage() {} func (x *MetricsViewRequestFilter) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[101] + mi := &file_rill_runtime_v1_api_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7038,7 +6417,7 @@ func (x *MetricsViewRequestFilter) ProtoReflect() protoreflect.Message { // Deprecated: Use MetricsViewRequestFilter.ProtoReflect.Descriptor instead. func (*MetricsViewRequestFilter) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{101} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{95} } func (x *MetricsViewRequestFilter) GetInclude() []*MetricsViewDimensionValue { @@ -7071,7 +6450,7 @@ type TimeSeriesResponse struct { func (x *TimeSeriesResponse) Reset() { *x = TimeSeriesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[102] + mi := &file_rill_runtime_v1_api_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7084,7 +6463,7 @@ func (x *TimeSeriesResponse) String() string { func (*TimeSeriesResponse) ProtoMessage() {} func (x *TimeSeriesResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[102] + mi := &file_rill_runtime_v1_api_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7097,7 +6476,7 @@ func (x *TimeSeriesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use TimeSeriesResponse.ProtoReflect.Descriptor instead. func (*TimeSeriesResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{102} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{96} } func (x *TimeSeriesResponse) GetId() string { @@ -7153,7 +6532,7 @@ type GenerateTimeSeriesResponse struct { func (x *GenerateTimeSeriesResponse) Reset() { *x = GenerateTimeSeriesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[103] + mi := &file_rill_runtime_v1_api_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7166,7 +6545,7 @@ func (x *GenerateTimeSeriesResponse) String() string { func (*GenerateTimeSeriesResponse) ProtoMessage() {} func (x *GenerateTimeSeriesResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[103] + mi := &file_rill_runtime_v1_api_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7179,7 +6558,7 @@ func (x *GenerateTimeSeriesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GenerateTimeSeriesResponse.ProtoReflect.Descriptor instead. func (*GenerateTimeSeriesResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{103} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{97} } func (x *GenerateTimeSeriesResponse) GetRollup() *TimeSeriesResponse { @@ -7202,7 +6581,7 @@ type TimeSeriesValue struct { func (x *TimeSeriesValue) Reset() { *x = TimeSeriesValue{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[104] + mi := &file_rill_runtime_v1_api_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7215,7 +6594,7 @@ func (x *TimeSeriesValue) String() string { func (*TimeSeriesValue) ProtoMessage() {} func (x *TimeSeriesValue) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[104] + mi := &file_rill_runtime_v1_api_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7228,7 +6607,7 @@ func (x *TimeSeriesValue) ProtoReflect() protoreflect.Message { // Deprecated: Use TimeSeriesValue.ProtoReflect.Descriptor instead. func (*TimeSeriesValue) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{104} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{98} } func (x *TimeSeriesValue) GetTs() string { @@ -7266,7 +6645,7 @@ type RenameDatabaseObjectRequest struct { func (x *RenameDatabaseObjectRequest) Reset() { *x = RenameDatabaseObjectRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[105] + mi := &file_rill_runtime_v1_api_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7279,7 +6658,7 @@ func (x *RenameDatabaseObjectRequest) String() string { func (*RenameDatabaseObjectRequest) ProtoMessage() {} func (x *RenameDatabaseObjectRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[105] + mi := &file_rill_runtime_v1_api_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7292,7 +6671,7 @@ func (x *RenameDatabaseObjectRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RenameDatabaseObjectRequest.ProtoReflect.Descriptor instead. func (*RenameDatabaseObjectRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{105} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{99} } func (x *RenameDatabaseObjectRequest) GetInstanceId() string { @@ -7332,7 +6711,7 @@ type RenameDatabaseObjectResponse struct { func (x *RenameDatabaseObjectResponse) Reset() { *x = RenameDatabaseObjectResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[106] + mi := &file_rill_runtime_v1_api_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7345,7 +6724,7 @@ func (x *RenameDatabaseObjectResponse) String() string { func (*RenameDatabaseObjectResponse) ProtoMessage() {} func (x *RenameDatabaseObjectResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[106] + mi := &file_rill_runtime_v1_api_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7358,7 +6737,7 @@ func (x *RenameDatabaseObjectResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RenameDatabaseObjectResponse.ProtoReflect.Descriptor instead. func (*RenameDatabaseObjectResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{106} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{100} } type GetTableCardinalityRequest struct { @@ -7373,7 +6752,7 @@ type GetTableCardinalityRequest struct { func (x *GetTableCardinalityRequest) Reset() { *x = GetTableCardinalityRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[107] + mi := &file_rill_runtime_v1_api_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7386,7 +6765,7 @@ func (x *GetTableCardinalityRequest) String() string { func (*GetTableCardinalityRequest) ProtoMessage() {} func (x *GetTableCardinalityRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[107] + mi := &file_rill_runtime_v1_api_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7399,7 +6778,7 @@ func (x *GetTableCardinalityRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTableCardinalityRequest.ProtoReflect.Descriptor instead. func (*GetTableCardinalityRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{107} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{101} } func (x *GetTableCardinalityRequest) GetInstanceId() string { @@ -7427,7 +6806,7 @@ type GetTableCardinalityResponse struct { func (x *GetTableCardinalityResponse) Reset() { *x = GetTableCardinalityResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[108] + mi := &file_rill_runtime_v1_api_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7440,7 +6819,7 @@ func (x *GetTableCardinalityResponse) String() string { func (*GetTableCardinalityResponse) ProtoMessage() {} func (x *GetTableCardinalityResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[108] + mi := &file_rill_runtime_v1_api_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7453,7 +6832,7 @@ func (x *GetTableCardinalityResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTableCardinalityResponse.ProtoReflect.Descriptor instead. func (*GetTableCardinalityResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{108} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{102} } func (x *GetTableCardinalityResponse) GetCardinality() int64 { @@ -7475,7 +6854,7 @@ type ProfileColumnsRequest struct { func (x *ProfileColumnsRequest) Reset() { *x = ProfileColumnsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[109] + mi := &file_rill_runtime_v1_api_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7488,7 +6867,7 @@ func (x *ProfileColumnsRequest) String() string { func (*ProfileColumnsRequest) ProtoMessage() {} func (x *ProfileColumnsRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[109] + mi := &file_rill_runtime_v1_api_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7501,7 +6880,7 @@ func (x *ProfileColumnsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ProfileColumnsRequest.ProtoReflect.Descriptor instead. func (*ProfileColumnsRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{109} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{103} } func (x *ProfileColumnsRequest) GetInstanceId() string { @@ -7529,7 +6908,7 @@ type ProfileColumnsResponse struct { func (x *ProfileColumnsResponse) Reset() { *x = ProfileColumnsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[110] + mi := &file_rill_runtime_v1_api_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7542,7 +6921,7 @@ func (x *ProfileColumnsResponse) String() string { func (*ProfileColumnsResponse) ProtoMessage() {} func (x *ProfileColumnsResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[110] + mi := &file_rill_runtime_v1_api_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7555,7 +6934,7 @@ func (x *ProfileColumnsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ProfileColumnsResponse.ProtoReflect.Descriptor instead. func (*ProfileColumnsResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{110} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{104} } func (x *ProfileColumnsResponse) GetProfileColumns() []*ProfileColumn { @@ -7578,7 +6957,7 @@ type ProfileColumn struct { func (x *ProfileColumn) Reset() { *x = ProfileColumn{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[111] + mi := &file_rill_runtime_v1_api_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7591,7 +6970,7 @@ func (x *ProfileColumn) String() string { func (*ProfileColumn) ProtoMessage() {} func (x *ProfileColumn) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[111] + mi := &file_rill_runtime_v1_api_proto_msgTypes[105] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7604,7 +6983,7 @@ func (x *ProfileColumn) ProtoReflect() protoreflect.Message { // Deprecated: Use ProfileColumn.ProtoReflect.Descriptor instead. func (*ProfileColumn) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{111} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{105} } func (x *ProfileColumn) GetName() string { @@ -7641,7 +7020,7 @@ type GetTableRowsRequest struct { func (x *GetTableRowsRequest) Reset() { *x = GetTableRowsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[112] + mi := &file_rill_runtime_v1_api_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7654,7 +7033,7 @@ func (x *GetTableRowsRequest) String() string { func (*GetTableRowsRequest) ProtoMessage() {} func (x *GetTableRowsRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[112] + mi := &file_rill_runtime_v1_api_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7667,7 +7046,7 @@ func (x *GetTableRowsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTableRowsRequest.ProtoReflect.Descriptor instead. func (*GetTableRowsRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{112} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{106} } func (x *GetTableRowsRequest) GetInstanceId() string { @@ -7702,7 +7081,7 @@ type GetTableRowsResponse struct { func (x *GetTableRowsResponse) Reset() { *x = GetTableRowsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[113] + mi := &file_rill_runtime_v1_api_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7715,7 +7094,7 @@ func (x *GetTableRowsResponse) String() string { func (*GetTableRowsResponse) ProtoMessage() {} func (x *GetTableRowsResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[113] + mi := &file_rill_runtime_v1_api_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7728,7 +7107,7 @@ func (x *GetTableRowsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetTableRowsResponse.ProtoReflect.Descriptor instead. func (*GetTableRowsResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{113} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{107} } func (x *GetTableRowsResponse) GetData() []*structpb.Struct { @@ -7758,7 +7137,7 @@ type Connector struct { func (x *Connector) Reset() { *x = Connector{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[114] + mi := &file_rill_runtime_v1_api_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7771,7 +7150,7 @@ func (x *Connector) String() string { func (*Connector) ProtoMessage() {} func (x *Connector) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[114] + mi := &file_rill_runtime_v1_api_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7784,7 +7163,7 @@ func (x *Connector) ProtoReflect() protoreflect.Message { // Deprecated: Use Connector.ProtoReflect.Descriptor instead. func (*Connector) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{114} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{108} } func (x *Connector) GetName() string { @@ -7825,7 +7204,7 @@ type ListConnectorsRequest struct { func (x *ListConnectorsRequest) Reset() { *x = ListConnectorsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[115] + mi := &file_rill_runtime_v1_api_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7838,7 +7217,7 @@ func (x *ListConnectorsRequest) String() string { func (*ListConnectorsRequest) ProtoMessage() {} func (x *ListConnectorsRequest) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[115] + mi := &file_rill_runtime_v1_api_proto_msgTypes[109] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7851,7 +7230,7 @@ func (x *ListConnectorsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListConnectorsRequest.ProtoReflect.Descriptor instead. func (*ListConnectorsRequest) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{115} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{109} } // Response message for RuntimeService.ListConnectors @@ -7866,7 +7245,7 @@ type ListConnectorsResponse struct { func (x *ListConnectorsResponse) Reset() { *x = ListConnectorsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[116] + mi := &file_rill_runtime_v1_api_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7879,7 +7258,7 @@ func (x *ListConnectorsResponse) String() string { func (*ListConnectorsResponse) ProtoMessage() {} func (x *ListConnectorsResponse) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[116] + mi := &file_rill_runtime_v1_api_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7892,7 +7271,7 @@ func (x *ListConnectorsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListConnectorsResponse.ProtoReflect.Descriptor instead. func (*ListConnectorsResponse) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{116} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{110} } func (x *ListConnectorsResponse) GetConnectors() []*Connector { @@ -7902,41 +7281,33 @@ func (x *ListConnectorsResponse) GetConnectors() []*Connector { return nil } -// Type represents a data type in a schema -type Type struct { +// CharLocation is a line and column in a code artifact +type MigrationError_CharLocation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // Code designates the type - Code Type_Code `protobuf:"varint,1,opt,name=code,proto3,enum=rill.runtime.v1.Type_Code" json:"code,omitempty"` - // Nullable indicates whether null values are possible - Nullable bool `protobuf:"varint,2,opt,name=nullable,proto3" json:"nullable,omitempty"` - // If code is CODE_ARRAY, array_element_type specifies the type of the array elements - ArrayElementType *Type `protobuf:"bytes,3,opt,name=array_element_type,json=arrayElementType,proto3" json:"array_element_type,omitempty"` - // If code is CODE_STRUCT, struct_type specifies the type of the struct's fields - StructType *StructType `protobuf:"bytes,4,opt,name=struct_type,json=structType,proto3" json:"struct_type,omitempty"` - // If code is CODE_MAP, map_type specifies the map's key and value types - MapType *MapType `protobuf:"bytes,5,opt,name=map_type,json=mapType,proto3" json:"map_type,omitempty"` + Line uint32 `protobuf:"varint,1,opt,name=line,proto3" json:"line,omitempty"` + Column uint32 `protobuf:"varint,2,opt,name=column,proto3" json:"column,omitempty"` } -func (x *Type) Reset() { - *x = Type{} +func (x *MigrationError_CharLocation) Reset() { + *x = MigrationError_CharLocation{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[117] + mi := &file_rill_runtime_v1_api_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *Type) String() string { +func (x *MigrationError_CharLocation) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Type) ProtoMessage() {} +func (*MigrationError_CharLocation) ProtoMessage() {} -func (x *Type) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[117] +func (x *MigrationError_CharLocation) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7947,72 +7318,52 @@ func (x *Type) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Type.ProtoReflect.Descriptor instead. -func (*Type) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{117} -} - -func (x *Type) GetCode() Type_Code { - if x != nil { - return x.Code - } - return Type_CODE_UNSPECIFIED -} - -func (x *Type) GetNullable() bool { - if x != nil { - return x.Nullable - } - return false -} - -func (x *Type) GetArrayElementType() *Type { - if x != nil { - return x.ArrayElementType - } - return nil +// Deprecated: Use MigrationError_CharLocation.ProtoReflect.Descriptor instead. +func (*MigrationError_CharLocation) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{41, 0} } -func (x *Type) GetStructType() *StructType { +func (x *MigrationError_CharLocation) GetLine() uint32 { if x != nil { - return x.StructType + return x.Line } - return nil + return 0 } -func (x *Type) GetMapType() *MapType { +func (x *MigrationError_CharLocation) GetColumn() uint32 { if x != nil { - return x.MapType + return x.Column } - return nil + return 0 } -// StructType is a type composed of ordered, named and typed sub-fields -type StructType struct { +type MetricsViewFilter_Cond struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Fields []*StructType_Field `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + In []*structpb.Value `protobuf:"bytes,2,rep,name=in,proto3" json:"in,omitempty"` + Like []*structpb.Value `protobuf:"bytes,3,rep,name=like,proto3" json:"like,omitempty"` } -func (x *StructType) Reset() { - *x = StructType{} +func (x *MetricsViewFilter_Cond) Reset() { + *x = MetricsViewFilter_Cond{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[118] + mi := &file_rill_runtime_v1_api_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *StructType) String() string { +func (x *MetricsViewFilter_Cond) String() string { return protoimpl.X.MessageStringOf(x) } -func (*StructType) ProtoMessage() {} +func (*MetricsViewFilter_Cond) ProtoMessage() {} -func (x *StructType) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[118] +func (x *MetricsViewFilter_Cond) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8023,45 +7374,59 @@ func (x *StructType) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use StructType.ProtoReflect.Descriptor instead. -func (*StructType) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{118} +// Deprecated: Use MetricsViewFilter_Cond.ProtoReflect.Descriptor instead. +func (*MetricsViewFilter_Cond) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{63, 0} +} + +func (x *MetricsViewFilter_Cond) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *MetricsViewFilter_Cond) GetIn() []*structpb.Value { + if x != nil { + return x.In + } + return nil } -func (x *StructType) GetFields() []*StructType_Field { +func (x *MetricsViewFilter_Cond) GetLike() []*structpb.Value { if x != nil { - return x.Fields + return x.Like } return nil } -// MapType is a complex type for mapping keys to values -type MapType struct { +type TimeRangeSummary_Interval struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - KeyType *Type `protobuf:"bytes,1,opt,name=key_type,json=keyType,proto3" json:"key_type,omitempty"` - ValueType *Type `protobuf:"bytes,2,opt,name=value_type,json=valueType,proto3" json:"value_type,omitempty"` + Months int32 `protobuf:"varint,1,opt,name=months,proto3" json:"months,omitempty"` + Days int32 `protobuf:"varint,2,opt,name=days,proto3" json:"days,omitempty"` + Micros int64 `protobuf:"varint,3,opt,name=micros,proto3" json:"micros,omitempty"` } -func (x *MapType) Reset() { - *x = MapType{} +func (x *TimeRangeSummary_Interval) Reset() { + *x = TimeRangeSummary_Interval{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[119] + mi := &file_rill_runtime_v1_api_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MapType) String() string { +func (x *TimeRangeSummary_Interval) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MapType) ProtoMessage() {} +func (*TimeRangeSummary_Interval) ProtoMessage() {} -func (x *MapType) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[119] +func (x *TimeRangeSummary_Interval) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8072,54 +7437,60 @@ func (x *MapType) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MapType.ProtoReflect.Descriptor instead. -func (*MapType) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{119} +// Deprecated: Use TimeRangeSummary_Interval.ProtoReflect.Descriptor instead. +func (*TimeRangeSummary_Interval) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{76, 0} } -func (x *MapType) GetKeyType() *Type { +func (x *TimeRangeSummary_Interval) GetMonths() int32 { if x != nil { - return x.KeyType + return x.Months } - return nil + return 0 } -func (x *MapType) GetValueType() *Type { +func (x *TimeRangeSummary_Interval) GetDays() int32 { if x != nil { - return x.ValueType + return x.Days } - return nil + return 0 +} + +func (x *TimeRangeSummary_Interval) GetMicros() int64 { + if x != nil { + return x.Micros + } + return 0 } -// Dimensions are columns to filter and group by -type MetricsView_Dimension struct { +type NumericOutliers_Outlier struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"` - Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` - Enabled string `protobuf:"bytes,4,opt,name=enabled,proto3" json:"enabled,omitempty"` + Bucket int64 `protobuf:"varint,1,opt,name=bucket,proto3" json:"bucket,omitempty"` + Low float64 `protobuf:"fixed64,2,opt,name=low,proto3" json:"low,omitempty"` + High float64 `protobuf:"fixed64,3,opt,name=high,proto3" json:"high,omitempty"` + Present bool `protobuf:"varint,4,opt,name=present,proto3" json:"present,omitempty"` } -func (x *MetricsView_Dimension) Reset() { - *x = MetricsView_Dimension{} +func (x *NumericOutliers_Outlier) Reset() { + *x = NumericOutliers_Outlier{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[120] + mi := &file_rill_runtime_v1_api_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MetricsView_Dimension) String() string { +func (x *NumericOutliers_Outlier) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MetricsView_Dimension) ProtoMessage() {} +func (*NumericOutliers_Outlier) ProtoMessage() {} -func (x *MetricsView_Dimension) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[120] +func (x *NumericOutliers_Outlier) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8130,70 +7501,66 @@ func (x *MetricsView_Dimension) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MetricsView_Dimension.ProtoReflect.Descriptor instead. -func (*MetricsView_Dimension) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{34, 0} +// Deprecated: Use NumericOutliers_Outlier.ProtoReflect.Descriptor instead. +func (*NumericOutliers_Outlier) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{77, 0} } -func (x *MetricsView_Dimension) GetName() string { +func (x *NumericOutliers_Outlier) GetBucket() int64 { if x != nil { - return x.Name + return x.Bucket } - return "" + return 0 } -func (x *MetricsView_Dimension) GetLabel() string { +func (x *NumericOutliers_Outlier) GetLow() float64 { if x != nil { - return x.Label + return x.Low } - return "" + return 0 } -func (x *MetricsView_Dimension) GetDescription() string { +func (x *NumericOutliers_Outlier) GetHigh() float64 { if x != nil { - return x.Description + return x.High } - return "" + return 0 } -func (x *MetricsView_Dimension) GetEnabled() string { +func (x *NumericOutliers_Outlier) GetPresent() bool { if x != nil { - return x.Enabled + return x.Present } - return "" + return false } -// Measures are aggregated computed values -type MetricsView_Measure struct { +type TopK_TopKEntry struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"` - Expression string `protobuf:"bytes,3,opt,name=expression,proto3" json:"expression,omitempty"` - Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` - Format string `protobuf:"bytes,5,opt,name=format,proto3" json:"format,omitempty"` - Enabled string `protobuf:"bytes,6,opt,name=enabled,proto3" json:"enabled,omitempty"` + // value is optional so that null values from the database can be represented. + Value *string `protobuf:"bytes,1,opt,name=value,proto3,oneof" json:"value,omitempty"` + Count float64 `protobuf:"fixed64,2,opt,name=count,proto3" json:"count,omitempty"` } -func (x *MetricsView_Measure) Reset() { - *x = MetricsView_Measure{} +func (x *TopK_TopKEntry) Reset() { + *x = TopK_TopKEntry{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[121] + mi := &file_rill_runtime_v1_api_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } -func (x *MetricsView_Measure) String() string { +func (x *TopK_TopKEntry) String() string { return protoimpl.X.MessageStringOf(x) } -func (*MetricsView_Measure) ProtoMessage() {} +func (*TopK_TopKEntry) ProtoMessage() {} -func (x *MetricsView_Measure) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[121] +func (x *TopK_TopKEntry) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_api_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8204,360 +7571,23 @@ func (x *MetricsView_Measure) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use MetricsView_Measure.ProtoReflect.Descriptor instead. -func (*MetricsView_Measure) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{34, 1} +// Deprecated: Use TopK_TopKEntry.ProtoReflect.Descriptor instead. +func (*TopK_TopKEntry) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{79, 0} } -func (x *MetricsView_Measure) GetName() string { - if x != nil { - return x.Name +func (x *TopK_TopKEntry) GetValue() string { + if x != nil && x.Value != nil { + return *x.Value } return "" } -func (x *MetricsView_Measure) GetLabel() string { +func (x *TopK_TopKEntry) GetCount() float64 { if x != nil { - return x.Label + return x.Count } - return "" -} - -func (x *MetricsView_Measure) GetExpression() string { - if x != nil { - return x.Expression - } - return "" -} - -func (x *MetricsView_Measure) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - -func (x *MetricsView_Measure) GetFormat() string { - if x != nil { - return x.Format - } - return "" -} - -func (x *MetricsView_Measure) GetEnabled() string { - if x != nil { - return x.Enabled - } - return "" -} - -// CharLocation is a line and column in a code artifact -type MigrationError_CharLocation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Line uint32 `protobuf:"varint,1,opt,name=line,proto3" json:"line,omitempty"` - Column uint32 `protobuf:"varint,2,opt,name=column,proto3" json:"column,omitempty"` -} - -func (x *MigrationError_CharLocation) Reset() { - *x = MigrationError_CharLocation{} - if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[122] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MigrationError_CharLocation) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MigrationError_CharLocation) ProtoMessage() {} - -func (x *MigrationError_CharLocation) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[122] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MigrationError_CharLocation.ProtoReflect.Descriptor instead. -func (*MigrationError_CharLocation) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{45, 0} -} - -func (x *MigrationError_CharLocation) GetLine() uint32 { - if x != nil { - return x.Line - } - return 0 -} - -func (x *MigrationError_CharLocation) GetColumn() uint32 { - if x != nil { - return x.Column - } - return 0 -} - -type MetricsViewFilter_Cond struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - In []*structpb.Value `protobuf:"bytes,2,rep,name=in,proto3" json:"in,omitempty"` - Like []*structpb.Value `protobuf:"bytes,3,rep,name=like,proto3" json:"like,omitempty"` -} - -func (x *MetricsViewFilter_Cond) Reset() { - *x = MetricsViewFilter_Cond{} - if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[123] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MetricsViewFilter_Cond) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MetricsViewFilter_Cond) ProtoMessage() {} - -func (x *MetricsViewFilter_Cond) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[123] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use MetricsViewFilter_Cond.ProtoReflect.Descriptor instead. -func (*MetricsViewFilter_Cond) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{69, 0} -} - -func (x *MetricsViewFilter_Cond) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *MetricsViewFilter_Cond) GetIn() []*structpb.Value { - if x != nil { - return x.In - } - return nil -} - -func (x *MetricsViewFilter_Cond) GetLike() []*structpb.Value { - if x != nil { - return x.Like - } - return nil -} - -type TimeRangeSummary_Interval struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Months int32 `protobuf:"varint,1,opt,name=months,proto3" json:"months,omitempty"` - Days int32 `protobuf:"varint,2,opt,name=days,proto3" json:"days,omitempty"` - Micros int64 `protobuf:"varint,3,opt,name=micros,proto3" json:"micros,omitempty"` -} - -func (x *TimeRangeSummary_Interval) Reset() { - *x = TimeRangeSummary_Interval{} - if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[124] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *TimeRangeSummary_Interval) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TimeRangeSummary_Interval) ProtoMessage() {} - -func (x *TimeRangeSummary_Interval) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[124] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TimeRangeSummary_Interval.ProtoReflect.Descriptor instead. -func (*TimeRangeSummary_Interval) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{82, 0} -} - -func (x *TimeRangeSummary_Interval) GetMonths() int32 { - if x != nil { - return x.Months - } - return 0 -} - -func (x *TimeRangeSummary_Interval) GetDays() int32 { - if x != nil { - return x.Days - } - return 0 -} - -func (x *TimeRangeSummary_Interval) GetMicros() int64 { - if x != nil { - return x.Micros - } - return 0 -} - -type NumericOutliers_Outlier struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Bucket int64 `protobuf:"varint,1,opt,name=bucket,proto3" json:"bucket,omitempty"` - Low float64 `protobuf:"fixed64,2,opt,name=low,proto3" json:"low,omitempty"` - High float64 `protobuf:"fixed64,3,opt,name=high,proto3" json:"high,omitempty"` - Present bool `protobuf:"varint,4,opt,name=present,proto3" json:"present,omitempty"` -} - -func (x *NumericOutliers_Outlier) Reset() { - *x = NumericOutliers_Outlier{} - if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[125] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *NumericOutliers_Outlier) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NumericOutliers_Outlier) ProtoMessage() {} - -func (x *NumericOutliers_Outlier) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[125] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use NumericOutliers_Outlier.ProtoReflect.Descriptor instead. -func (*NumericOutliers_Outlier) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{83, 0} -} - -func (x *NumericOutliers_Outlier) GetBucket() int64 { - if x != nil { - return x.Bucket - } - return 0 -} - -func (x *NumericOutliers_Outlier) GetLow() float64 { - if x != nil { - return x.Low - } - return 0 -} - -func (x *NumericOutliers_Outlier) GetHigh() float64 { - if x != nil { - return x.High - } - return 0 -} - -func (x *NumericOutliers_Outlier) GetPresent() bool { - if x != nil { - return x.Present - } - return false -} - -type TopK_TopKEntry struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // value is optional so that null values from the database can be represented. - Value *string `protobuf:"bytes,1,opt,name=value,proto3,oneof" json:"value,omitempty"` - Count float64 `protobuf:"fixed64,2,opt,name=count,proto3" json:"count,omitempty"` -} - -func (x *TopK_TopKEntry) Reset() { - *x = TopK_TopKEntry{} - if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[126] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *TopK_TopKEntry) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TopK_TopKEntry) ProtoMessage() {} - -func (x *TopK_TopKEntry) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[126] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use TopK_TopKEntry.ProtoReflect.Descriptor instead. -func (*TopK_TopKEntry) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{85, 0} -} - -func (x *TopK_TopKEntry) GetValue() string { - if x != nil && x.Value != nil { - return *x.Value - } - return "" -} - -func (x *TopK_TopKEntry) GetCount() float64 { - if x != nil { - return x.Count - } - return 0 + return 0 } type NumericHistogramBins_Bin struct { @@ -8574,7 +7604,7 @@ type NumericHistogramBins_Bin struct { func (x *NumericHistogramBins_Bin) Reset() { *x = NumericHistogramBins_Bin{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[127] + mi := &file_rill_runtime_v1_api_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8587,7 +7617,7 @@ func (x *NumericHistogramBins_Bin) String() string { func (*NumericHistogramBins_Bin) ProtoMessage() {} func (x *NumericHistogramBins_Bin) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[127] + mi := &file_rill_runtime_v1_api_proto_msgTypes[116] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8600,7 +7630,7 @@ func (x *NumericHistogramBins_Bin) ProtoReflect() protoreflect.Message { // Deprecated: Use NumericHistogramBins_Bin.ProtoReflect.Descriptor instead. func (*NumericHistogramBins_Bin) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{93, 0} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{87, 0} } func (x *NumericHistogramBins_Bin) GetBucket() int64 { @@ -8642,7 +7672,7 @@ type GenerateTimeSeriesRequest_BasicMeasures struct { func (x *GenerateTimeSeriesRequest_BasicMeasures) Reset() { *x = GenerateTimeSeriesRequest_BasicMeasures{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[128] + mi := &file_rill_runtime_v1_api_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8655,7 +7685,7 @@ func (x *GenerateTimeSeriesRequest_BasicMeasures) String() string { func (*GenerateTimeSeriesRequest_BasicMeasures) ProtoMessage() {} func (x *GenerateTimeSeriesRequest_BasicMeasures) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[128] + mi := &file_rill_runtime_v1_api_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8668,7 +7698,7 @@ func (x *GenerateTimeSeriesRequest_BasicMeasures) ProtoReflect() protoreflect.Me // Deprecated: Use GenerateTimeSeriesRequest_BasicMeasures.ProtoReflect.Descriptor instead. func (*GenerateTimeSeriesRequest_BasicMeasures) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{97, 0} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{91, 0} } func (x *GenerateTimeSeriesRequest_BasicMeasures) GetBasicMeasures() []*BasicMeasureDefinition { @@ -8689,7 +7719,7 @@ type MetricsViewDimensionValue_Values struct { func (x *MetricsViewDimensionValue_Values) Reset() { *x = MetricsViewDimensionValue_Values{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[129] + mi := &file_rill_runtime_v1_api_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8702,7 +7732,7 @@ func (x *MetricsViewDimensionValue_Values) String() string { func (*MetricsViewDimensionValue_Values) ProtoMessage() {} func (x *MetricsViewDimensionValue_Values) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[129] + mi := &file_rill_runtime_v1_api_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8715,7 +7745,7 @@ func (x *MetricsViewDimensionValue_Values) ProtoReflect() protoreflect.Message { // Deprecated: Use MetricsViewDimensionValue_Values.ProtoReflect.Descriptor instead. func (*MetricsViewDimensionValue_Values) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{100, 0} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{94, 0} } func (x *MetricsViewDimensionValue_Values) GetValues() []*structpb.Value { @@ -8736,7 +7766,7 @@ type TimeSeriesResponse_TimeSeriesValues struct { func (x *TimeSeriesResponse_TimeSeriesValues) Reset() { *x = TimeSeriesResponse_TimeSeriesValues{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[130] + mi := &file_rill_runtime_v1_api_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8749,7 +7779,7 @@ func (x *TimeSeriesResponse_TimeSeriesValues) String() string { func (*TimeSeriesResponse_TimeSeriesValues) ProtoMessage() {} func (x *TimeSeriesResponse_TimeSeriesValues) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[130] + mi := &file_rill_runtime_v1_api_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8762,7 +7792,7 @@ func (x *TimeSeriesResponse_TimeSeriesValues) ProtoReflect() protoreflect.Messag // Deprecated: Use TimeSeriesResponse_TimeSeriesValues.ProtoReflect.Descriptor instead. func (*TimeSeriesResponse_TimeSeriesValues) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{102, 0} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{96, 0} } func (x *TimeSeriesResponse_TimeSeriesValues) GetValues() []*TimeSeriesValue { @@ -8799,7 +7829,7 @@ type Connector_Property struct { func (x *Connector_Property) Reset() { *x = Connector_Property{} if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[132] + mi := &file_rill_runtime_v1_api_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -8812,7 +7842,7 @@ func (x *Connector_Property) String() string { func (*Connector_Property) ProtoMessage() {} func (x *Connector_Property) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[132] + mi := &file_rill_runtime_v1_api_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -8825,7 +7855,7 @@ func (x *Connector_Property) ProtoReflect() protoreflect.Message { // Deprecated: Use Connector_Property.ProtoReflect.Descriptor instead. func (*Connector_Property) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{114, 0} + return file_rill_runtime_v1_api_proto_rawDescGZIP(), []int{108, 0} } func (x *Connector_Property) GetKey() string { @@ -8884,2049 +7914,1822 @@ func (x *Connector_Property) GetHref() string { return "" } -type StructType_Field struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Type *Type `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` -} - -func (x *StructType_Field) Reset() { - *x = StructType_Field{} - if protoimpl.UnsafeEnabled { - mi := &file_runtime_proto_msgTypes[133] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *StructType_Field) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StructType_Field) ProtoMessage() {} - -func (x *StructType_Field) ProtoReflect() protoreflect.Message { - mi := &file_runtime_proto_msgTypes[133] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use StructType_Field.ProtoReflect.Descriptor instead. -func (*StructType_Field) Descriptor() ([]byte, []int) { - return file_runtime_proto_rawDescGZIP(), []int{118, 0} -} - -func (x *StructType_Field) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *StructType_Field) GetType() *Type { - if x != nil { - return x.Type - } - return nil -} - -var File_runtime_proto protoreflect.FileDescriptor - -var file_runtime_proto_rawDesc = []byte{ - 0x0a, 0x0d, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x0f, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, - 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, - 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x0d, 0x0a, - 0x0b, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x58, 0x0a, 0x0c, - 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x49, 0x0a, 0x04, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x17, - 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, - 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, - 0x6e, 0x22, 0x4e, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, - 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, - 0x6e, 0x22, 0x68, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x05, 0x72, 0x65, - 0x70, 0x6f, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, - 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, - 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x29, 0x0a, 0x0e, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, - 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x22, 0x3c, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, - 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x72, 0x65, 0x70, - 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x04, - 0x72, 0x65, 0x70, 0x6f, 0x22, 0x56, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x70, - 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, - 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x22, 0x3f, 0x0a, 0x12, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, +var File_rill_runtime_v1_api_proto protoreflect.FileDescriptor + +var file_rill_runtime_v1_api_proto_rawDesc = []byte{ + 0x0a, 0x19, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x76, + 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x1a, 0x1c, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x72, 0x69, 0x6c, 0x6c, 0x2f, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, + 0x6f, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x0d, 0x0a, 0x0b, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x58, 0x0a, 0x0c, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x2e, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x22, + 0x49, 0x0a, 0x04, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x22, 0x4e, 0x0a, 0x10, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, + 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, + 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x68, 0x0a, 0x11, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x2b, 0x0a, 0x05, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x05, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x12, 0x26, 0x0a, 0x0f, + 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x29, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x22, + 0x3c, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x22, 0x2c, 0x0a, - 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x22, 0x56, 0x0a, + 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x3f, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x67, 0x6c, 0x6f, 0x62, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x67, 0x6c, - 0x6f, 0x62, 0x22, 0x29, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x22, 0x3d, 0x0a, - 0x0e, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x17, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x60, 0x0a, 0x0f, - 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x62, 0x6c, 0x6f, 0x62, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, - 0x6c, 0x6f, 0x62, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0x8a, - 0x01, 0x0a, 0x0e, 0x50, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, - 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, - 0x0a, 0x04, 0x62, 0x6c, 0x6f, 0x62, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6c, - 0x6f, 0x62, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x06, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x2e, 0x0a, 0x0f, 0x50, - 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, - 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x22, 0x40, 0x0a, 0x11, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x14, 0x0a, - 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x62, 0x0a, 0x11, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, - 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x12, 0x17, - 0x0a, 0x07, 0x74, 0x6f, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x74, 0x6f, 0x50, 0x61, 0x74, 0x68, 0x22, 0x14, 0x0a, 0x12, 0x52, 0x65, 0x6e, 0x61, 0x6d, - 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb9, 0x01, - 0x0a, 0x08, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, - 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, - 0x70, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x78, 0x70, - 0x6f, 0x73, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x5f, 0x63, 0x61, - 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x65, 0x6d, 0x62, - 0x65, 0x64, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x22, 0x52, 0x0a, 0x14, 0x4c, 0x69, 0x73, - 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, - 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x78, 0x0a, - 0x15, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, - 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, - 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, - 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x35, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, - 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x22, 0x4c, - 0x0a, 0x13, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0xc6, 0x01, 0x0a, - 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, + 0x52, 0x03, 0x64, 0x73, 0x6e, 0x22, 0x3f, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x04, 0x72, + 0x65, 0x70, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x70, 0x6f, + 0x52, 0x04, 0x72, 0x65, 0x70, 0x6f, 0x22, 0x2c, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x72, + 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, + 0x70, 0x6f, 0x49, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, + 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0x0a, 0x10, 0x4c, 0x69, + 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, + 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x67, 0x6c, 0x6f, 0x62, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x67, 0x6c, 0x6f, 0x62, 0x22, 0x29, 0x0a, 0x11, 0x4c, + 0x69, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x05, 0x70, 0x61, 0x74, 0x68, 0x73, 0x22, 0x3d, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, + 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x60, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6c, 0x6f, 0x62, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6c, 0x6f, 0x62, 0x12, 0x39, 0x0a, 0x0a, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0x8a, 0x01, 0x0a, 0x0e, 0x50, 0x75, 0x74, 0x46, + 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, + 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x70, + 0x6f, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6c, 0x6f, 0x62, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6c, 0x6f, 0x62, 0x12, 0x16, 0x0a, 0x06, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, + 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x2e, 0x0a, 0x0f, 0x50, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, + 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, + 0x50, 0x61, 0x74, 0x68, 0x22, 0x40, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, + 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x70, + 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, + 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x62, 0x0a, 0x11, + 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x72, + 0x6f, 0x6d, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, + 0x72, 0x6f, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6f, 0x5f, 0x70, 0x61, + 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6f, 0x50, 0x61, 0x74, 0x68, + 0x22, 0x14, 0x0a, 0x12, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xb9, 0x01, 0x0a, 0x08, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, + 0x64, 0x73, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x23, + 0x0a, 0x0d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, + 0x66, 0x69, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x12, 0x23, 0x0a, + 0x0d, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x43, 0x61, 0x74, 0x61, 0x6c, + 0x6f, 0x67, 0x22, 0x52, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x61, + 0x67, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, + 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x5f, + 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x61, 0x67, + 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x78, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x37, 0x0a, 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, + 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, + 0x22, 0x35, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, - 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, - 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, - 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, - 0x69, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, - 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, - 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, - 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x43, 0x61, - 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x22, 0x70, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x22, 0x4c, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x35, + 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0xc6, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, - 0x12, 0x35, 0x0a, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x38, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, - 0x64, 0x22, 0x18, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd9, 0x04, 0x0a, 0x0d, - 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x37, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, - 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2c, 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x05, 0x6d, 0x6f, - 0x64, 0x65, 0x6c, 0x12, 0x3f, 0x0a, 0x0c, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x76, - 0x69, 0x65, 0x77, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x56, 0x69, 0x65, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x39, 0x0a, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x4f, 0x6e, 0x12, 0x3d, 0x0a, 0x0c, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x65, 0x64, 0x5f, - 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x65, 0x64, 0x4f, - 0x6e, 0x22, 0x64, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, - 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x02, - 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x10, 0x03, - 0x12, 0x15, 0x0a, 0x11, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x53, - 0x5f, 0x56, 0x49, 0x45, 0x57, 0x10, 0x04, 0x22, 0x6a, 0x0a, 0x05, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x6e, - 0x61, 0x67, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6d, 0x61, 0x6e, 0x61, - 0x67, 0x65, 0x64, 0x22, 0xba, 0x01, 0x0a, 0x06, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, - 0x12, 0x37, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x0a, 0x70, - 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x33, 0x0a, 0x06, 0x73, 0x63, 0x68, - 0x65, 0x6d, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x10, - 0x0a, 0x03, 0x73, 0x71, 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x71, 0x6c, - 0x22, 0xd4, 0x01, 0x0a, 0x05, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, - 0x0a, 0x03, 0x73, 0x71, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x71, 0x6c, - 0x12, 0x38, 0x0a, 0x07, 0x64, 0x69, 0x61, 0x6c, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, 0x69, 0x61, 0x6c, 0x65, 0x63, - 0x74, 0x52, 0x07, 0x64, 0x69, 0x61, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x33, 0x0a, 0x06, 0x73, 0x63, - 0x68, 0x65, 0x6d, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, - 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x22, - 0x36, 0x0a, 0x07, 0x44, 0x69, 0x61, 0x6c, 0x65, 0x63, 0x74, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x49, - 0x41, 0x4c, 0x45, 0x43, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x49, 0x41, 0x4c, 0x45, 0x43, 0x54, 0x5f, 0x44, - 0x55, 0x43, 0x4b, 0x44, 0x42, 0x10, 0x01, 0x22, 0xa4, 0x04, 0x0a, 0x0b, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x66, - 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, - 0x25, 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x69, 0x6d, 0x65, 0x44, 0x69, 0x6d, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x67, - 0x72, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x69, 0x6d, - 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x0a, 0x64, 0x69, 0x6d, 0x65, 0x6e, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x2e, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, - 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, - 0x40, 0x0a, 0x08, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x2e, - 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, - 0x73, 0x1a, 0x71, 0x0a, 0x09, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x64, 0x1a, 0xa7, 0x01, 0x0a, 0x07, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, - 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, - 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, - 0x72, 0x6d, 0x61, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x75, - 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x37, 0x0a, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x74, - 0x61, 0x6c, 0x6f, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x56, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, - 0x61, 0x6c, 0x6f, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x22, 0x4e, 0x0a, - 0x17, 0x47, 0x65, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, + 0x12, 0x16, 0x0a, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x73, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x64, 0x73, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x72, 0x65, 0x66, 0x69, 0x78, 0x12, + 0x18, 0x0a, 0x07, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x07, 0x65, 0x78, 0x70, 0x6f, 0x73, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6d, 0x62, + 0x65, 0x64, 0x5f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0c, 0x65, 0x6d, 0x62, 0x65, 0x64, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x22, 0x70, + 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x52, 0x0a, - 0x18, 0x47, 0x65, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x6f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x74, 0x61, - 0x6c, 0x6f, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x6f, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x22, 0x4c, 0x0a, 0x15, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x66, 0x72, - 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x08, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x49, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x08, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x22, 0x38, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x22, 0x18, 0x0a, 0x16, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd9, 0x04, 0x0a, 0x0d, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x37, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x2c, 0x0a, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x05, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x2f, 0x0a, + 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2c, + 0x0a, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x52, 0x05, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x12, 0x3f, 0x0a, 0x0c, + 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, + 0x52, 0x0b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, + 0x5f, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, + 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x09, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x4f, 0x6e, 0x12, 0x3d, 0x0a, 0x0c, 0x72, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x65, 0x64, 0x5f, 0x6f, 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x0b, 0x72, + 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x65, 0x64, 0x4f, 0x6e, 0x22, 0x64, 0x0a, 0x04, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x4c, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x53, 0x5f, 0x56, 0x49, 0x45, 0x57, 0x10, 0x04, + 0x22, 0x75, 0x0a, 0x19, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, + 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x37, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x2e, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x56, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x07, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x22, + 0x4e, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, - 0x18, 0x0a, 0x16, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, - 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x0a, 0x12, 0x54, 0x72, 0x69, - 0x67, 0x67, 0x65, 0x72, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, - 0x22, 0xd2, 0x01, 0x0a, 0x13, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x53, 0x79, 0x6e, 0x63, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2e, 0x0a, - 0x13, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x61, 0x64, 0x64, 0x65, 0x64, 0x5f, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x6f, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x73, 0x41, 0x64, 0x64, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x32, 0x0a, - 0x15, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x6f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x32, 0x0a, 0x15, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x72, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x13, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, - 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x99, 0x01, 0x0a, 0x0e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x70, - 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, - 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x5f, 0x70, 0x61, - 0x74, 0x68, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x72, 0x79, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x64, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, - 0x69, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, - 0x74, 0x22, 0x71, 0x0a, 0x0f, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x25, 0x0a, - 0x0e, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, - 0x61, 0x74, 0x68, 0x73, 0x22, 0x81, 0x04, 0x0a, 0x0e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x38, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, - 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x66, - 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x70, - 0x65, 0x72, 0x74, 0x79, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x50, 0x61, 0x74, 0x68, 0x12, 0x53, 0x0a, - 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x0c, 0x65, 0x6e, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x4c, 0x6f, - 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x1a, 0x3a, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x72, 0x4c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x22, - 0x77, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x44, 0x45, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, - 0x0b, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x10, 0x01, 0x12, 0x13, - 0x0a, 0x0f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x44, 0x45, 0x50, 0x45, - 0x4e, 0x44, 0x45, 0x4e, 0x43, 0x59, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x44, 0x45, - 0x5f, 0x4f, 0x4c, 0x41, 0x50, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x4f, 0x44, 0x45, 0x5f, - 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x05, 0x22, 0xaf, 0x01, 0x0a, 0x14, 0x4d, 0x69, 0x67, - 0x72, 0x61, 0x74, 0x65, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x52, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x06, 0x6f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, + 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x06, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x22, 0x4c, 0x0a, 0x15, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, + 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x18, 0x0a, 0x16, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x66, 0x72, + 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x0a, 0x12, 0x54, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x71, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x73, 0x71, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x72, 0x79, 0x5f, 0x72, 0x75, 0x6e, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x12, 0x2a, 0x0a, - 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x4f, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x65, 0x6e, - 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x22, 0x17, 0x0a, 0x15, 0x4d, 0x69, - 0x67, 0x72, 0x61, 0x74, 0x65, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x0a, 0x14, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x22, 0x17, 0x0a, 0x15, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdf, 0x01, 0x0a, 0x18, 0x50, 0x75, - 0x74, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, - 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, - 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6c, 0x6f, 0x62, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x62, 0x6c, 0x6f, 0x62, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x6e, 0x6c, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, - 0x64, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x22, 0x7b, 0x0a, 0x19, 0x50, - 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, - 0x74, 0x68, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x66, 0x66, 0x65, 0x63, - 0x74, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x22, 0x95, 0x01, 0x0a, 0x1b, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, + 0x49, 0x64, 0x22, 0xd2, 0x01, 0x0a, 0x13, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x53, 0x79, + 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x0c, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x2e, 0x0a, 0x13, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x61, 0x64, 0x64, 0x65, 0x64, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x6f, 0x62, + 0x6a, 0x65, 0x63, 0x74, 0x73, 0x41, 0x64, 0x64, 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, + 0x32, 0x0a, 0x15, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, + 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x32, 0x0a, 0x15, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x5f, 0x72, + 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0d, 0x52, 0x13, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0x65, 0x64, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x99, 0x01, 0x0a, 0x0e, 0x4d, 0x69, 0x67, 0x72, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x72, + 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, + 0x70, 0x6f, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x5f, + 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x72, 0x79, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x64, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, + 0x74, 0x72, 0x69, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x72, + 0x69, 0x63, 0x74, 0x22, 0x71, 0x0a, 0x0f, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, + 0x25, 0x0a, 0x0e, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x22, 0x81, 0x04, 0x0a, 0x0e, 0x4d, 0x69, 0x67, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x38, 0x0a, 0x04, 0x63, 0x6f, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, + 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, + 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, + 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x50, 0x61, 0x74, 0x68, 0x12, + 0x53, 0x0a, 0x0e, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4f, 0x0a, 0x0c, 0x65, 0x6e, 0x64, 0x5f, 0x6c, 0x6f, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x2e, 0x43, 0x68, 0x61, 0x72, + 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x3a, 0x0a, 0x0c, 0x43, 0x68, 0x61, 0x72, 0x4c, 0x6f, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6c, + 0x75, 0x6d, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x63, 0x6f, 0x6c, 0x75, 0x6d, + 0x6e, 0x22, 0x77, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x44, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x0f, 0x0a, 0x0b, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x59, 0x4e, 0x54, 0x41, 0x58, 0x10, 0x01, + 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, + 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x44, 0x45, + 0x50, 0x45, 0x4e, 0x44, 0x45, 0x4e, 0x43, 0x59, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, + 0x44, 0x45, 0x5f, 0x4f, 0x4c, 0x41, 0x50, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x4f, 0x44, + 0x45, 0x5f, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x10, 0x05, 0x22, 0xaf, 0x01, 0x0a, 0x14, 0x4d, + 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x71, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x73, 0x71, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x72, 0x79, 0x5f, 0x72, 0x75, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x12, + 0x2a, 0x0a, 0x11, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x72, 0x5f, 0x72, 0x65, 0x70, + 0x6c, 0x61, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x4f, 0x72, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x72, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x6f, 0x6d, 0x22, 0x17, 0x0a, 0x15, + 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x0a, 0x14, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, + 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xdf, 0x01, 0x0a, 0x18, + 0x50, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x72, 0x79, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x03, 0x64, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, - 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, - 0x22, 0x7e, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, - 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x37, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x66, 0x66, - 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0d, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, - 0x22, 0xb7, 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x41, - 0x6e, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x72, - 0x6f, 0x6d, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, - 0x72, 0x6f, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6f, 0x5f, 0x70, 0x61, - 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6f, 0x50, 0x61, 0x74, 0x68, - 0x12, 0x10, 0x0a, 0x03, 0x64, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x64, - 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x22, 0x7e, 0x0a, 0x1c, 0x52, 0x65, - 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, + 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6c, 0x6f, 0x62, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6c, 0x6f, 0x62, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x5f, 0x6f, 0x6e, 0x6c, + 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, + 0x6e, 0x6c, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x72, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x03, 0x64, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x22, 0x7b, 0x0a, + 0x19, 0x50, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x66, 0x66, - 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x22, 0xa2, 0x01, 0x0a, 0x0c, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, - 0x73, 0x71, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x71, 0x6c, 0x12, 0x2a, - 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x72, 0x79, 0x5f, 0x72, 0x75, - 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x22, - 0x6d, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x2f, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x6d, 0x65, 0x74, - 0x61, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xa8, - 0x01, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x71, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x71, 0x6c, 0x12, 0x2a, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, - 0x61, 0x72, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, - 0x12, 0x17, 0x0a, 0x07, 0x64, 0x72, 0x79, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x22, 0x73, 0x0a, 0x13, 0x51, 0x75, 0x65, - 0x72, 0x79, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x2f, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x6d, 0x65, 0x74, - 0x61, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x65, - 0x0a, 0x16, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x4d, 0x65, 0x74, - 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, - 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xf0, 0x01, 0x0a, 0x17, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x56, 0x69, 0x65, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x76, 0x69, 0x65, - 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, - 0x0b, 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x66, 0x72, 0x6f, 0x6d, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x46, - 0x0a, 0x0a, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, - 0x2e, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x64, 0x69, 0x6d, 0x65, - 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x08, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, - 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x2e, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x52, 0x08, - 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x73, 0x22, 0xc6, 0x03, 0x0a, 0x19, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x54, 0x6f, 0x70, 0x6c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x69, 0x6d, - 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x65, - 0x61, 0x73, 0x75, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x0c, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, - 0x39, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, - 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x74, 0x69, - 0x6d, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, - 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, - 0x34, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, 0x6f, 0x72, 0x74, 0x52, - 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x3a, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, - 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, - 0x69, 0x65, 0x77, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x22, 0x81, 0x01, 0x0a, 0x1a, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, - 0x77, 0x54, 0x6f, 0x70, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x36, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6c, 0x75, - 0x6d, 0x6e, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe9, 0x02, 0x0a, 0x1c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x56, 0x69, 0x65, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x4e, - 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x65, 0x61, 0x73, - 0x75, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, - 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x69, - 0x6d, 0x65, 0x5f, 0x67, 0x72, 0x61, 0x6e, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x69, 0x6d, 0x65, 0x47, 0x72, 0x61, 0x6e, 0x75, 0x6c, - 0x61, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3a, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, - 0x69, 0x65, 0x77, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x22, 0x84, 0x01, 0x0a, 0x1d, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, - 0x77, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x43, - 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xba, 0x02, 0x0a, 0x18, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x4e, 0x61, + 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x22, 0x95, 0x01, 0x0a, 0x1b, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x67, 0x72, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, + 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x70, + 0x6f, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x72, 0x79, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x64, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, + 0x72, 0x69, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, + 0x63, 0x74, 0x22, 0x7e, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, + 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x52, 0x06, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, + 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x74, + 0x68, 0x73, 0x22, 0xb7, 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, + 0x65, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x70, 0x6f, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, + 0x66, 0x72, 0x6f, 0x6d, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x08, 0x66, 0x72, 0x6f, 0x6d, 0x50, 0x61, 0x74, 0x68, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6f, 0x5f, + 0x70, 0x61, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6f, 0x50, 0x61, + 0x74, 0x68, 0x12, 0x10, 0x0a, 0x03, 0x64, 0x72, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x03, 0x64, 0x72, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x72, 0x69, 0x63, 0x74, 0x22, 0x7e, 0x0a, 0x1c, + 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x67, + 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x06, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x06, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, + 0x64, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x61, + 0x66, 0x66, 0x65, 0x63, 0x74, 0x65, 0x64, 0x50, 0x61, 0x74, 0x68, 0x73, 0x22, 0xa2, 0x01, 0x0a, + 0x0c, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, + 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x10, + 0x0a, 0x03, 0x73, 0x71, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x71, 0x6c, + 0x12, 0x2a, 0x0a, 0x04, 0x61, 0x72, 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, + 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, + 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x72, 0x79, 0x5f, + 0x72, 0x75, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, + 0x6e, 0x22, 0x6d, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x6d, + 0x65, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x22, 0xa8, 0x01, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x71, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x71, 0x6c, 0x12, 0x2a, 0x0a, 0x04, 0x61, 0x72, + 0x67, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x04, 0x61, 0x72, 0x67, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, + 0x74, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x64, 0x72, 0x79, 0x5f, 0x72, 0x75, 0x6e, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x06, 0x64, 0x72, 0x79, 0x52, 0x75, 0x6e, 0x22, 0x73, 0x0a, 0x13, 0x51, + 0x75, 0x65, 0x72, 0x79, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x6d, + 0x65, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x22, 0xc6, 0x03, 0x0a, 0x19, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, + 0x54, 0x6f, 0x70, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, + 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, + 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x64, + 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x65, 0x61, 0x73, 0x75, + 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x39, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, - 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, - 0x72, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x05, + 0x72, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x80, 0x01, 0x0a, 0x19, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x56, 0x69, 0x65, 0x77, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x43, - 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, - 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x43, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x09, 0x61, 0x73, 0x63, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x9f, 0x02, - 0x0a, 0x11, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x46, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x41, 0x0a, 0x07, 0x69, 0x6e, 0x63, - 0x6c, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, - 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x43, - 0x6f, 0x6e, 0x64, 0x52, 0x07, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x12, 0x41, 0x0a, 0x07, - 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x12, + 0x16, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x12, 0x34, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, + 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, + 0x69, 0x65, 0x77, 0x53, 0x6f, 0x72, 0x74, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x12, 0x3a, 0x0a, + 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x46, 0x69, 0x6c, 0x74, 0x65, - 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x52, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x1a, - 0x6e, 0x0a, 0x04, 0x43, 0x6f, 0x6e, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x02, 0x69, - 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x02, 0x69, 0x6e, 0x12, 0x2a, 0x0a, 0x04, 0x6c, 0x69, 0x6b, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6c, 0x69, 0x6b, 0x65, 0x22, - 0x57, 0x0a, 0x11, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, - 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, - 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, - 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x22, 0x80, 0x01, 0x0a, 0x1d, 0x45, 0x73, 0x74, - 0x69, 0x6d, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x76, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, - 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x1e, - 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x49, 0x6e, - 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x81, 0x01, 0x0a, 0x1a, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x54, 0x6f, 0x70, 0x6c, 0x69, 0x73, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x6d, 0x65, 0x74, 0x61, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x04, 0x6d, 0x65, 0x74, 0x61, + 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xe9, 0x02, + 0x0a, 0x1c, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x54, 0x69, 0x6d, + 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, + 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, + 0x2a, 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6d, + 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x12, 0x39, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x74, + 0x69, 0x6d, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x36, - 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, 0x52, 0x08, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0x95, 0x02, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, - 0x56, 0x0a, 0x13, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x48, 0x00, 0x52, 0x12, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, - 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x4a, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x65, 0x72, - 0x69, 0x63, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x48, 0x00, 0x52, 0x0e, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x53, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x79, 0x12, 0x51, 0x0a, 0x12, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, - 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x79, 0x48, 0x00, 0x52, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x53, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x65, 0x22, 0x6d, - 0x0a, 0x12, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x75, 0x6d, - 0x6d, 0x61, 0x72, 0x79, 0x12, 0x2b, 0x0a, 0x04, 0x74, 0x6f, 0x70, 0x4b, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x70, 0x4b, 0x48, 0x00, 0x52, 0x04, 0x74, 0x6f, 0x70, - 0x4b, 0x12, 0x22, 0x0a, 0x0b, 0x63, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x0b, 0x63, 0x61, 0x72, 0x64, 0x69, 0x6e, - 0x61, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x06, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x65, 0x22, 0x76, 0x0a, - 0x1e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4f, - 0x66, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x54, 0x0a, 0x13, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, - 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x52, 0x12, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x75, - 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x67, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x4b, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x13, 0x63, 0x61, 0x74, 0x65, - 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, - 0x63, 0x61, 0x6c, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x12, 0x63, 0x61, 0x74, 0x65, - 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x9b, - 0x02, 0x0a, 0x0e, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x12, 0x5d, 0x0a, 0x16, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x68, 0x69, 0x73, - 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x62, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x67, 0x72, 0x61, 0x6d, 0x42, 0x69, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x14, 0x6e, 0x75, 0x6d, 0x65, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, + 0x6e, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x67, 0x72, 0x61, 0x6e, 0x75, + 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x69, + 0x6d, 0x65, 0x47, 0x72, 0x61, 0x6e, 0x75, 0x6c, 0x61, 0x72, 0x69, 0x74, 0x79, 0x12, 0x3a, 0x0a, + 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x46, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x84, 0x01, 0x0a, 0x1d, 0x4d, 0x65, + 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, + 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x6d, + 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x04, 0x6d, + 0x65, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x22, 0xba, 0x02, 0x0a, 0x18, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, + 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, + 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x2a, + 0x0a, 0x11, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x65, + 0x61, 0x73, 0x75, 0x72, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x09, 0x52, 0x0c, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, + 0x39, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, + 0x09, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x35, 0x0a, 0x08, 0x74, 0x69, + 0x6d, 0x65, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x45, 0x6e, + 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0x80, 0x01, + 0x0a, 0x19, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x04, 0x6d, + 0x65, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x04, 0x6d, + 0x65, 0x74, 0x61, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, + 0x22, 0x43, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x53, + 0x6f, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x73, 0x63, 0x65, 0x6e, + 0x64, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, 0x73, 0x63, 0x65, + 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x9f, 0x02, 0x0a, 0x11, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x56, 0x69, 0x65, 0x77, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, + 0x68, 0x12, 0x41, 0x0a, 0x07, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x52, 0x07, 0x69, 0x6e, 0x63, + 0x6c, 0x75, 0x64, 0x65, 0x12, 0x41, 0x0a, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, + 0x69, 0x65, 0x77, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x64, 0x52, 0x07, + 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x1a, 0x6e, 0x0a, 0x04, 0x43, 0x6f, 0x6e, 0x64, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x02, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x6e, 0x12, 0x2a, 0x0a, 0x04, 0x6c, + 0x69, 0x6b, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x04, 0x6c, 0x69, 0x6b, 0x65, 0x22, 0x57, 0x0a, 0x11, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, + 0x22, 0x80, 0x01, 0x0a, 0x1d, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, + 0x6c, 0x75, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, + 0x61, 0x6d, 0x65, 0x22, 0xb8, 0x01, 0x0a, 0x1e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, + 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, + 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x47, + 0x72, 0x61, 0x69, 0x6e, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0x95, + 0x02, 0x0a, 0x14, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x56, 0x0a, 0x13, 0x63, 0x61, 0x74, 0x65, 0x67, + 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, + 0x61, 0x6c, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, 0x12, 0x63, 0x61, 0x74, + 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, + 0x4a, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x75, 0x6d, 0x65, 0x72, + 0x69, 0x63, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, 0x0e, 0x6e, 0x75, 0x6d, + 0x65, 0x72, 0x69, 0x63, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x51, 0x0a, 0x12, 0x74, + 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x48, 0x00, 0x52, 0x10, 0x74, 0x69, + 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x42, 0x06, + 0x0a, 0x04, 0x43, 0x61, 0x73, 0x65, 0x22, 0x6d, 0x0a, 0x12, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, + 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x2b, 0x0a, 0x04, + 0x74, 0x6f, 0x70, 0x4b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x70, + 0x4b, 0x48, 0x00, 0x52, 0x04, 0x74, 0x6f, 0x70, 0x4b, 0x12, 0x22, 0x0a, 0x0b, 0x63, 0x61, 0x72, + 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, + 0x52, 0x0b, 0x63, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x42, 0x06, 0x0a, + 0x04, 0x43, 0x61, 0x73, 0x65, 0x22, 0x76, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x72, 0x64, + 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x66, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x13, 0x63, 0x61, 0x74, 0x65, 0x67, + 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, + 0x61, 0x6c, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x12, 0x63, 0x61, 0x74, 0x65, 0x67, + 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x67, 0x0a, + 0x0f, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x4b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x54, 0x0a, 0x13, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x5f, + 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x52, 0x12, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x63, 0x61, 0x6c, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x9b, 0x02, 0x0a, 0x0e, 0x4e, 0x75, 0x6d, 0x65, 0x72, + 0x69, 0x63, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x5d, 0x0a, 0x16, 0x6e, 0x75, 0x6d, + 0x65, 0x72, 0x69, 0x63, 0x5f, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x62, + 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x42, 0x69, 0x6e, 0x73, - 0x12, 0x53, 0x0a, 0x12, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, - 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, - 0x48, 0x00, 0x52, 0x11, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x69, - 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x4d, 0x0a, 0x10, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, - 0x5f, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x48, 0x00, 0x52, 0x14, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x48, 0x69, 0x73, 0x74, 0x6f, + 0x67, 0x72, 0x61, 0x6d, 0x42, 0x69, 0x6e, 0x73, 0x12, 0x53, 0x0a, 0x12, 0x6e, 0x75, 0x6d, 0x65, + 0x72, 0x69, 0x63, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x53, 0x74, + 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x48, 0x00, 0x52, 0x11, 0x6e, 0x75, 0x6d, 0x65, + 0x72, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x4d, 0x0a, + 0x10, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, + 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, + 0x63, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x73, 0x48, 0x00, 0x52, 0x0f, 0x6e, 0x75, 0x6d, + 0x65, 0x72, 0x69, 0x63, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x73, 0x42, 0x06, 0x0a, 0x04, + 0x43, 0x61, 0x73, 0x65, 0x22, 0x63, 0x0a, 0x17, 0x47, 0x65, 0x74, 0x52, 0x75, 0x67, 0x48, 0x69, + 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x48, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x75, 0x6d, 0x65, 0x72, + 0x69, 0x63, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0e, 0x6e, 0x75, 0x6d, 0x65, 0x72, + 0x69, 0x63, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x67, 0x0a, 0x1b, 0x47, 0x65, 0x74, + 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x65, + 0x72, 0x69, 0x63, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x52, 0x0e, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x53, 0x75, 0x6d, 0x6d, 0x61, + 0x72, 0x79, 0x22, 0x6c, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, + 0x63, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, + 0x52, 0x0e, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, + 0x22, 0x6e, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x4f, 0x0a, 0x12, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x73, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, + 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x10, + 0x74, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, + 0x22, 0x86, 0x02, 0x0a, 0x10, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x75, + 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x2c, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, + 0x6d, 0x69, 0x6e, 0x12, 0x2c, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x6d, 0x61, + 0x78, 0x12, 0x46, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, + 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x1a, 0x4e, 0x0a, 0x08, 0x49, 0x6e, 0x74, + 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x73, 0x12, 0x12, 0x0a, + 0x04, 0x64, 0x61, 0x79, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x64, 0x61, 0x79, + 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x06, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x22, 0xba, 0x01, 0x0a, 0x0f, 0x4e, 0x75, + 0x6d, 0x65, 0x72, 0x69, 0x63, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x73, 0x12, 0x44, 0x0a, + 0x08, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, - 0x73, 0x48, 0x00, 0x52, 0x0f, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x4f, 0x75, 0x74, 0x6c, - 0x69, 0x65, 0x72, 0x73, 0x42, 0x06, 0x0a, 0x04, 0x43, 0x61, 0x73, 0x65, 0x22, 0x63, 0x0a, 0x17, - 0x47, 0x65, 0x74, 0x52, 0x75, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x65, 0x72, - 0x69, 0x63, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x52, 0x0e, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x22, 0x67, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x48, - 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x48, 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x75, 0x6d, 0x6d, - 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x73, 0x2e, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x52, 0x08, 0x6f, 0x75, 0x74, 0x6c, 0x69, + 0x65, 0x72, 0x73, 0x1a, 0x61, 0x0a, 0x07, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x16, + 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, + 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x01, 0x52, 0x03, 0x6c, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x67, 0x68, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x68, 0x69, 0x67, 0x68, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, + 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x22, 0xa9, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x6f, + 0x70, 0x4b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, + 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, + 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x03, 0x61, 0x67, + 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x61, 0x67, 0x67, 0x88, 0x01, + 0x01, 0x12, 0x11, 0x0a, 0x01, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x01, + 0x6b, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x61, 0x67, 0x67, 0x42, 0x04, 0x0a, 0x02, + 0x5f, 0x6b, 0x22, 0x89, 0x01, 0x0a, 0x04, 0x54, 0x6f, 0x70, 0x4b, 0x12, 0x39, 0x0a, 0x07, 0x65, + 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, + 0x6f, 0x70, 0x4b, 0x2e, 0x54, 0x6f, 0x70, 0x4b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, + 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x1a, 0x46, 0x0a, 0x09, 0x54, 0x6f, 0x70, 0x4b, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x12, 0x19, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x14, + 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x76, + 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4e, 0x75, 0x6c, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x75, + 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x2c, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4e, 0x75, 0x6c, + 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x82, 0x01, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75, + 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, + 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x91, 0x01, 0x0a, 0x11, 0x4e, 0x75, + 0x6d, 0x65, 0x72, 0x69, 0x63, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, + 0x10, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6d, 0x69, + 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, + 0x6d, 0x61, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x65, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x01, 0x52, 0x04, 0x6d, 0x65, 0x61, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x71, 0x32, 0x35, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x71, 0x32, 0x35, 0x12, 0x10, 0x0a, 0x03, 0x71, 0x35, 0x30, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x71, 0x35, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x71, + 0x37, 0x35, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x71, 0x37, 0x35, 0x12, 0x0e, 0x0a, + 0x02, 0x73, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x01, 0x52, 0x02, 0x73, 0x64, 0x22, 0x83, 0x01, + 0x0a, 0x20, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x65, + 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, + 0x61, 0x6d, 0x65, 0x22, 0x5e, 0x0a, 0x21, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x53, + 0x6d, 0x61, 0x6c, 0x6c, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, + 0x5f, 0x67, 0x72, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x47, 0x72, + 0x61, 0x69, 0x6e, 0x22, 0x7d, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, + 0x63, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, + 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, + 0x6d, 0x65, 0x22, 0xb0, 0x01, 0x0a, 0x14, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x48, 0x69, + 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x42, 0x69, 0x6e, 0x73, 0x12, 0x3d, 0x0a, 0x04, 0x62, + 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x75, 0x6d, 0x65, - 0x72, 0x69, 0x63, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0e, 0x6e, 0x75, 0x6d, 0x65, - 0x72, 0x69, 0x63, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x6c, 0x0a, 0x20, 0x47, 0x65, - 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, - 0x0a, 0x0f, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, - 0x63, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x0e, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, - 0x63, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x6e, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x54, - 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4f, 0x0a, 0x12, 0x74, 0x69, 0x6d, 0x65, 0x5f, - 0x72, 0x61, 0x6e, 0x67, 0x65, 0x5f, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x53, - 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x10, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, - 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x22, 0x86, 0x02, 0x0a, 0x10, 0x54, 0x69, 0x6d, - 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x2c, 0x0a, - 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x2c, 0x0a, 0x03, 0x6d, - 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, - 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x46, 0x0a, 0x08, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2e, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6c, 0x1a, 0x4e, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x16, 0x0a, - 0x06, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, - 0x6f, 0x6e, 0x74, 0x68, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x79, 0x73, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x04, 0x64, 0x61, 0x79, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x69, 0x63, - 0x72, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x69, 0x63, 0x72, 0x6f, - 0x73, 0x22, 0xba, 0x01, 0x0a, 0x0f, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x4f, 0x75, 0x74, - 0x6c, 0x69, 0x65, 0x72, 0x73, 0x12, 0x44, 0x0a, 0x08, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, - 0x63, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x73, 0x2e, 0x4f, 0x75, 0x74, 0x6c, 0x69, 0x65, - 0x72, 0x52, 0x08, 0x6f, 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x73, 0x1a, 0x61, 0x0a, 0x07, 0x4f, - 0x75, 0x74, 0x6c, 0x69, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, - 0x0a, 0x03, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6c, 0x6f, 0x77, - 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x67, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, - 0x68, 0x69, 0x67, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x22, 0xa9, - 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x4b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x72, 0x69, 0x63, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x42, 0x69, 0x6e, 0x73, + 0x2e, 0x42, 0x69, 0x6e, 0x52, 0x04, 0x62, 0x69, 0x6e, 0x73, 0x1a, 0x59, 0x0a, 0x03, 0x42, 0x69, + 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x77, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6c, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x68, + 0x69, 0x67, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x68, 0x69, 0x67, 0x68, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x79, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x52, 0x75, 0x67, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, + 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, + 0x22, 0x7d, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, + 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, + 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, + 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, + 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, + 0x80, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x43, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, + 0x74, 0x79, 0x4f, 0x66, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x15, 0x0a, 0x03, 0x61, 0x67, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x03, 0x61, 0x67, 0x67, 0x88, 0x01, 0x01, 0x12, 0x11, 0x0a, 0x01, 0x6b, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x05, 0x48, 0x01, 0x52, 0x01, 0x6b, 0x88, 0x01, 0x01, 0x42, 0x06, 0x0a, 0x04, - 0x5f, 0x61, 0x67, 0x67, 0x42, 0x04, 0x0a, 0x02, 0x5f, 0x6b, 0x22, 0x89, 0x01, 0x0a, 0x04, 0x54, - 0x6f, 0x70, 0x4b, 0x12, 0x39, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x6f, 0x70, 0x4b, 0x2e, 0x54, 0x6f, 0x70, 0x4b, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x1a, 0x46, - 0x0a, 0x09, 0x54, 0x6f, 0x70, 0x4b, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x19, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x88, 0x01, 0x01, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x08, 0x0a, 0x06, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x76, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4e, 0x75, 0x6c, - 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, - 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, - 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, - 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x2c, - 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4e, 0x75, 0x6c, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x82, 0x01, 0x0a, - 0x1f, 0x47, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x76, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x6d, 0x65, 0x22, 0xe5, 0x04, 0x0a, 0x19, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x54, + 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, - 0x65, 0x22, 0x91, 0x01, 0x0a, 0x11, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x53, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6d, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x78, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x6d, 0x61, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x6d, - 0x65, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x01, 0x52, 0x04, 0x6d, 0x65, 0x61, 0x6e, 0x12, - 0x10, 0x0a, 0x03, 0x71, 0x32, 0x35, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, 0x71, 0x32, - 0x35, 0x12, 0x10, 0x0a, 0x03, 0x71, 0x35, 0x30, 0x18, 0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, - 0x71, 0x35, 0x30, 0x12, 0x10, 0x0a, 0x03, 0x71, 0x37, 0x35, 0x18, 0x06, 0x20, 0x01, 0x28, 0x01, - 0x52, 0x03, 0x71, 0x37, 0x35, 0x12, 0x0e, 0x0a, 0x02, 0x73, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x01, 0x52, 0x02, 0x73, 0x64, 0x22, 0x83, 0x01, 0x0a, 0x20, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, - 0x74, 0x65, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x47, 0x72, - 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, - 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x5e, 0x0a, 0x21, 0x45, - 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x65, 0x73, 0x74, 0x54, - 0x69, 0x6d, 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x39, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x67, 0x72, 0x61, 0x69, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, - 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, 0x22, 0x7d, 0x0a, 0x1a, 0x47, - 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, - 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, - 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xb0, 0x01, 0x0a, 0x14, 0x4e, - 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x42, - 0x69, 0x6e, 0x73, 0x12, 0x3d, 0x0a, 0x04, 0x62, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x48, 0x69, 0x73, 0x74, 0x6f, - 0x67, 0x72, 0x61, 0x6d, 0x42, 0x69, 0x6e, 0x73, 0x2e, 0x42, 0x69, 0x6e, 0x52, 0x04, 0x62, 0x69, - 0x6e, 0x73, 0x1a, 0x59, 0x0a, 0x03, 0x42, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x75, 0x63, - 0x6b, 0x65, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x62, 0x75, 0x63, 0x6b, 0x65, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x03, - 0x6c, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x67, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x01, 0x52, 0x04, 0x68, 0x69, 0x67, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x79, 0x0a, - 0x16, 0x47, 0x65, 0x74, 0x52, 0x75, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, - 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, - 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x7d, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x54, - 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x6f, 0x6c, - 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x80, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x43, - 0x61, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x66, 0x43, 0x6f, 0x6c, 0x75, - 0x6d, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6c, - 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, - 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xe5, 0x04, 0x0a, 0x19, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x59, 0x0a, 0x08, 0x6d, 0x65, 0x61, 0x73, - 0x75, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, - 0x65, 0x72, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x4d, 0x65, 0x61, 0x73, - 0x75, 0x72, 0x65, 0x73, 0x48, 0x00, 0x52, 0x08, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x73, - 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x15, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, - 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x13, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x43, 0x6f, 0x6c, - 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x48, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, - 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x69, + 0x12, 0x59, 0x0a, 0x08, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, + 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x42, + 0x61, 0x73, 0x69, 0x63, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x73, 0x48, 0x00, 0x52, 0x08, + 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x73, 0x88, 0x01, 0x01, 0x12, 0x32, 0x0a, 0x15, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x74, 0x69, 0x6d, 0x65, + 0x73, 0x74, 0x61, 0x6d, 0x70, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x4e, 0x61, 0x6d, 0x65, 0x12, + 0x48, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, + 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, + 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x07, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, + 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x02, 0x52, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, + 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, 0x06, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x88, 0x01, 0x01, + 0x12, 0x24, 0x0a, 0x0b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x05, 0x48, 0x04, 0x52, 0x0a, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x53, + 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x5f, 0x0a, 0x0d, 0x42, 0x61, 0x73, 0x69, 0x63, 0x4d, + 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x0e, 0x62, 0x61, 0x73, 0x69, 0x63, + 0x5f, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x44, 0x65, + 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0d, 0x62, 0x61, 0x73, 0x69, 0x63, 0x4d, + 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x73, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x65, 0x61, 0x73, + 0x75, 0x72, 0x65, 0x73, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x61, + 0x6e, 0x67, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x69, 0x78, 0x65, 0x6c, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, + 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x75, 0x0a, 0x16, 0x42, 0x61, + 0x73, 0x69, 0x63, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x08, 0x73, 0x71, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x07, 0x73, 0x71, 0x6c, 0x4e, 0x61, 0x6d, + 0x65, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x73, 0x71, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0xad, 0x01, 0x0a, 0x13, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, + 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x30, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x65, + 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65, 0x6e, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x69, 0x6e, 0x74, + 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, - 0x65, 0x48, 0x01, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x48, 0x0a, 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x02, 0x52, - 0x07, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x88, 0x01, 0x01, 0x12, 0x1b, 0x0a, 0x06, 0x70, - 0x69, 0x78, 0x65, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x48, 0x03, 0x52, 0x06, 0x70, - 0x69, 0x78, 0x65, 0x6c, 0x73, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0b, 0x73, 0x61, 0x6d, 0x70, - 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x48, 0x04, 0x52, - 0x0a, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x5f, - 0x0a, 0x0d, 0x42, 0x61, 0x73, 0x69, 0x63, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x73, 0x12, - 0x4e, 0x0a, 0x0e, 0x62, 0x61, 0x73, 0x69, 0x63, 0x5f, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x73, 0x69, 0x63, 0x4d, - 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0d, 0x62, 0x61, 0x73, 0x69, 0x63, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x73, 0x42, - 0x0b, 0x0a, 0x09, 0x5f, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x73, 0x42, 0x0d, 0x0a, 0x0b, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x5f, - 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x73, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x70, 0x69, 0x78, 0x65, - 0x6c, 0x73, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x73, 0x69, - 0x7a, 0x65, 0x22, 0x75, 0x0a, 0x16, 0x42, 0x61, 0x73, 0x69, 0x63, 0x4d, 0x65, 0x61, 0x73, 0x75, - 0x72, 0x65, 0x44, 0x65, 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, - 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x08, - 0x73, 0x71, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x07, 0x73, 0x71, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, - 0x5f, 0x73, 0x71, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0xad, 0x01, 0x0a, 0x13, 0x54, 0x69, - 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, - 0x65, 0x12, 0x30, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x72, 0x74, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x03, 0x65, 0x6e, - 0x64, 0x12, 0x36, 0x0a, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, 0x52, - 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, 0xe6, 0x01, 0x0a, 0x19, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x02, 0x69, - 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x02, 0x69, 0x6e, 0x12, 0x4a, 0x0a, 0x04, 0x6c, 0x69, 0x6b, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x31, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x44, - 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x48, 0x00, 0x52, 0x04, 0x6c, 0x69, 0x6b, 0x65, 0x88, 0x01, 0x01, 0x1a, - 0x38, 0x0a, 0x06, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6c, 0x69, - 0x6b, 0x65, 0x22, 0xa6, 0x01, 0x0a, 0x18, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, - 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, - 0x44, 0x0a, 0x07, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x44, 0x69, - 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x69, 0x6e, - 0x63, 0x6c, 0x75, 0x64, 0x65, 0x12, 0x44, 0x0a, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x56, 0x69, 0x65, 0x77, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x22, 0xb4, 0x03, 0x0a, 0x12, - 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x02, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x53, - 0x65, 0x72, 0x69, 0x65, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, - 0x6c, 0x74, 0x73, 0x12, 0x4f, 0x0a, 0x05, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, - 0x65, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x48, 0x01, 0x52, 0x05, 0x73, 0x70, 0x61, 0x72, - 0x6b, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x61, 0x6e, - 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x53, - 0x65, 0x72, 0x69, 0x65, 0x73, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x02, - 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1f, - 0x0a, 0x0b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, - 0x19, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, - 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x88, 0x01, 0x01, 0x1a, 0x4c, 0x0a, 0x10, 0x54, 0x69, - 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x38, - 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, + 0x6d, 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, + 0x6c, 0x22, 0xe6, 0x01, 0x0a, 0x19, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, + 0x77, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x02, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x6e, 0x12, 0x4a, 0x0a, 0x04, 0x6c, + 0x69, 0x6b, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, + 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x48, 0x00, 0x52, 0x04, + 0x6c, 0x69, 0x6b, 0x65, 0x88, 0x01, 0x01, 0x1a, 0x38, 0x0a, 0x06, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x6c, 0x69, 0x6b, 0x65, 0x22, 0xa6, 0x01, 0x0a, 0x18, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x44, 0x0a, 0x07, 0x69, 0x6e, 0x63, 0x6c, 0x75, + 0x64, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, + 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x12, 0x44, 0x0a, + 0x07, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x64, 0x42, - 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x65, 0x72, 0x72, - 0x6f, 0x72, 0x22, 0x59, 0x0a, 0x1a, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3b, 0x0a, 0x06, 0x72, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x22, 0xc5, 0x01, - 0x0a, 0x0f, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, - 0x73, 0x12, 0x15, 0x0a, 0x03, 0x62, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, - 0x52, 0x03, 0x62, 0x69, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x47, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, - 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x52, 0x65, 0x63, 0x6f, - 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, - 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x06, 0x0a, - 0x04, 0x5f, 0x62, 0x69, 0x6e, 0x22, 0xb4, 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, - 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x65, - 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, - 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x22, 0x1e, 0x0a, 0x1c, - 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5c, 0x0a, 0x1a, - 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, - 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x3f, 0x0a, 0x1b, 0x47, 0x65, - 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, - 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x61, 0x72, - 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, - 0x63, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x57, 0x0a, 0x15, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x61, 0x0a, 0x16, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x43, - 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, - 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x0e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x22, 0x6b, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x12, 0x32, 0x0a, 0x15, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, - 0x6e, 0x67, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x13, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x73, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x65, - 0x6e, 0x67, 0x74, 0x68, 0x22, 0x6b, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, - 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, - 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, - 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x22, 0x43, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x77, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, - 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x9b, 0x04, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, - 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, - 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x43, 0x0a, - 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x50, 0x72, - 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, - 0x65, 0x73, 0x1a, 0xef, 0x02, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, - 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, - 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6c, 0x61, - 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x12, 0x3c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x2e, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, - 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, - 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x68, 0x69, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x72, 0x65, 0x66, 0x18, 0x08, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x72, 0x65, 0x66, 0x22, 0x68, 0x0a, 0x04, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x45, 0x41, 0x4e, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, - 0x41, 0x4c, 0x10, 0x04, 0x22, 0x17, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x54, 0x0a, - 0x16, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x73, 0x22, 0xb3, 0x05, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x04, - 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x79, 0x70, - 0x65, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, - 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, - 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x43, 0x0a, 0x12, 0x61, 0x72, 0x72, 0x61, - 0x79, 0x5f, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x10, 0x61, 0x72, 0x72, - 0x61, 0x79, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, - 0x0b, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x0a, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x6d, - 0x61, 0x70, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x6d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, - 0x22, 0xa6, 0x03, 0x0a, 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x44, - 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x01, 0x12, 0x0d, - 0x0a, 0x09, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x38, 0x10, 0x02, 0x12, 0x0e, 0x0a, - 0x0a, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x31, 0x36, 0x10, 0x03, 0x12, 0x0e, 0x0a, - 0x0a, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x04, 0x12, 0x0e, 0x0a, - 0x0a, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x05, 0x12, 0x0f, 0x0a, - 0x0b, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x31, 0x32, 0x38, 0x10, 0x06, 0x12, 0x0e, - 0x0a, 0x0a, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x38, 0x10, 0x07, 0x12, 0x0f, - 0x0a, 0x0b, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x31, 0x36, 0x10, 0x08, 0x12, - 0x0f, 0x0a, 0x0b, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x09, - 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, - 0x0a, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x31, 0x32, - 0x38, 0x10, 0x0b, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x41, - 0x54, 0x33, 0x32, 0x10, 0x0c, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x46, 0x4c, - 0x4f, 0x41, 0x54, 0x36, 0x34, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4f, 0x44, 0x45, 0x5f, - 0x54, 0x49, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x4d, 0x50, 0x10, 0x0e, 0x12, 0x0d, 0x0a, 0x09, 0x43, - 0x4f, 0x44, 0x45, 0x5f, 0x44, 0x41, 0x54, 0x45, 0x10, 0x0f, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, - 0x44, 0x45, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x10, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x4f, 0x44, - 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x11, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, - 0x44, 0x45, 0x5f, 0x42, 0x59, 0x54, 0x45, 0x53, 0x10, 0x12, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, - 0x44, 0x45, 0x5f, 0x41, 0x52, 0x52, 0x41, 0x59, 0x10, 0x13, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x4f, - 0x44, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x55, 0x43, 0x54, 0x10, 0x14, 0x12, 0x0c, 0x0a, 0x08, 0x43, - 0x4f, 0x44, 0x45, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x15, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x4f, 0x44, - 0x45, 0x5f, 0x44, 0x45, 0x43, 0x49, 0x4d, 0x41, 0x4c, 0x10, 0x16, 0x12, 0x0d, 0x0a, 0x09, 0x43, - 0x4f, 0x44, 0x45, 0x5f, 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x17, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, - 0x44, 0x45, 0x5f, 0x55, 0x55, 0x49, 0x44, 0x10, 0x18, 0x22, 0x8f, 0x01, 0x0a, 0x0a, 0x53, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, - 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, - 0x6c, 0x64, 0x73, 0x1a, 0x46, 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x44, 0x69, 0x6d, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x65, 0x78, 0x63, 0x6c, + 0x75, 0x64, 0x65, 0x22, 0xb4, 0x03, 0x0a, 0x12, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x13, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x3a, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x12, 0x4f, 0x0a, 0x05, 0x73, + 0x70, 0x61, 0x72, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x48, 0x01, 0x52, 0x05, 0x73, 0x70, 0x61, 0x72, 0x6b, 0x88, 0x01, 0x01, 0x12, 0x48, 0x0a, 0x0a, + 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x54, 0x69, 0x6d, + 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x02, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x52, 0x61, + 0x6e, 0x67, 0x65, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, + 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x88, + 0x01, 0x01, 0x1a, 0x4c, 0x0a, 0x10, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, + 0x69, 0x65, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x42, 0x05, 0x0a, 0x03, 0x5f, 0x69, 0x64, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x73, 0x70, 0x61, 0x72, + 0x6b, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x59, 0x0a, 0x1a, 0x47, 0x65, + 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3b, 0x0a, 0x06, 0x72, 0x6f, 0x6c, 0x6c, + 0x75, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x53, + 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x06, 0x72, + 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x22, 0xc5, 0x01, 0x0a, 0x0f, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, + 0x72, 0x69, 0x65, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x73, 0x12, 0x15, 0x0a, 0x03, 0x62, 0x69, 0x6e, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x48, 0x00, 0x52, 0x03, 0x62, 0x69, 0x6e, 0x88, 0x01, 0x01, + 0x12, 0x47, 0x0a, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x07, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x1a, 0x3a, 0x0a, 0x0c, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x06, 0x0a, 0x04, 0x5f, 0x62, 0x69, 0x6e, 0x22, 0xb4, 0x01, + 0x0a, 0x1b, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, + 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x65, 0x77, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x23, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x48, 0x00, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x42, 0x07, 0x0a, 0x05, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x22, 0x1e, 0x0a, 0x1c, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x44, 0x61, + 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5c, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, + 0x43, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x22, 0x3f, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x61, + 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, 0x63, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, + 0x69, 0x74, 0x79, 0x22, 0x57, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, + 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, + 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x61, 0x0a, 0x16, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x47, 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, + 0x0e, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x22, + 0x6b, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x15, 0x6c, 0x61, 0x72, 0x67, + 0x65, 0x73, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, + 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x6c, 0x61, 0x72, 0x67, 0x65, 0x73, 0x74, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x6b, 0x0a, 0x13, + 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x43, 0x0a, 0x14, 0x47, 0x65, 0x74, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x9b, + 0x04, 0x0a, 0x09, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x29, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, + 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x43, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, + 0x69, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x52, 0x0a, + 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x1a, 0xef, 0x02, 0x0a, 0x08, 0x50, + 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, + 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x0b, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x20, + 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x68, 0x6f, 0x6c, 0x64, 0x65, 0x72, + 0x12, 0x3c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x71, 0x0a, 0x07, 0x4d, - 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x07, 0x6b, 0x65, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x2a, 0xda, - 0x01, 0x0a, 0x09, 0x54, 0x69, 0x6d, 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x16, - 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x47, 0x52, 0x41, 0x49, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x49, 0x4d, 0x45, - 0x5f, 0x47, 0x52, 0x41, 0x49, 0x4e, 0x5f, 0x4d, 0x49, 0x4c, 0x4c, 0x49, 0x53, 0x45, 0x43, 0x4f, - 0x4e, 0x44, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x47, 0x52, 0x41, - 0x49, 0x4e, 0x5f, 0x53, 0x45, 0x43, 0x4f, 0x4e, 0x44, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x54, - 0x49, 0x4d, 0x45, 0x5f, 0x47, 0x52, 0x41, 0x49, 0x4e, 0x5f, 0x4d, 0x49, 0x4e, 0x55, 0x54, 0x45, - 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x47, 0x52, 0x41, 0x49, 0x4e, - 0x5f, 0x48, 0x4f, 0x55, 0x52, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x49, 0x4d, 0x45, 0x5f, - 0x47, 0x52, 0x41, 0x49, 0x4e, 0x5f, 0x44, 0x41, 0x59, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x54, - 0x49, 0x4d, 0x45, 0x5f, 0x47, 0x52, 0x41, 0x49, 0x4e, 0x5f, 0x57, 0x45, 0x45, 0x4b, 0x10, 0x06, - 0x12, 0x14, 0x0a, 0x10, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x47, 0x52, 0x41, 0x49, 0x4e, 0x5f, 0x4d, - 0x4f, 0x4e, 0x54, 0x48, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x47, - 0x52, 0x41, 0x49, 0x4e, 0x5f, 0x59, 0x45, 0x41, 0x52, 0x10, 0x08, 0x2a, 0xf3, 0x02, 0x0a, 0x0d, - 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, - 0x1b, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, - 0x0a, 0x19, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x41, 0x4d, - 0x45, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x48, 0x4f, 0x55, 0x52, 0x10, 0x01, 0x12, 0x1f, 0x0a, - 0x1b, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, - 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x36, 0x5f, 0x48, 0x4f, 0x55, 0x52, 0x10, 0x02, 0x12, 0x1c, - 0x0a, 0x18, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x41, 0x4d, - 0x45, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x44, 0x41, 0x59, 0x10, 0x03, 0x12, 0x1f, 0x0a, 0x1b, + 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, + 0x72, 0x74, 0x79, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x08, 0x6e, 0x75, 0x6c, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x69, + 0x6e, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x69, 0x6e, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x68, 0x72, 0x65, 0x66, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x72, + 0x65, 0x66, 0x22, 0x68, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, + 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4e, 0x55, 0x4d, 0x42, 0x45, 0x52, + 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x45, + 0x41, 0x4e, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4e, 0x46, + 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x04, 0x22, 0x17, 0x0a, 0x15, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x54, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x3a, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, + 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2a, 0xda, 0x01, 0x0a, 0x09, + 0x54, 0x69, 0x6d, 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x49, 0x4d, + 0x45, 0x5f, 0x47, 0x52, 0x41, 0x49, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x47, 0x52, + 0x41, 0x49, 0x4e, 0x5f, 0x4d, 0x49, 0x4c, 0x4c, 0x49, 0x53, 0x45, 0x43, 0x4f, 0x4e, 0x44, 0x10, + 0x01, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x47, 0x52, 0x41, 0x49, 0x4e, 0x5f, + 0x53, 0x45, 0x43, 0x4f, 0x4e, 0x44, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x54, 0x49, 0x4d, 0x45, + 0x5f, 0x47, 0x52, 0x41, 0x49, 0x4e, 0x5f, 0x4d, 0x49, 0x4e, 0x55, 0x54, 0x45, 0x10, 0x03, 0x12, + 0x13, 0x0a, 0x0f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x47, 0x52, 0x41, 0x49, 0x4e, 0x5f, 0x48, 0x4f, + 0x55, 0x52, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x47, 0x52, 0x41, + 0x49, 0x4e, 0x5f, 0x44, 0x41, 0x59, 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x49, 0x4d, 0x45, + 0x5f, 0x47, 0x52, 0x41, 0x49, 0x4e, 0x5f, 0x57, 0x45, 0x45, 0x4b, 0x10, 0x06, 0x12, 0x14, 0x0a, + 0x10, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x47, 0x52, 0x41, 0x49, 0x4e, 0x5f, 0x4d, 0x4f, 0x4e, 0x54, + 0x48, 0x10, 0x07, 0x12, 0x13, 0x0a, 0x0f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x47, 0x52, 0x41, 0x49, + 0x4e, 0x5f, 0x59, 0x45, 0x41, 0x52, 0x10, 0x08, 0x2a, 0xf3, 0x02, 0x0a, 0x0d, 0x54, 0x69, 0x6d, + 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x49, + 0x4d, 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x54, + 0x49, 0x4d, 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x4c, + 0x41, 0x53, 0x54, 0x5f, 0x48, 0x4f, 0x55, 0x52, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x49, + 0x4d, 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x4c, 0x41, + 0x53, 0x54, 0x5f, 0x36, 0x5f, 0x48, 0x4f, 0x55, 0x52, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x54, + 0x49, 0x4d, 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x4c, + 0x41, 0x53, 0x54, 0x5f, 0x44, 0x41, 0x59, 0x10, 0x03, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x49, 0x4d, + 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x4c, 0x41, 0x53, + 0x54, 0x5f, 0x32, 0x5f, 0x44, 0x41, 0x59, 0x53, 0x10, 0x04, 0x12, 0x1f, 0x0a, 0x1b, 0x54, 0x49, + 0x4d, 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x4c, 0x41, + 0x53, 0x54, 0x5f, 0x35, 0x5f, 0x44, 0x41, 0x59, 0x53, 0x10, 0x05, 0x12, 0x1d, 0x0a, 0x19, 0x54, + 0x49, 0x4d, 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x4c, + 0x41, 0x53, 0x54, 0x5f, 0x57, 0x45, 0x45, 0x4b, 0x10, 0x06, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x49, + 0x4d, 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x4c, 0x41, + 0x53, 0x54, 0x5f, 0x32, 0x5f, 0x57, 0x45, 0x45, 0x4b, 0x53, 0x10, 0x07, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, - 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x32, 0x5f, 0x44, 0x41, 0x59, 0x53, 0x10, 0x04, 0x12, 0x1f, 0x0a, - 0x1b, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, - 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x35, 0x5f, 0x44, 0x41, 0x59, 0x53, 0x10, 0x05, 0x12, 0x1d, - 0x0a, 0x19, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x41, 0x4d, - 0x45, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x57, 0x45, 0x45, 0x4b, 0x10, 0x06, 0x12, 0x20, 0x0a, - 0x1c, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, - 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x32, 0x5f, 0x57, 0x45, 0x45, 0x4b, 0x53, 0x10, 0x07, 0x12, - 0x20, 0x0a, 0x1c, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x41, - 0x4d, 0x45, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x33, 0x30, 0x5f, 0x44, 0x41, 0x59, 0x53, 0x10, - 0x08, 0x12, 0x20, 0x0a, 0x1c, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, - 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x36, 0x30, 0x5f, 0x44, 0x41, 0x59, - 0x53, 0x10, 0x09, 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x47, - 0x45, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x10, - 0x0a, 0x2a, 0x9c, 0x01, 0x0a, 0x12, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x20, 0x44, 0x41, 0x54, 0x41, - 0x42, 0x41, 0x53, 0x45, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, - 0x0a, 0x1a, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x1d, - 0x0a, 0x19, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, - 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x49, 0x45, 0x57, 0x10, 0x02, 0x12, 0x21, 0x0a, - 0x1d, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, - 0x32, 0x8e, 0x35, 0x0a, 0x0e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0x55, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, - 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e, 0x67, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x10, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0a, - 0x12, 0x08, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x65, 0x0a, 0x09, 0x4c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x33, 0x30, 0x5f, 0x44, 0x41, 0x59, 0x53, 0x10, 0x08, 0x12, 0x20, + 0x0a, 0x1c, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, 0x41, 0x4d, + 0x45, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x36, 0x30, 0x5f, 0x44, 0x41, 0x59, 0x53, 0x10, 0x09, + 0x12, 0x1c, 0x0a, 0x18, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x47, 0x45, 0x5f, 0x4e, + 0x41, 0x4d, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x10, 0x0a, 0x2a, 0x9c, + 0x01, 0x0a, 0x12, 0x44, 0x61, 0x74, 0x61, 0x62, 0x61, 0x73, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x24, 0x0a, 0x20, 0x44, 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, + 0x45, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x44, + 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x44, + 0x41, 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x56, 0x49, 0x45, 0x57, 0x10, 0x02, 0x12, 0x21, 0x0a, 0x1d, 0x44, 0x41, + 0x54, 0x41, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x4f, 0x42, 0x4a, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x32, 0xdb, 0x33, + 0x0a, 0x0e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0x55, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x10, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0a, 0x12, 0x08, 0x2f, + 0x76, 0x31, 0x2f, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x65, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x70, 0x6f, 0x73, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x70, 0x6f, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x65, 0x70, 0x6f, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0b, 0x12, 0x09, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, - 0x73, 0x12, 0x69, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x1f, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, - 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x6b, 0x0a, 0x0a, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, - 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x22, 0x09, 0x2f, 0x76, 0x31, - 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0x72, 0x0a, 0x0a, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x70, 0x6f, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x11, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x0b, 0x12, 0x09, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x12, 0x69, + 0x0a, 0x07, 0x47, 0x65, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, + 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, + 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x6b, 0x0a, 0x0a, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x2a, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, - 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x75, 0x0a, - 0x09, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x14, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x0e, 0x3a, 0x01, 0x2a, 0x22, 0x09, 0x2f, 0x76, 0x31, + 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x12, 0x72, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x52, 0x65, 0x70, 0x6f, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x70, + 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x52, 0x65, 0x70, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x2a, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, + 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x75, 0x0a, 0x09, 0x4c, 0x69, + 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, + 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x72, - 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, - 0x69, 0x6c, 0x65, 0x73, 0x12, 0x7b, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, - 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x76, 0x31, 0x2f, - 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x2d, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x2a, 0x2a, - 0x7d, 0x12, 0x7e, 0x0a, 0x07, 0x50, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, - 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, + 0x74, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, + 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, + 0x73, 0x12, 0x7b, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, 0x22, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, + 0x47, 0x65, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, + 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x2f, 0x2d, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x7e, + 0x0a, 0x07, 0x50, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x46, + 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, + 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x2a, 0x3a, 0x01, 0x2a, 0x22, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, - 0x65, 0x73, 0x2f, 0x2d, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x2a, 0x2a, 0x7d, 0x3a, 0x01, - 0x2a, 0x12, 0x84, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, - 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x27, 0x2a, 0x25, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, - 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x2d, 0x2f, 0x7b, - 0x70, 0x61, 0x74, 0x68, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x82, 0x01, 0x0a, 0x0a, 0x52, 0x65, 0x6e, - 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, - 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, - 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x22, 0x20, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, + 0x65, 0x73, 0x2f, 0x2d, 0x2f, 0x7b, 0x70, 0x61, 0x74, 0x68, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x84, + 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x22, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x2a, 0x25, + 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x2d, 0x2f, 0x7b, 0x70, 0x61, 0x74, + 0x68, 0x3d, 0x2a, 0x2a, 0x7d, 0x12, 0x82, 0x01, 0x0a, 0x0a, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, + 0x46, 0x69, 0x6c, 0x65, 0x12, 0x22, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, + 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x3a, 0x01, 0x2a, 0x22, 0x20, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x70, 0x6f, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x66, 0x69, - 0x6c, 0x65, 0x73, 0x2f, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x75, 0x0a, - 0x0d, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x25, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x73, 0x12, 0x7d, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x7d, 0x12, 0x7b, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, + 0x6c, 0x65, 0x73, 0x2f, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x75, 0x0a, 0x0d, 0x4c, 0x69, + 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x72, 0x69, + 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, + 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x15, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x0f, 0x12, 0x0d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x73, 0x12, 0x7d, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, + 0x12, 0x7b, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x3a, 0x01, 0x2a, 0x22, 0x0d, + 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x86, 0x01, + 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x2a, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x9a, 0x01, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x43, + 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x22, 0x0d, - 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x3a, 0x01, 0x2a, - 0x12, 0x86, 0x01, 0x0a, 0x0e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x2a, 0x1b, 0x2f, 0x76, - 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x9a, 0x01, 0x0a, 0x12, 0x4c, 0x69, - 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x12, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4f, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x25, 0x12, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, - 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, - 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x12, 0x9b, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x61, - 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x28, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, - 0x6f, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x32, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, - 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x2f, 0x7b, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x9d, 0x01, 0x0a, 0x0e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, - 0x72, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, - 0x22, 0x32, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, - 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x61, - 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x12, 0x82, 0x01, 0x0a, 0x0b, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, - 0x53, 0x79, 0x6e, 0x63, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x53, 0x79, - 0x6e, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, - 0x67, 0x65, 0x72, 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x28, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x22, 0x22, 0x20, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x7c, 0x0a, 0x07, 0x4d, 0x69, 0x67, - 0x72, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x22, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, 0x12, 0x23, + 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x61, 0x74, 0x61, + 0x6c, 0x6f, 0x67, 0x12, 0x9b, 0x01, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, + 0x6f, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x12, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, + 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x4f, + 0x62, 0x6a, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x32, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x2c, 0x12, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, + 0x7d, 0x12, 0x9d, 0x01, 0x0a, 0x0e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x66, + 0x72, 0x65, 0x73, 0x68, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, + 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, + 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x22, 0x32, 0x2f, + 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, + 0x6f, 0x67, 0x2f, 0x7b, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, + 0x68, 0x12, 0x82, 0x01, 0x0a, 0x0b, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x53, 0x79, 0x6e, + 0x63, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, 0x53, 0x79, 0x6e, 0x63, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x72, 0x69, 0x67, 0x67, 0x65, 0x72, + 0x53, 0x79, 0x6e, 0x63, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x22, 0x22, 0x20, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, + 0x7d, 0x2f, 0x73, 0x79, 0x6e, 0x63, 0x12, 0x7c, 0x0a, 0x07, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, + 0x65, 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x3a, 0x01, 0x2a, 0x22, 0x23, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x69, 0x67, - 0x72, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x8a, 0x01, 0x0a, 0x11, 0x50, 0x75, 0x74, 0x46, - 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x12, 0x29, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x50, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x46, 0x69, - 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x13, 0x2f, 0x76, + 0x72, 0x61, 0x74, 0x65, 0x12, 0x8a, 0x01, 0x0a, 0x11, 0x50, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, + 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, + 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x41, + 0x6e, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, 0x01, 0x2a, 0x22, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x70, 0x75, 0x74, 0x2d, 0x61, 0x6e, 0x64, 0x2d, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, - 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x96, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, - 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x67, - 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x1b, 0x22, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x2d, 0x61, - 0x6e, 0x64, 0x2d, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x96, 0x01, - 0x0a, 0x14, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x4d, - 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, - 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, - 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, - 0x65, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x22, 0x16, 0x2f, 0x76, 0x31, + 0x65, 0x12, 0x96, 0x01, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, + 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x12, 0x2c, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x3a, + 0x01, 0x2a, 0x22, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x2d, 0x61, + 0x6e, 0x64, 0x2d, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x12, 0x96, 0x01, 0x0a, 0x14, 0x52, + 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x67, 0x72, + 0x61, 0x74, 0x65, 0x12, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, + 0x41, 0x6e, 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x41, 0x6e, + 0x64, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x3a, 0x01, 0x2a, 0x22, 0x16, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x2d, 0x61, 0x6e, 0x64, 0x2d, 0x6d, 0x69, 0x67, 0x72, - 0x61, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x95, 0x01, 0x0a, 0x0d, 0x4d, 0x69, 0x67, 0x72, 0x61, - 0x74, 0x65, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, - 0x74, 0x65, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x22, + 0x61, 0x74, 0x65, 0x12, 0x95, 0x01, 0x0a, 0x0d, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x53, + 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x53, + 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x3a, 0x01, 0x2a, 0x22, 0x2a, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x69, 0x67, - 0x72, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x9c, - 0x01, 0x0a, 0x0d, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x12, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, - 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, - 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x22, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, + 0x72, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x12, 0x9c, 0x01, 0x0a, 0x0d, + 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x25, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x36, 0x3a, 0x01, 0x2a, 0x22, 0x31, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x65, 0x2f, 0x73, 0x69, 0x6e, - 0x67, 0x6c, 0x65, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x3a, 0x01, 0x2a, 0x12, 0x74, 0x0a, - 0x05, 0x51, 0x75, 0x65, 0x72, 0x79, 0x12, 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x22, 0x21, 0x2f, + 0x67, 0x6c, 0x65, 0x2f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x74, 0x0a, 0x05, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x12, 0x1d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x3a, 0x01, 0x2a, 0x22, 0x21, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x3a, 0x01, 0x2a, 0x12, 0x8d, 0x01, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x69, 0x72, - 0x65, 0x63, 0x74, 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x69, 0x72, 0x65, 0x63, - 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, - 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x22, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, + 0x12, 0x8d, 0x01, 0x0a, 0x0b, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, + 0x12, 0x23, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x44, 0x69, 0x72, + 0x65, 0x63, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x2d, 0x3a, 0x01, 0x2a, 0x22, 0x28, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2f, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, - 0x3a, 0x01, 0x2a, 0x12, 0xb0, 0x01, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, - 0x69, 0x65, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x12, 0xd0, 0x01, 0x0a, 0x12, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, + 0x54, 0x6f, 0x70, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x56, 0x69, 0x65, 0x77, 0x4d, 0x65, 0x74, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x4d, 0x65, - 0x74, 0x61, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x44, 0x22, 0x42, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, - 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2d, 0x76, 0x69, 0x65, 0x77, 0x73, 0x2f, 0x7b, 0x6d, - 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x7d, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x12, 0xd0, 0x01, 0x0a, 0x12, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x54, 0x6f, 0x70, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x2a, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x54, 0x6f, 0x70, 0x6c, 0x69, - 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x54, 0x6f, 0x70, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x61, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5b, 0x22, 0x56, - 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x2d, 0x76, 0x69, 0x65, 0x77, 0x73, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x6f, - 0x70, 0x6c, 0x69, 0x73, 0x74, 0x2f, 0x7b, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0xcb, 0x01, 0x0a, 0x15, 0x4d, 0x65, - 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, - 0x69, 0x65, 0x73, 0x12, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x73, 0x56, 0x69, 0x65, 0x77, 0x54, 0x6f, 0x70, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, - 0x77, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, - 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x53, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4d, 0x22, 0x48, 0x2f, 0x76, 0x31, 0x2f, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2d, - 0x76, 0x69, 0x65, 0x77, 0x73, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x76, - 0x69, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, - 0x72, 0x69, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xbb, 0x01, 0x0a, 0x11, 0x4d, 0x65, 0x74, 0x72, - 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x73, 0x12, 0x29, 0x2e, + 0x77, 0x54, 0x6f, 0x70, 0x6c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x61, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x5b, 0x3a, 0x01, 0x2a, 0x22, 0x56, 0x2f, 0x76, 0x31, + 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x2d, 0x76, 0x69, 0x65, 0x77, 0x73, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, + 0x76, 0x69, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x6f, 0x70, 0x6c, 0x69, + 0x73, 0x74, 0x2f, 0x7b, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x6e, 0x61, + 0x6d, 0x65, 0x7d, 0x12, 0xcb, 0x01, 0x0a, 0x15, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, + 0x69, 0x65, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x54, 0x6f, 0x74, 0x61, 0x6c, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, - 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, - 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x22, 0x44, 0x2f, 0x76, - 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, - 0x73, 0x2d, 0x76, 0x69, 0x65, 0x77, 0x73, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x5f, 0x76, 0x69, 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xc7, 0x01, 0x0a, 0x16, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, - 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, - 0x12, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x75, - 0x70, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x75, - 0x70, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x4c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x22, 0x41, 0x2f, 0x76, 0x31, 0x2f, 0x69, + 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x53, + 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x72, + 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, + 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x53, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x4d, 0x3a, 0x01, 0x2a, 0x22, 0x48, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2d, 0x76, 0x69, 0x65, + 0x77, 0x73, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x76, 0x69, 0x65, 0x77, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, 0x65, + 0x73, 0x12, 0xbb, 0x01, 0x0a, 0x11, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, + 0x77, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x73, 0x12, 0x29, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, + 0x73, 0x56, 0x69, 0x65, 0x77, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, + 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4f, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x49, 0x3a, 0x01, 0x2a, 0x22, 0x44, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x2d, - 0x72, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x2f, - 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x12, - 0x94, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x4b, 0x12, 0x1f, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x54, 0x6f, 0x70, 0x4b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x54, 0x6f, 0x70, 0x4b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, 0x22, 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2d, 0x76, + 0x69, 0x65, 0x77, 0x73, 0x2f, 0x7b, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x5f, 0x76, 0x69, + 0x65, 0x77, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x73, 0x12, + 0xc7, 0x01, 0x0a, 0x16, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x6c, + 0x75, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x2e, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x73, 0x74, + 0x69, 0x6d, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x73, 0x74, + 0x69, 0x6d, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x6c, 0x75, 0x70, 0x49, 0x6e, 0x74, 0x65, 0x72, + 0x76, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4c, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x46, 0x3a, 0x01, 0x2a, 0x22, 0x41, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x6f, 0x70, 0x6b, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, - 0x6d, 0x65, 0x7d, 0x3a, 0x01, 0x2a, 0x12, 0xa6, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4e, 0x75, - 0x6c, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x69, 0x64, 0x7d, 0x2f, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x2d, 0x72, 0x6f, 0x6c, + 0x6c, 0x75, 0x70, 0x2d, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x2f, 0x7b, 0x74, 0x61, + 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0x94, 0x01, 0x0a, 0x07, 0x47, 0x65, + 0x74, 0x54, 0x6f, 0x70, 0x4b, 0x12, 0x1f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x4b, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x6f, 0x70, 0x4b, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x40, + 0x3a, 0x01, 0x2a, 0x22, 0x3b, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x74, 0x6f, 0x70, 0x6b, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x7d, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, + 0x12, 0xa6, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4e, 0x75, 0x6c, 0x6c, 0x43, 0x6f, 0x75, 0x6e, + 0x74, 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x75, 0x6c, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x75, 0x6c, - 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, - 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x4e, 0x75, 0x6c, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x49, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x12, 0x41, 0x2f, 0x76, - 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, - 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6e, 0x75, 0x6c, 0x6c, 0x2d, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x7d, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, - 0xd6, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x30, 0x2e, 0x72, + 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x49, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x43, 0x12, 0x41, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, + 0x69, 0x64, 0x7d, 0x2f, 0x6e, 0x75, 0x6c, 0x6c, 0x2d, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2f, 0x7b, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, + 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xd6, 0x01, 0x0a, 0x18, 0x47, 0x65, + 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x12, 0x30, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, + 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x55, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x4f, 0x12, 0x4d, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x76, 0x65, 0x2d, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x7d, 0x12, 0xdf, 0x01, 0x0a, 0x19, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x53, + 0x6d, 0x61, 0x6c, 0x6c, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, + 0x12, 0x31, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x53, 0x6d, 0x61, 0x6c, 0x6c, + 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x53, 0x6d, + 0x61, 0x6c, 0x6c, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x55, 0x12, + 0x53, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x65, 0x73, 0x74, + 0x69, 0x6d, 0x61, 0x74, 0x65, 0x2d, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x65, 0x73, 0x74, 0x2d, 0x74, + 0x69, 0x6d, 0x65, 0x2d, 0x67, 0x72, 0x61, 0x69, 0x6e, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, + 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xc2, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x65, + 0x72, 0x69, 0x63, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, - 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x76, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x55, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4f, 0x12, 0x4d, 0x2f, 0x76, 0x31, 0x2f, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x76, 0x65, 0x2d, 0x73, 0x74, 0x61, 0x74, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x2f, 0x7b, 0x74, - 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x75, - 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xdf, 0x01, 0x0a, 0x19, 0x45, 0x73, 0x74, - 0x69, 0x6d, 0x61, 0x74, 0x65, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, - 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, 0x12, 0x31, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, - 0x65, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x47, 0x72, 0x61, - 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x73, 0x74, 0x69, - 0x6d, 0x61, 0x74, 0x65, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x65, 0x73, 0x74, 0x54, 0x69, 0x6d, 0x65, - 0x47, 0x72, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5b, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x55, 0x12, 0x53, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x65, 0x73, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x65, 0x2d, 0x73, 0x6d, 0x61, 0x6c, - 0x6c, 0x65, 0x73, 0x74, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x2d, 0x67, 0x72, 0x61, 0x69, 0x6e, 0x2f, - 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x63, 0x6f, - 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xc2, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, - 0x61, 0x6d, 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x48, - 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x12, 0x48, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, - 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x2d, 0x68, 0x69, 0x73, 0x74, 0x6f, - 0x67, 0x72, 0x61, 0x6d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x7d, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, - 0xb2, 0x01, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x52, 0x75, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, - 0x72, 0x61, 0x6d, 0x12, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x67, 0x48, 0x69, 0x73, 0x74, - 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x52, 0x75, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x12, 0x44, - 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x75, 0x67, 0x2d, - 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x61, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4e, + 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4a, 0x12, + 0x48, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, + 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x6e, 0x75, 0x6d, + 0x65, 0x72, 0x69, 0x63, 0x2d, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x2f, 0x7b, + 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, + 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xb2, 0x01, 0x0a, 0x0f, 0x47, 0x65, + 0x74, 0x52, 0x75, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x12, 0x27, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x52, 0x75, 0x67, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x75, 0x67, 0x48, + 0x69, 0x73, 0x74, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x4c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x46, 0x12, 0x44, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x75, 0x67, 0x2d, 0x68, 0x69, 0x73, 0x74, 0x6f, 0x67, + 0x72, 0x61, 0x6d, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, + 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xc3, + 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x53, + 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, + 0x52, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, + 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x51, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4b, 0x12, 0x49, 0x2f, 0x76, 0x31, 0x2f, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, + 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x2d, 0x72, 0x61, 0x6e, 0x67, + 0x65, 0x2d, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xc3, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, - 0x52, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x2b, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, - 0x72, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, - 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, - 0x69, 0x6d, 0x65, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x51, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4b, 0x12, - 0x49, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, - 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x69, 0x6d, - 0x65, 0x2d, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x2d, 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x2f, - 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x63, 0x6f, - 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xcf, 0x01, 0x0a, 0x16, 0x47, - 0x65, 0x74, 0x43, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x66, 0x43, - 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x72, 0x64, 0x69, - 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x66, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, - 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x72, 0x64, 0x69, - 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x66, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4e, 0x12, 0x4c, - 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x61, 0x72, 0x64, - 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x2d, 0x6f, 0x66, 0x2d, 0x63, 0x6f, 0x6c, 0x75, 0x6d, - 0x6e, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, - 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xa9, 0x01, 0x0a, - 0x12, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, - 0x69, 0x65, 0x73, 0x12, 0x2a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x54, 0x69, - 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, - 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3a, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x34, 0x22, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x73, - 0x65, 0x72, 0x69, 0x65, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xbd, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, + 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xcf, 0x01, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x43, 0x61, 0x72, 0x64, + 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x4f, 0x66, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x12, + 0x2e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x4f, 0x66, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2f, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x4f, 0x66, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x54, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x4e, 0x12, 0x4c, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x63, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, + 0x79, 0x2d, 0x6f, 0x66, 0x2d, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x2f, 0x7b, 0x74, 0x61, 0x62, + 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x7b, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xa9, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x6e, 0x65, 0x72, + 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x12, 0x2a, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x69, 0x65, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x3a, 0x01, + 0x2a, 0x22, 0x2f, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, + 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x67, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x2d, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x65, 0x72, 0x69, + 0x65, 0x73, 0x12, 0xbd, 0x01, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, + 0x61, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, - 0x12, 0x2b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x61, 0x72, 0x64, 0x69, - 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, + 0x6c, 0x65, 0x43, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x45, 0x12, 0x43, 0x2f, + 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, + 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x69, + 0x65, 0x73, 0x2f, 0x63, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x2f, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x7d, 0x12, 0xaa, 0x01, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, + 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x43, + 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x61, 0x6c, - 0x69, 0x74, 0x79, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x45, 0x12, 0x43, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, - 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x71, 0x75, 0x65, 0x72, 0x69, 0x65, 0x73, 0x2f, 0x63, 0x61, 0x72, 0x64, 0x69, 0x6e, 0x61, - 0x6c, 0x69, 0x74, 0x79, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x12, 0xaa, 0x01, 0x0a, 0x0e, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x26, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6c, - 0x75, 0x6d, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x82, 0xd3, - 0xe4, 0x93, 0x02, 0x41, 0x22, 0x3f, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, - 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, - 0x7d, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x63, 0x6f, - 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, 0x99, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, - 0x6c, 0x65, 0x52, 0x6f, 0x77, 0x73, 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x22, 0x3f, + 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2d, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x12, + 0x99, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x77, 0x73, + 0x12, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x77, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, - 0x65, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x72, - 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, 0x76, 0x31, - 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, - 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, - 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x6f, 0x77, - 0x73, 0x12, 0x7e, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x73, 0x12, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, - 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, - 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, - 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x74, - 0x61, 0x42, 0x2a, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x72, 0x69, 0x6c, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x72, 0x75, - 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x3b, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x52, 0x6f, 0x77, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x36, 0x12, 0x34, 0x2f, 0x76, 0x31, 0x2f, 0x69, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x7d, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x7d, 0x2f, 0x72, 0x6f, 0x77, 0x73, 0x12, 0x7e, 0x0a, 0x0e, 0x4c, + 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x26, 0x2e, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x76, 0x31, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x42, 0xb1, 0x01, 0x0a, 0x13, + 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, + 0x2e, 0x76, 0x31, 0x42, 0x08, 0x41, 0x70, 0x69, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, + 0x32, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x69, 0x6c, 0x6c, + 0x64, 0x61, 0x74, 0x61, 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x72, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, + 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x52, 0x52, 0x58, 0xaa, 0x02, 0x0f, 0x52, 0x69, 0x6c, 0x6c, + 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0f, 0x52, 0x69, + 0x6c, 0x6c, 0x5c, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1b, + 0x52, 0x69, 0x6c, 0x6c, 0x5c, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5c, 0x56, 0x31, 0x5c, + 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x11, 0x52, 0x69, + 0x6c, 0x6c, 0x3a, 0x3a, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( - file_runtime_proto_rawDescOnce sync.Once - file_runtime_proto_rawDescData = file_runtime_proto_rawDesc + file_rill_runtime_v1_api_proto_rawDescOnce sync.Once + file_rill_runtime_v1_api_proto_rawDescData = file_rill_runtime_v1_api_proto_rawDesc ) -func file_runtime_proto_rawDescGZIP() []byte { - file_runtime_proto_rawDescOnce.Do(func() { - file_runtime_proto_rawDescData = protoimpl.X.CompressGZIP(file_runtime_proto_rawDescData) +func file_rill_runtime_v1_api_proto_rawDescGZIP() []byte { + file_rill_runtime_v1_api_proto_rawDescOnce.Do(func() { + file_rill_runtime_v1_api_proto_rawDescData = protoimpl.X.CompressGZIP(file_rill_runtime_v1_api_proto_rawDescData) }) - return file_runtime_proto_rawDescData + return file_rill_runtime_v1_api_proto_rawDescData } -var file_runtime_proto_enumTypes = make([]protoimpl.EnumInfo, 8) -var file_runtime_proto_msgTypes = make([]protoimpl.MessageInfo, 134) -var file_runtime_proto_goTypes = []interface{}{ +var file_rill_runtime_v1_api_proto_enumTypes = make([]protoimpl.EnumInfo, 6) +var file_rill_runtime_v1_api_proto_msgTypes = make([]protoimpl.MessageInfo, 122) +var file_rill_runtime_v1_api_proto_goTypes = []interface{}{ (TimeGrain)(0), // 0: rill.runtime.v1.TimeGrain (TimeRangeName)(0), // 1: rill.runtime.v1.TimeRangeName (DatabaseObjectType)(0), // 2: rill.runtime.v1.DatabaseObjectType (CatalogObject_Type)(0), // 3: rill.runtime.v1.CatalogObject.Type - (Model_Dialect)(0), // 4: rill.runtime.v1.Model.Dialect - (MigrationError_Code)(0), // 5: rill.runtime.v1.MigrationError.Code - (Connector_Property_Type)(0), // 6: rill.runtime.v1.Connector.Property.Type - (Type_Code)(0), // 7: rill.runtime.v1.Type.Code - (*PingRequest)(nil), // 8: rill.runtime.v1.PingRequest - (*PingResponse)(nil), // 9: rill.runtime.v1.PingResponse - (*Repo)(nil), // 10: rill.runtime.v1.Repo - (*ListReposRequest)(nil), // 11: rill.runtime.v1.ListReposRequest - (*ListReposResponse)(nil), // 12: rill.runtime.v1.ListReposResponse - (*GetRepoRequest)(nil), // 13: rill.runtime.v1.GetRepoRequest - (*GetRepoResponse)(nil), // 14: rill.runtime.v1.GetRepoResponse - (*CreateRepoRequest)(nil), // 15: rill.runtime.v1.CreateRepoRequest - (*CreateRepoResponse)(nil), // 16: rill.runtime.v1.CreateRepoResponse - (*DeleteRepoRequest)(nil), // 17: rill.runtime.v1.DeleteRepoRequest - (*DeleteRepoResponse)(nil), // 18: rill.runtime.v1.DeleteRepoResponse - (*ListFilesRequest)(nil), // 19: rill.runtime.v1.ListFilesRequest - (*ListFilesResponse)(nil), // 20: rill.runtime.v1.ListFilesResponse - (*GetFileRequest)(nil), // 21: rill.runtime.v1.GetFileRequest - (*GetFileResponse)(nil), // 22: rill.runtime.v1.GetFileResponse - (*PutFileRequest)(nil), // 23: rill.runtime.v1.PutFileRequest - (*PutFileResponse)(nil), // 24: rill.runtime.v1.PutFileResponse - (*DeleteFileRequest)(nil), // 25: rill.runtime.v1.DeleteFileRequest - (*DeleteFileResponse)(nil), // 26: rill.runtime.v1.DeleteFileResponse - (*RenameFileRequest)(nil), // 27: rill.runtime.v1.RenameFileRequest - (*RenameFileResponse)(nil), // 28: rill.runtime.v1.RenameFileResponse - (*Instance)(nil), // 29: rill.runtime.v1.Instance - (*ListInstancesRequest)(nil), // 30: rill.runtime.v1.ListInstancesRequest - (*ListInstancesResponse)(nil), // 31: rill.runtime.v1.ListInstancesResponse - (*GetInstanceRequest)(nil), // 32: rill.runtime.v1.GetInstanceRequest - (*GetInstanceResponse)(nil), // 33: rill.runtime.v1.GetInstanceResponse - (*CreateInstanceRequest)(nil), // 34: rill.runtime.v1.CreateInstanceRequest - (*CreateInstanceResponse)(nil), // 35: rill.runtime.v1.CreateInstanceResponse - (*DeleteInstanceRequest)(nil), // 36: rill.runtime.v1.DeleteInstanceRequest - (*DeleteInstanceResponse)(nil), // 37: rill.runtime.v1.DeleteInstanceResponse - (*CatalogObject)(nil), // 38: rill.runtime.v1.CatalogObject - (*Table)(nil), // 39: rill.runtime.v1.Table - (*Source)(nil), // 40: rill.runtime.v1.Source - (*Model)(nil), // 41: rill.runtime.v1.Model - (*MetricsView)(nil), // 42: rill.runtime.v1.MetricsView - (*ListCatalogObjectsRequest)(nil), // 43: rill.runtime.v1.ListCatalogObjectsRequest - (*ListCatalogObjectsResponse)(nil), // 44: rill.runtime.v1.ListCatalogObjectsResponse - (*GetCatalogObjectRequest)(nil), // 45: rill.runtime.v1.GetCatalogObjectRequest - (*GetCatalogObjectResponse)(nil), // 46: rill.runtime.v1.GetCatalogObjectResponse - (*TriggerRefreshRequest)(nil), // 47: rill.runtime.v1.TriggerRefreshRequest - (*TriggerRefreshResponse)(nil), // 48: rill.runtime.v1.TriggerRefreshResponse - (*TriggerSyncRequest)(nil), // 49: rill.runtime.v1.TriggerSyncRequest - (*TriggerSyncResponse)(nil), // 50: rill.runtime.v1.TriggerSyncResponse - (*MigrateRequest)(nil), // 51: rill.runtime.v1.MigrateRequest - (*MigrateResponse)(nil), // 52: rill.runtime.v1.MigrateResponse - (*MigrationError)(nil), // 53: rill.runtime.v1.MigrationError - (*MigrateSingleRequest)(nil), // 54: rill.runtime.v1.MigrateSingleRequest - (*MigrateSingleResponse)(nil), // 55: rill.runtime.v1.MigrateSingleResponse - (*MigrateDeleteRequest)(nil), // 56: rill.runtime.v1.MigrateDeleteRequest - (*MigrateDeleteResponse)(nil), // 57: rill.runtime.v1.MigrateDeleteResponse - (*PutFileAndMigrateRequest)(nil), // 58: rill.runtime.v1.PutFileAndMigrateRequest - (*PutFileAndMigrateResponse)(nil), // 59: rill.runtime.v1.PutFileAndMigrateResponse - (*DeleteFileAndMigrateRequest)(nil), // 60: rill.runtime.v1.DeleteFileAndMigrateRequest - (*DeleteFileAndMigrateResponse)(nil), // 61: rill.runtime.v1.DeleteFileAndMigrateResponse - (*RenameFileAndMigrateRequest)(nil), // 62: rill.runtime.v1.RenameFileAndMigrateRequest - (*RenameFileAndMigrateResponse)(nil), // 63: rill.runtime.v1.RenameFileAndMigrateResponse - (*QueryRequest)(nil), // 64: rill.runtime.v1.QueryRequest - (*QueryResponse)(nil), // 65: rill.runtime.v1.QueryResponse - (*QueryDirectRequest)(nil), // 66: rill.runtime.v1.QueryDirectRequest - (*QueryDirectResponse)(nil), // 67: rill.runtime.v1.QueryDirectResponse - (*MetricsViewMetaRequest)(nil), // 68: rill.runtime.v1.MetricsViewMetaRequest - (*MetricsViewMetaResponse)(nil), // 69: rill.runtime.v1.MetricsViewMetaResponse - (*MetricsViewToplistRequest)(nil), // 70: rill.runtime.v1.MetricsViewToplistRequest - (*MetricsViewToplistResponse)(nil), // 71: rill.runtime.v1.MetricsViewToplistResponse - (*MetricsViewTimeSeriesRequest)(nil), // 72: rill.runtime.v1.MetricsViewTimeSeriesRequest - (*MetricsViewTimeSeriesResponse)(nil), // 73: rill.runtime.v1.MetricsViewTimeSeriesResponse - (*MetricsViewTotalsRequest)(nil), // 74: rill.runtime.v1.MetricsViewTotalsRequest - (*MetricsViewTotalsResponse)(nil), // 75: rill.runtime.v1.MetricsViewTotalsResponse - (*MetricsViewSort)(nil), // 76: rill.runtime.v1.MetricsViewSort - (*MetricsViewFilter)(nil), // 77: rill.runtime.v1.MetricsViewFilter - (*MetricsViewColumn)(nil), // 78: rill.runtime.v1.MetricsViewColumn - (*EstimateRollupIntervalRequest)(nil), // 79: rill.runtime.v1.EstimateRollupIntervalRequest - (*EstimateRollupIntervalResponse)(nil), // 80: rill.runtime.v1.EstimateRollupIntervalResponse - (*ProfileColumnSummary)(nil), // 81: rill.runtime.v1.ProfileColumnSummary - (*CategoricalSummary)(nil), // 82: rill.runtime.v1.CategoricalSummary - (*GetCardinalityOfColumnResponse)(nil), // 83: rill.runtime.v1.GetCardinalityOfColumnResponse - (*GetTopKResponse)(nil), // 84: rill.runtime.v1.GetTopKResponse - (*NumericSummary)(nil), // 85: rill.runtime.v1.NumericSummary - (*GetRugHistogramResponse)(nil), // 86: rill.runtime.v1.GetRugHistogramResponse - (*GetNumericHistogramResponse)(nil), // 87: rill.runtime.v1.GetNumericHistogramResponse - (*GetDescriptiveStatisticsResponse)(nil), // 88: rill.runtime.v1.GetDescriptiveStatisticsResponse - (*GetTimeRangeSummaryResponse)(nil), // 89: rill.runtime.v1.GetTimeRangeSummaryResponse - (*TimeRangeSummary)(nil), // 90: rill.runtime.v1.TimeRangeSummary - (*NumericOutliers)(nil), // 91: rill.runtime.v1.NumericOutliers - (*GetTopKRequest)(nil), // 92: rill.runtime.v1.GetTopKRequest - (*TopK)(nil), // 93: rill.runtime.v1.TopK - (*GetNullCountRequest)(nil), // 94: rill.runtime.v1.GetNullCountRequest - (*GetNullCountResponse)(nil), // 95: rill.runtime.v1.GetNullCountResponse - (*GetDescriptiveStatisticsRequest)(nil), // 96: rill.runtime.v1.GetDescriptiveStatisticsRequest - (*NumericStatistics)(nil), // 97: rill.runtime.v1.NumericStatistics - (*EstimateSmallestTimeGrainRequest)(nil), // 98: rill.runtime.v1.EstimateSmallestTimeGrainRequest - (*EstimateSmallestTimeGrainResponse)(nil), // 99: rill.runtime.v1.EstimateSmallestTimeGrainResponse - (*GetNumericHistogramRequest)(nil), // 100: rill.runtime.v1.GetNumericHistogramRequest - (*NumericHistogramBins)(nil), // 101: rill.runtime.v1.NumericHistogramBins - (*GetRugHistogramRequest)(nil), // 102: rill.runtime.v1.GetRugHistogramRequest - (*GetTimeRangeSummaryRequest)(nil), // 103: rill.runtime.v1.GetTimeRangeSummaryRequest - (*GetCardinalityOfColumnRequest)(nil), // 104: rill.runtime.v1.GetCardinalityOfColumnRequest - (*GenerateTimeSeriesRequest)(nil), // 105: rill.runtime.v1.GenerateTimeSeriesRequest - (*BasicMeasureDefinition)(nil), // 106: rill.runtime.v1.BasicMeasureDefinition - (*TimeSeriesTimeRange)(nil), // 107: rill.runtime.v1.TimeSeriesTimeRange - (*MetricsViewDimensionValue)(nil), // 108: rill.runtime.v1.MetricsViewDimensionValue - (*MetricsViewRequestFilter)(nil), // 109: rill.runtime.v1.MetricsViewRequestFilter - (*TimeSeriesResponse)(nil), // 110: rill.runtime.v1.TimeSeriesResponse - (*GenerateTimeSeriesResponse)(nil), // 111: rill.runtime.v1.GenerateTimeSeriesResponse - (*TimeSeriesValue)(nil), // 112: rill.runtime.v1.TimeSeriesValue - (*RenameDatabaseObjectRequest)(nil), // 113: rill.runtime.v1.RenameDatabaseObjectRequest - (*RenameDatabaseObjectResponse)(nil), // 114: rill.runtime.v1.RenameDatabaseObjectResponse - (*GetTableCardinalityRequest)(nil), // 115: rill.runtime.v1.GetTableCardinalityRequest - (*GetTableCardinalityResponse)(nil), // 116: rill.runtime.v1.GetTableCardinalityResponse - (*ProfileColumnsRequest)(nil), // 117: rill.runtime.v1.ProfileColumnsRequest - (*ProfileColumnsResponse)(nil), // 118: rill.runtime.v1.ProfileColumnsResponse - (*ProfileColumn)(nil), // 119: rill.runtime.v1.ProfileColumn - (*GetTableRowsRequest)(nil), // 120: rill.runtime.v1.GetTableRowsRequest - (*GetTableRowsResponse)(nil), // 121: rill.runtime.v1.GetTableRowsResponse - (*Connector)(nil), // 122: rill.runtime.v1.Connector - (*ListConnectorsRequest)(nil), // 123: rill.runtime.v1.ListConnectorsRequest - (*ListConnectorsResponse)(nil), // 124: rill.runtime.v1.ListConnectorsResponse - (*Type)(nil), // 125: rill.runtime.v1.Type - (*StructType)(nil), // 126: rill.runtime.v1.StructType - (*MapType)(nil), // 127: rill.runtime.v1.MapType - (*MetricsView_Dimension)(nil), // 128: rill.runtime.v1.MetricsView.Dimension - (*MetricsView_Measure)(nil), // 129: rill.runtime.v1.MetricsView.Measure - (*MigrationError_CharLocation)(nil), // 130: rill.runtime.v1.MigrationError.CharLocation - (*MetricsViewFilter_Cond)(nil), // 131: rill.runtime.v1.MetricsViewFilter.Cond - (*TimeRangeSummary_Interval)(nil), // 132: rill.runtime.v1.TimeRangeSummary.Interval - (*NumericOutliers_Outlier)(nil), // 133: rill.runtime.v1.NumericOutliers.Outlier - (*TopK_TopKEntry)(nil), // 134: rill.runtime.v1.TopK.TopKEntry - (*NumericHistogramBins_Bin)(nil), // 135: rill.runtime.v1.NumericHistogramBins.Bin - (*GenerateTimeSeriesRequest_BasicMeasures)(nil), // 136: rill.runtime.v1.GenerateTimeSeriesRequest.BasicMeasures - (*MetricsViewDimensionValue_Values)(nil), // 137: rill.runtime.v1.MetricsViewDimensionValue.Values - (*TimeSeriesResponse_TimeSeriesValues)(nil), // 138: rill.runtime.v1.TimeSeriesResponse.TimeSeriesValues - nil, // 139: rill.runtime.v1.TimeSeriesValue.RecordsEntry - (*Connector_Property)(nil), // 140: rill.runtime.v1.Connector.Property - (*StructType_Field)(nil), // 141: rill.runtime.v1.StructType.Field - (*timestamppb.Timestamp)(nil), // 142: google.protobuf.Timestamp - (*structpb.Struct)(nil), // 143: google.protobuf.Struct - (*structpb.Value)(nil), // 144: google.protobuf.Value -} -var file_runtime_proto_depIdxs = []int32{ - 142, // 0: rill.runtime.v1.PingResponse.time:type_name -> google.protobuf.Timestamp - 10, // 1: rill.runtime.v1.ListReposResponse.repos:type_name -> rill.runtime.v1.Repo - 10, // 2: rill.runtime.v1.GetRepoResponse.repo:type_name -> rill.runtime.v1.Repo - 10, // 3: rill.runtime.v1.CreateRepoResponse.repo:type_name -> rill.runtime.v1.Repo - 142, // 4: rill.runtime.v1.GetFileResponse.updated_on:type_name -> google.protobuf.Timestamp - 29, // 5: rill.runtime.v1.ListInstancesResponse.instances:type_name -> rill.runtime.v1.Instance - 29, // 6: rill.runtime.v1.GetInstanceResponse.instance:type_name -> rill.runtime.v1.Instance - 29, // 7: rill.runtime.v1.CreateInstanceResponse.instance:type_name -> rill.runtime.v1.Instance + (MigrationError_Code)(0), // 4: rill.runtime.v1.MigrationError.Code + (Connector_Property_Type)(0), // 5: rill.runtime.v1.Connector.Property.Type + (*PingRequest)(nil), // 6: rill.runtime.v1.PingRequest + (*PingResponse)(nil), // 7: rill.runtime.v1.PingResponse + (*Repo)(nil), // 8: rill.runtime.v1.Repo + (*ListReposRequest)(nil), // 9: rill.runtime.v1.ListReposRequest + (*ListReposResponse)(nil), // 10: rill.runtime.v1.ListReposResponse + (*GetRepoRequest)(nil), // 11: rill.runtime.v1.GetRepoRequest + (*GetRepoResponse)(nil), // 12: rill.runtime.v1.GetRepoResponse + (*CreateRepoRequest)(nil), // 13: rill.runtime.v1.CreateRepoRequest + (*CreateRepoResponse)(nil), // 14: rill.runtime.v1.CreateRepoResponse + (*DeleteRepoRequest)(nil), // 15: rill.runtime.v1.DeleteRepoRequest + (*DeleteRepoResponse)(nil), // 16: rill.runtime.v1.DeleteRepoResponse + (*ListFilesRequest)(nil), // 17: rill.runtime.v1.ListFilesRequest + (*ListFilesResponse)(nil), // 18: rill.runtime.v1.ListFilesResponse + (*GetFileRequest)(nil), // 19: rill.runtime.v1.GetFileRequest + (*GetFileResponse)(nil), // 20: rill.runtime.v1.GetFileResponse + (*PutFileRequest)(nil), // 21: rill.runtime.v1.PutFileRequest + (*PutFileResponse)(nil), // 22: rill.runtime.v1.PutFileResponse + (*DeleteFileRequest)(nil), // 23: rill.runtime.v1.DeleteFileRequest + (*DeleteFileResponse)(nil), // 24: rill.runtime.v1.DeleteFileResponse + (*RenameFileRequest)(nil), // 25: rill.runtime.v1.RenameFileRequest + (*RenameFileResponse)(nil), // 26: rill.runtime.v1.RenameFileResponse + (*Instance)(nil), // 27: rill.runtime.v1.Instance + (*ListInstancesRequest)(nil), // 28: rill.runtime.v1.ListInstancesRequest + (*ListInstancesResponse)(nil), // 29: rill.runtime.v1.ListInstancesResponse + (*GetInstanceRequest)(nil), // 30: rill.runtime.v1.GetInstanceRequest + (*GetInstanceResponse)(nil), // 31: rill.runtime.v1.GetInstanceResponse + (*CreateInstanceRequest)(nil), // 32: rill.runtime.v1.CreateInstanceRequest + (*CreateInstanceResponse)(nil), // 33: rill.runtime.v1.CreateInstanceResponse + (*DeleteInstanceRequest)(nil), // 34: rill.runtime.v1.DeleteInstanceRequest + (*DeleteInstanceResponse)(nil), // 35: rill.runtime.v1.DeleteInstanceResponse + (*CatalogObject)(nil), // 36: rill.runtime.v1.CatalogObject + (*ListCatalogObjectsRequest)(nil), // 37: rill.runtime.v1.ListCatalogObjectsRequest + (*ListCatalogObjectsResponse)(nil), // 38: rill.runtime.v1.ListCatalogObjectsResponse + (*GetCatalogObjectRequest)(nil), // 39: rill.runtime.v1.GetCatalogObjectRequest + (*GetCatalogObjectResponse)(nil), // 40: rill.runtime.v1.GetCatalogObjectResponse + (*TriggerRefreshRequest)(nil), // 41: rill.runtime.v1.TriggerRefreshRequest + (*TriggerRefreshResponse)(nil), // 42: rill.runtime.v1.TriggerRefreshResponse + (*TriggerSyncRequest)(nil), // 43: rill.runtime.v1.TriggerSyncRequest + (*TriggerSyncResponse)(nil), // 44: rill.runtime.v1.TriggerSyncResponse + (*MigrateRequest)(nil), // 45: rill.runtime.v1.MigrateRequest + (*MigrateResponse)(nil), // 46: rill.runtime.v1.MigrateResponse + (*MigrationError)(nil), // 47: rill.runtime.v1.MigrationError + (*MigrateSingleRequest)(nil), // 48: rill.runtime.v1.MigrateSingleRequest + (*MigrateSingleResponse)(nil), // 49: rill.runtime.v1.MigrateSingleResponse + (*MigrateDeleteRequest)(nil), // 50: rill.runtime.v1.MigrateDeleteRequest + (*MigrateDeleteResponse)(nil), // 51: rill.runtime.v1.MigrateDeleteResponse + (*PutFileAndMigrateRequest)(nil), // 52: rill.runtime.v1.PutFileAndMigrateRequest + (*PutFileAndMigrateResponse)(nil), // 53: rill.runtime.v1.PutFileAndMigrateResponse + (*DeleteFileAndMigrateRequest)(nil), // 54: rill.runtime.v1.DeleteFileAndMigrateRequest + (*DeleteFileAndMigrateResponse)(nil), // 55: rill.runtime.v1.DeleteFileAndMigrateResponse + (*RenameFileAndMigrateRequest)(nil), // 56: rill.runtime.v1.RenameFileAndMigrateRequest + (*RenameFileAndMigrateResponse)(nil), // 57: rill.runtime.v1.RenameFileAndMigrateResponse + (*QueryRequest)(nil), // 58: rill.runtime.v1.QueryRequest + (*QueryResponse)(nil), // 59: rill.runtime.v1.QueryResponse + (*QueryDirectRequest)(nil), // 60: rill.runtime.v1.QueryDirectRequest + (*QueryDirectResponse)(nil), // 61: rill.runtime.v1.QueryDirectResponse + (*MetricsViewToplistRequest)(nil), // 62: rill.runtime.v1.MetricsViewToplistRequest + (*MetricsViewToplistResponse)(nil), // 63: rill.runtime.v1.MetricsViewToplistResponse + (*MetricsViewTimeSeriesRequest)(nil), // 64: rill.runtime.v1.MetricsViewTimeSeriesRequest + (*MetricsViewTimeSeriesResponse)(nil), // 65: rill.runtime.v1.MetricsViewTimeSeriesResponse + (*MetricsViewTotalsRequest)(nil), // 66: rill.runtime.v1.MetricsViewTotalsRequest + (*MetricsViewTotalsResponse)(nil), // 67: rill.runtime.v1.MetricsViewTotalsResponse + (*MetricsViewSort)(nil), // 68: rill.runtime.v1.MetricsViewSort + (*MetricsViewFilter)(nil), // 69: rill.runtime.v1.MetricsViewFilter + (*MetricsViewColumn)(nil), // 70: rill.runtime.v1.MetricsViewColumn + (*EstimateRollupIntervalRequest)(nil), // 71: rill.runtime.v1.EstimateRollupIntervalRequest + (*EstimateRollupIntervalResponse)(nil), // 72: rill.runtime.v1.EstimateRollupIntervalResponse + (*ProfileColumnSummary)(nil), // 73: rill.runtime.v1.ProfileColumnSummary + (*CategoricalSummary)(nil), // 74: rill.runtime.v1.CategoricalSummary + (*GetCardinalityOfColumnResponse)(nil), // 75: rill.runtime.v1.GetCardinalityOfColumnResponse + (*GetTopKResponse)(nil), // 76: rill.runtime.v1.GetTopKResponse + (*NumericSummary)(nil), // 77: rill.runtime.v1.NumericSummary + (*GetRugHistogramResponse)(nil), // 78: rill.runtime.v1.GetRugHistogramResponse + (*GetNumericHistogramResponse)(nil), // 79: rill.runtime.v1.GetNumericHistogramResponse + (*GetDescriptiveStatisticsResponse)(nil), // 80: rill.runtime.v1.GetDescriptiveStatisticsResponse + (*GetTimeRangeSummaryResponse)(nil), // 81: rill.runtime.v1.GetTimeRangeSummaryResponse + (*TimeRangeSummary)(nil), // 82: rill.runtime.v1.TimeRangeSummary + (*NumericOutliers)(nil), // 83: rill.runtime.v1.NumericOutliers + (*GetTopKRequest)(nil), // 84: rill.runtime.v1.GetTopKRequest + (*TopK)(nil), // 85: rill.runtime.v1.TopK + (*GetNullCountRequest)(nil), // 86: rill.runtime.v1.GetNullCountRequest + (*GetNullCountResponse)(nil), // 87: rill.runtime.v1.GetNullCountResponse + (*GetDescriptiveStatisticsRequest)(nil), // 88: rill.runtime.v1.GetDescriptiveStatisticsRequest + (*NumericStatistics)(nil), // 89: rill.runtime.v1.NumericStatistics + (*EstimateSmallestTimeGrainRequest)(nil), // 90: rill.runtime.v1.EstimateSmallestTimeGrainRequest + (*EstimateSmallestTimeGrainResponse)(nil), // 91: rill.runtime.v1.EstimateSmallestTimeGrainResponse + (*GetNumericHistogramRequest)(nil), // 92: rill.runtime.v1.GetNumericHistogramRequest + (*NumericHistogramBins)(nil), // 93: rill.runtime.v1.NumericHistogramBins + (*GetRugHistogramRequest)(nil), // 94: rill.runtime.v1.GetRugHistogramRequest + (*GetTimeRangeSummaryRequest)(nil), // 95: rill.runtime.v1.GetTimeRangeSummaryRequest + (*GetCardinalityOfColumnRequest)(nil), // 96: rill.runtime.v1.GetCardinalityOfColumnRequest + (*GenerateTimeSeriesRequest)(nil), // 97: rill.runtime.v1.GenerateTimeSeriesRequest + (*BasicMeasureDefinition)(nil), // 98: rill.runtime.v1.BasicMeasureDefinition + (*TimeSeriesTimeRange)(nil), // 99: rill.runtime.v1.TimeSeriesTimeRange + (*MetricsViewDimensionValue)(nil), // 100: rill.runtime.v1.MetricsViewDimensionValue + (*MetricsViewRequestFilter)(nil), // 101: rill.runtime.v1.MetricsViewRequestFilter + (*TimeSeriesResponse)(nil), // 102: rill.runtime.v1.TimeSeriesResponse + (*GenerateTimeSeriesResponse)(nil), // 103: rill.runtime.v1.GenerateTimeSeriesResponse + (*TimeSeriesValue)(nil), // 104: rill.runtime.v1.TimeSeriesValue + (*RenameDatabaseObjectRequest)(nil), // 105: rill.runtime.v1.RenameDatabaseObjectRequest + (*RenameDatabaseObjectResponse)(nil), // 106: rill.runtime.v1.RenameDatabaseObjectResponse + (*GetTableCardinalityRequest)(nil), // 107: rill.runtime.v1.GetTableCardinalityRequest + (*GetTableCardinalityResponse)(nil), // 108: rill.runtime.v1.GetTableCardinalityResponse + (*ProfileColumnsRequest)(nil), // 109: rill.runtime.v1.ProfileColumnsRequest + (*ProfileColumnsResponse)(nil), // 110: rill.runtime.v1.ProfileColumnsResponse + (*ProfileColumn)(nil), // 111: rill.runtime.v1.ProfileColumn + (*GetTableRowsRequest)(nil), // 112: rill.runtime.v1.GetTableRowsRequest + (*GetTableRowsResponse)(nil), // 113: rill.runtime.v1.GetTableRowsResponse + (*Connector)(nil), // 114: rill.runtime.v1.Connector + (*ListConnectorsRequest)(nil), // 115: rill.runtime.v1.ListConnectorsRequest + (*ListConnectorsResponse)(nil), // 116: rill.runtime.v1.ListConnectorsResponse + (*MigrationError_CharLocation)(nil), // 117: rill.runtime.v1.MigrationError.CharLocation + (*MetricsViewFilter_Cond)(nil), // 118: rill.runtime.v1.MetricsViewFilter.Cond + (*TimeRangeSummary_Interval)(nil), // 119: rill.runtime.v1.TimeRangeSummary.Interval + (*NumericOutliers_Outlier)(nil), // 120: rill.runtime.v1.NumericOutliers.Outlier + (*TopK_TopKEntry)(nil), // 121: rill.runtime.v1.TopK.TopKEntry + (*NumericHistogramBins_Bin)(nil), // 122: rill.runtime.v1.NumericHistogramBins.Bin + (*GenerateTimeSeriesRequest_BasicMeasures)(nil), // 123: rill.runtime.v1.GenerateTimeSeriesRequest.BasicMeasures + (*MetricsViewDimensionValue_Values)(nil), // 124: rill.runtime.v1.MetricsViewDimensionValue.Values + (*TimeSeriesResponse_TimeSeriesValues)(nil), // 125: rill.runtime.v1.TimeSeriesResponse.TimeSeriesValues + nil, // 126: rill.runtime.v1.TimeSeriesValue.RecordsEntry + (*Connector_Property)(nil), // 127: rill.runtime.v1.Connector.Property + (*timestamppb.Timestamp)(nil), // 128: google.protobuf.Timestamp + (*Table)(nil), // 129: rill.runtime.v1.Table + (*Source)(nil), // 130: rill.runtime.v1.Source + (*Model)(nil), // 131: rill.runtime.v1.Model + (*MetricsView)(nil), // 132: rill.runtime.v1.MetricsView + (*structpb.Value)(nil), // 133: google.protobuf.Value + (*StructType)(nil), // 134: rill.runtime.v1.StructType + (*structpb.Struct)(nil), // 135: google.protobuf.Struct +} +var file_rill_runtime_v1_api_proto_depIdxs = []int32{ + 128, // 0: rill.runtime.v1.PingResponse.time:type_name -> google.protobuf.Timestamp + 8, // 1: rill.runtime.v1.ListReposResponse.repos:type_name -> rill.runtime.v1.Repo + 8, // 2: rill.runtime.v1.GetRepoResponse.repo:type_name -> rill.runtime.v1.Repo + 8, // 3: rill.runtime.v1.CreateRepoResponse.repo:type_name -> rill.runtime.v1.Repo + 128, // 4: rill.runtime.v1.GetFileResponse.updated_on:type_name -> google.protobuf.Timestamp + 27, // 5: rill.runtime.v1.ListInstancesResponse.instances:type_name -> rill.runtime.v1.Instance + 27, // 6: rill.runtime.v1.GetInstanceResponse.instance:type_name -> rill.runtime.v1.Instance + 27, // 7: rill.runtime.v1.CreateInstanceResponse.instance:type_name -> rill.runtime.v1.Instance 3, // 8: rill.runtime.v1.CatalogObject.type:type_name -> rill.runtime.v1.CatalogObject.Type - 39, // 9: rill.runtime.v1.CatalogObject.table:type_name -> rill.runtime.v1.Table - 40, // 10: rill.runtime.v1.CatalogObject.source:type_name -> rill.runtime.v1.Source - 41, // 11: rill.runtime.v1.CatalogObject.model:type_name -> rill.runtime.v1.Model - 42, // 12: rill.runtime.v1.CatalogObject.metrics_view:type_name -> rill.runtime.v1.MetricsView - 142, // 13: rill.runtime.v1.CatalogObject.created_on:type_name -> google.protobuf.Timestamp - 142, // 14: rill.runtime.v1.CatalogObject.updated_on:type_name -> google.protobuf.Timestamp - 142, // 15: rill.runtime.v1.CatalogObject.refreshed_on:type_name -> google.protobuf.Timestamp - 126, // 16: rill.runtime.v1.Table.schema:type_name -> rill.runtime.v1.StructType - 143, // 17: rill.runtime.v1.Source.properties:type_name -> google.protobuf.Struct - 126, // 18: rill.runtime.v1.Source.schema:type_name -> rill.runtime.v1.StructType - 4, // 19: rill.runtime.v1.Model.dialect:type_name -> rill.runtime.v1.Model.Dialect - 126, // 20: rill.runtime.v1.Model.schema:type_name -> rill.runtime.v1.StructType - 128, // 21: rill.runtime.v1.MetricsView.dimensions:type_name -> rill.runtime.v1.MetricsView.Dimension - 129, // 22: rill.runtime.v1.MetricsView.measures:type_name -> rill.runtime.v1.MetricsView.Measure - 3, // 23: rill.runtime.v1.ListCatalogObjectsRequest.type:type_name -> rill.runtime.v1.CatalogObject.Type - 38, // 24: rill.runtime.v1.ListCatalogObjectsResponse.objects:type_name -> rill.runtime.v1.CatalogObject - 38, // 25: rill.runtime.v1.GetCatalogObjectResponse.object:type_name -> rill.runtime.v1.CatalogObject - 53, // 26: rill.runtime.v1.MigrateResponse.errors:type_name -> rill.runtime.v1.MigrationError - 5, // 27: rill.runtime.v1.MigrationError.code:type_name -> rill.runtime.v1.MigrationError.Code - 130, // 28: rill.runtime.v1.MigrationError.start_location:type_name -> rill.runtime.v1.MigrationError.CharLocation - 130, // 29: rill.runtime.v1.MigrationError.end_location:type_name -> rill.runtime.v1.MigrationError.CharLocation - 53, // 30: rill.runtime.v1.PutFileAndMigrateResponse.errors:type_name -> rill.runtime.v1.MigrationError - 53, // 31: rill.runtime.v1.DeleteFileAndMigrateResponse.errors:type_name -> rill.runtime.v1.MigrationError - 53, // 32: rill.runtime.v1.RenameFileAndMigrateResponse.errors:type_name -> rill.runtime.v1.MigrationError - 144, // 33: rill.runtime.v1.QueryRequest.args:type_name -> google.protobuf.Value - 126, // 34: rill.runtime.v1.QueryResponse.meta:type_name -> rill.runtime.v1.StructType - 143, // 35: rill.runtime.v1.QueryResponse.data:type_name -> google.protobuf.Struct - 144, // 36: rill.runtime.v1.QueryDirectRequest.args:type_name -> google.protobuf.Value - 126, // 37: rill.runtime.v1.QueryDirectResponse.meta:type_name -> rill.runtime.v1.StructType - 143, // 38: rill.runtime.v1.QueryDirectResponse.data:type_name -> google.protobuf.Struct - 128, // 39: rill.runtime.v1.MetricsViewMetaResponse.dimensions:type_name -> rill.runtime.v1.MetricsView.Dimension - 129, // 40: rill.runtime.v1.MetricsViewMetaResponse.measures:type_name -> rill.runtime.v1.MetricsView.Measure - 142, // 41: rill.runtime.v1.MetricsViewToplistRequest.time_start:type_name -> google.protobuf.Timestamp - 142, // 42: rill.runtime.v1.MetricsViewToplistRequest.time_end:type_name -> google.protobuf.Timestamp - 76, // 43: rill.runtime.v1.MetricsViewToplistRequest.sort:type_name -> rill.runtime.v1.MetricsViewSort - 77, // 44: rill.runtime.v1.MetricsViewToplistRequest.filter:type_name -> rill.runtime.v1.MetricsViewFilter - 78, // 45: rill.runtime.v1.MetricsViewToplistResponse.meta:type_name -> rill.runtime.v1.MetricsViewColumn - 143, // 46: rill.runtime.v1.MetricsViewToplistResponse.data:type_name -> google.protobuf.Struct - 142, // 47: rill.runtime.v1.MetricsViewTimeSeriesRequest.time_start:type_name -> google.protobuf.Timestamp - 142, // 48: rill.runtime.v1.MetricsViewTimeSeriesRequest.time_end:type_name -> google.protobuf.Timestamp - 77, // 49: rill.runtime.v1.MetricsViewTimeSeriesRequest.filter:type_name -> rill.runtime.v1.MetricsViewFilter - 78, // 50: rill.runtime.v1.MetricsViewTimeSeriesResponse.meta:type_name -> rill.runtime.v1.MetricsViewColumn - 143, // 51: rill.runtime.v1.MetricsViewTimeSeriesResponse.data:type_name -> google.protobuf.Struct - 142, // 52: rill.runtime.v1.MetricsViewTotalsRequest.time_start:type_name -> google.protobuf.Timestamp - 142, // 53: rill.runtime.v1.MetricsViewTotalsRequest.time_end:type_name -> google.protobuf.Timestamp - 77, // 54: rill.runtime.v1.MetricsViewTotalsRequest.filter:type_name -> rill.runtime.v1.MetricsViewFilter - 78, // 55: rill.runtime.v1.MetricsViewTotalsResponse.meta:type_name -> rill.runtime.v1.MetricsViewColumn - 143, // 56: rill.runtime.v1.MetricsViewTotalsResponse.data:type_name -> google.protobuf.Struct - 131, // 57: rill.runtime.v1.MetricsViewFilter.include:type_name -> rill.runtime.v1.MetricsViewFilter.Cond - 131, // 58: rill.runtime.v1.MetricsViewFilter.exclude:type_name -> rill.runtime.v1.MetricsViewFilter.Cond - 142, // 59: rill.runtime.v1.EstimateRollupIntervalResponse.start:type_name -> google.protobuf.Timestamp - 142, // 60: rill.runtime.v1.EstimateRollupIntervalResponse.end:type_name -> google.protobuf.Timestamp - 0, // 61: rill.runtime.v1.EstimateRollupIntervalResponse.interval:type_name -> rill.runtime.v1.TimeGrain - 82, // 62: rill.runtime.v1.ProfileColumnSummary.categorical_summary:type_name -> rill.runtime.v1.CategoricalSummary - 85, // 63: rill.runtime.v1.ProfileColumnSummary.numeric_summary:type_name -> rill.runtime.v1.NumericSummary - 90, // 64: rill.runtime.v1.ProfileColumnSummary.time_range_summary:type_name -> rill.runtime.v1.TimeRangeSummary - 93, // 65: rill.runtime.v1.CategoricalSummary.topK:type_name -> rill.runtime.v1.TopK - 82, // 66: rill.runtime.v1.GetCardinalityOfColumnResponse.categorical_summary:type_name -> rill.runtime.v1.CategoricalSummary - 82, // 67: rill.runtime.v1.GetTopKResponse.categorical_summary:type_name -> rill.runtime.v1.CategoricalSummary - 101, // 68: rill.runtime.v1.NumericSummary.numeric_histogram_bins:type_name -> rill.runtime.v1.NumericHistogramBins - 97, // 69: rill.runtime.v1.NumericSummary.numeric_statistics:type_name -> rill.runtime.v1.NumericStatistics - 91, // 70: rill.runtime.v1.NumericSummary.numeric_outliers:type_name -> rill.runtime.v1.NumericOutliers - 85, // 71: rill.runtime.v1.GetRugHistogramResponse.numeric_summary:type_name -> rill.runtime.v1.NumericSummary - 85, // 72: rill.runtime.v1.GetNumericHistogramResponse.numeric_summary:type_name -> rill.runtime.v1.NumericSummary - 85, // 73: rill.runtime.v1.GetDescriptiveStatisticsResponse.numeric_summary:type_name -> rill.runtime.v1.NumericSummary - 90, // 74: rill.runtime.v1.GetTimeRangeSummaryResponse.time_range_summary:type_name -> rill.runtime.v1.TimeRangeSummary - 142, // 75: rill.runtime.v1.TimeRangeSummary.min:type_name -> google.protobuf.Timestamp - 142, // 76: rill.runtime.v1.TimeRangeSummary.max:type_name -> google.protobuf.Timestamp - 132, // 77: rill.runtime.v1.TimeRangeSummary.interval:type_name -> rill.runtime.v1.TimeRangeSummary.Interval - 133, // 78: rill.runtime.v1.NumericOutliers.outliers:type_name -> rill.runtime.v1.NumericOutliers.Outlier - 134, // 79: rill.runtime.v1.TopK.entries:type_name -> rill.runtime.v1.TopK.TopKEntry - 0, // 80: rill.runtime.v1.EstimateSmallestTimeGrainResponse.time_grain:type_name -> rill.runtime.v1.TimeGrain - 135, // 81: rill.runtime.v1.NumericHistogramBins.bins:type_name -> rill.runtime.v1.NumericHistogramBins.Bin - 136, // 82: rill.runtime.v1.GenerateTimeSeriesRequest.measures:type_name -> rill.runtime.v1.GenerateTimeSeriesRequest.BasicMeasures - 107, // 83: rill.runtime.v1.GenerateTimeSeriesRequest.time_range:type_name -> rill.runtime.v1.TimeSeriesTimeRange - 109, // 84: rill.runtime.v1.GenerateTimeSeriesRequest.filters:type_name -> rill.runtime.v1.MetricsViewRequestFilter - 142, // 85: rill.runtime.v1.TimeSeriesTimeRange.start:type_name -> google.protobuf.Timestamp - 142, // 86: rill.runtime.v1.TimeSeriesTimeRange.end:type_name -> google.protobuf.Timestamp - 0, // 87: rill.runtime.v1.TimeSeriesTimeRange.interval:type_name -> rill.runtime.v1.TimeGrain - 144, // 88: rill.runtime.v1.MetricsViewDimensionValue.in:type_name -> google.protobuf.Value - 137, // 89: rill.runtime.v1.MetricsViewDimensionValue.like:type_name -> rill.runtime.v1.MetricsViewDimensionValue.Values - 108, // 90: rill.runtime.v1.MetricsViewRequestFilter.include:type_name -> rill.runtime.v1.MetricsViewDimensionValue - 108, // 91: rill.runtime.v1.MetricsViewRequestFilter.exclude:type_name -> rill.runtime.v1.MetricsViewDimensionValue - 112, // 92: rill.runtime.v1.TimeSeriesResponse.results:type_name -> rill.runtime.v1.TimeSeriesValue - 138, // 93: rill.runtime.v1.TimeSeriesResponse.spark:type_name -> rill.runtime.v1.TimeSeriesResponse.TimeSeriesValues - 107, // 94: rill.runtime.v1.TimeSeriesResponse.time_range:type_name -> rill.runtime.v1.TimeSeriesTimeRange - 110, // 95: rill.runtime.v1.GenerateTimeSeriesResponse.rollup:type_name -> rill.runtime.v1.TimeSeriesResponse - 139, // 96: rill.runtime.v1.TimeSeriesValue.records:type_name -> rill.runtime.v1.TimeSeriesValue.RecordsEntry - 2, // 97: rill.runtime.v1.RenameDatabaseObjectRequest.type:type_name -> rill.runtime.v1.DatabaseObjectType - 119, // 98: rill.runtime.v1.ProfileColumnsResponse.profile_columns:type_name -> rill.runtime.v1.ProfileColumn - 143, // 99: rill.runtime.v1.GetTableRowsResponse.data:type_name -> google.protobuf.Struct - 140, // 100: rill.runtime.v1.Connector.properties:type_name -> rill.runtime.v1.Connector.Property - 122, // 101: rill.runtime.v1.ListConnectorsResponse.connectors:type_name -> rill.runtime.v1.Connector - 7, // 102: rill.runtime.v1.Type.code:type_name -> rill.runtime.v1.Type.Code - 125, // 103: rill.runtime.v1.Type.array_element_type:type_name -> rill.runtime.v1.Type - 126, // 104: rill.runtime.v1.Type.struct_type:type_name -> rill.runtime.v1.StructType - 127, // 105: rill.runtime.v1.Type.map_type:type_name -> rill.runtime.v1.MapType - 141, // 106: rill.runtime.v1.StructType.fields:type_name -> rill.runtime.v1.StructType.Field - 125, // 107: rill.runtime.v1.MapType.key_type:type_name -> rill.runtime.v1.Type - 125, // 108: rill.runtime.v1.MapType.value_type:type_name -> rill.runtime.v1.Type - 144, // 109: rill.runtime.v1.MetricsViewFilter.Cond.in:type_name -> google.protobuf.Value - 144, // 110: rill.runtime.v1.MetricsViewFilter.Cond.like:type_name -> google.protobuf.Value - 106, // 111: rill.runtime.v1.GenerateTimeSeriesRequest.BasicMeasures.basic_measures:type_name -> rill.runtime.v1.BasicMeasureDefinition - 144, // 112: rill.runtime.v1.MetricsViewDimensionValue.Values.values:type_name -> google.protobuf.Value - 112, // 113: rill.runtime.v1.TimeSeriesResponse.TimeSeriesValues.values:type_name -> rill.runtime.v1.TimeSeriesValue - 6, // 114: rill.runtime.v1.Connector.Property.type:type_name -> rill.runtime.v1.Connector.Property.Type - 125, // 115: rill.runtime.v1.StructType.Field.type:type_name -> rill.runtime.v1.Type - 8, // 116: rill.runtime.v1.RuntimeService.Ping:input_type -> rill.runtime.v1.PingRequest - 11, // 117: rill.runtime.v1.RuntimeService.ListRepos:input_type -> rill.runtime.v1.ListReposRequest - 13, // 118: rill.runtime.v1.RuntimeService.GetRepo:input_type -> rill.runtime.v1.GetRepoRequest - 15, // 119: rill.runtime.v1.RuntimeService.CreateRepo:input_type -> rill.runtime.v1.CreateRepoRequest - 17, // 120: rill.runtime.v1.RuntimeService.DeleteRepo:input_type -> rill.runtime.v1.DeleteRepoRequest - 19, // 121: rill.runtime.v1.RuntimeService.ListFiles:input_type -> rill.runtime.v1.ListFilesRequest - 21, // 122: rill.runtime.v1.RuntimeService.GetFile:input_type -> rill.runtime.v1.GetFileRequest - 23, // 123: rill.runtime.v1.RuntimeService.PutFile:input_type -> rill.runtime.v1.PutFileRequest - 25, // 124: rill.runtime.v1.RuntimeService.DeleteFile:input_type -> rill.runtime.v1.DeleteFileRequest - 27, // 125: rill.runtime.v1.RuntimeService.RenameFile:input_type -> rill.runtime.v1.RenameFileRequest - 30, // 126: rill.runtime.v1.RuntimeService.ListInstances:input_type -> rill.runtime.v1.ListInstancesRequest - 32, // 127: rill.runtime.v1.RuntimeService.GetInstance:input_type -> rill.runtime.v1.GetInstanceRequest - 34, // 128: rill.runtime.v1.RuntimeService.CreateInstance:input_type -> rill.runtime.v1.CreateInstanceRequest - 36, // 129: rill.runtime.v1.RuntimeService.DeleteInstance:input_type -> rill.runtime.v1.DeleteInstanceRequest - 43, // 130: rill.runtime.v1.RuntimeService.ListCatalogObjects:input_type -> rill.runtime.v1.ListCatalogObjectsRequest - 45, // 131: rill.runtime.v1.RuntimeService.GetCatalogObject:input_type -> rill.runtime.v1.GetCatalogObjectRequest - 47, // 132: rill.runtime.v1.RuntimeService.TriggerRefresh:input_type -> rill.runtime.v1.TriggerRefreshRequest - 49, // 133: rill.runtime.v1.RuntimeService.TriggerSync:input_type -> rill.runtime.v1.TriggerSyncRequest - 51, // 134: rill.runtime.v1.RuntimeService.Migrate:input_type -> rill.runtime.v1.MigrateRequest - 58, // 135: rill.runtime.v1.RuntimeService.PutFileAndMigrate:input_type -> rill.runtime.v1.PutFileAndMigrateRequest - 60, // 136: rill.runtime.v1.RuntimeService.DeleteFileAndMigrate:input_type -> rill.runtime.v1.DeleteFileAndMigrateRequest - 62, // 137: rill.runtime.v1.RuntimeService.RenameFileAndMigrate:input_type -> rill.runtime.v1.RenameFileAndMigrateRequest - 54, // 138: rill.runtime.v1.RuntimeService.MigrateSingle:input_type -> rill.runtime.v1.MigrateSingleRequest - 56, // 139: rill.runtime.v1.RuntimeService.MigrateDelete:input_type -> rill.runtime.v1.MigrateDeleteRequest - 64, // 140: rill.runtime.v1.RuntimeService.Query:input_type -> rill.runtime.v1.QueryRequest - 66, // 141: rill.runtime.v1.RuntimeService.QueryDirect:input_type -> rill.runtime.v1.QueryDirectRequest - 68, // 142: rill.runtime.v1.RuntimeService.MetricsViewMeta:input_type -> rill.runtime.v1.MetricsViewMetaRequest - 70, // 143: rill.runtime.v1.RuntimeService.MetricsViewToplist:input_type -> rill.runtime.v1.MetricsViewToplistRequest - 72, // 144: rill.runtime.v1.RuntimeService.MetricsViewTimeSeries:input_type -> rill.runtime.v1.MetricsViewTimeSeriesRequest - 74, // 145: rill.runtime.v1.RuntimeService.MetricsViewTotals:input_type -> rill.runtime.v1.MetricsViewTotalsRequest - 79, // 146: rill.runtime.v1.RuntimeService.EstimateRollupInterval:input_type -> rill.runtime.v1.EstimateRollupIntervalRequest - 92, // 147: rill.runtime.v1.RuntimeService.GetTopK:input_type -> rill.runtime.v1.GetTopKRequest - 94, // 148: rill.runtime.v1.RuntimeService.GetNullCount:input_type -> rill.runtime.v1.GetNullCountRequest - 96, // 149: rill.runtime.v1.RuntimeService.GetDescriptiveStatistics:input_type -> rill.runtime.v1.GetDescriptiveStatisticsRequest - 98, // 150: rill.runtime.v1.RuntimeService.EstimateSmallestTimeGrain:input_type -> rill.runtime.v1.EstimateSmallestTimeGrainRequest - 100, // 151: rill.runtime.v1.RuntimeService.GetNumericHistogram:input_type -> rill.runtime.v1.GetNumericHistogramRequest - 102, // 152: rill.runtime.v1.RuntimeService.GetRugHistogram:input_type -> rill.runtime.v1.GetRugHistogramRequest - 103, // 153: rill.runtime.v1.RuntimeService.GetTimeRangeSummary:input_type -> rill.runtime.v1.GetTimeRangeSummaryRequest - 104, // 154: rill.runtime.v1.RuntimeService.GetCardinalityOfColumn:input_type -> rill.runtime.v1.GetCardinalityOfColumnRequest - 105, // 155: rill.runtime.v1.RuntimeService.GenerateTimeSeries:input_type -> rill.runtime.v1.GenerateTimeSeriesRequest - 115, // 156: rill.runtime.v1.RuntimeService.GetTableCardinality:input_type -> rill.runtime.v1.GetTableCardinalityRequest - 117, // 157: rill.runtime.v1.RuntimeService.ProfileColumns:input_type -> rill.runtime.v1.ProfileColumnsRequest - 120, // 158: rill.runtime.v1.RuntimeService.GetTableRows:input_type -> rill.runtime.v1.GetTableRowsRequest - 123, // 159: rill.runtime.v1.RuntimeService.ListConnectors:input_type -> rill.runtime.v1.ListConnectorsRequest - 9, // 160: rill.runtime.v1.RuntimeService.Ping:output_type -> rill.runtime.v1.PingResponse - 12, // 161: rill.runtime.v1.RuntimeService.ListRepos:output_type -> rill.runtime.v1.ListReposResponse - 14, // 162: rill.runtime.v1.RuntimeService.GetRepo:output_type -> rill.runtime.v1.GetRepoResponse - 16, // 163: rill.runtime.v1.RuntimeService.CreateRepo:output_type -> rill.runtime.v1.CreateRepoResponse - 18, // 164: rill.runtime.v1.RuntimeService.DeleteRepo:output_type -> rill.runtime.v1.DeleteRepoResponse - 20, // 165: rill.runtime.v1.RuntimeService.ListFiles:output_type -> rill.runtime.v1.ListFilesResponse - 22, // 166: rill.runtime.v1.RuntimeService.GetFile:output_type -> rill.runtime.v1.GetFileResponse - 24, // 167: rill.runtime.v1.RuntimeService.PutFile:output_type -> rill.runtime.v1.PutFileResponse - 26, // 168: rill.runtime.v1.RuntimeService.DeleteFile:output_type -> rill.runtime.v1.DeleteFileResponse - 28, // 169: rill.runtime.v1.RuntimeService.RenameFile:output_type -> rill.runtime.v1.RenameFileResponse - 31, // 170: rill.runtime.v1.RuntimeService.ListInstances:output_type -> rill.runtime.v1.ListInstancesResponse - 33, // 171: rill.runtime.v1.RuntimeService.GetInstance:output_type -> rill.runtime.v1.GetInstanceResponse - 35, // 172: rill.runtime.v1.RuntimeService.CreateInstance:output_type -> rill.runtime.v1.CreateInstanceResponse - 37, // 173: rill.runtime.v1.RuntimeService.DeleteInstance:output_type -> rill.runtime.v1.DeleteInstanceResponse - 44, // 174: rill.runtime.v1.RuntimeService.ListCatalogObjects:output_type -> rill.runtime.v1.ListCatalogObjectsResponse - 46, // 175: rill.runtime.v1.RuntimeService.GetCatalogObject:output_type -> rill.runtime.v1.GetCatalogObjectResponse - 48, // 176: rill.runtime.v1.RuntimeService.TriggerRefresh:output_type -> rill.runtime.v1.TriggerRefreshResponse - 50, // 177: rill.runtime.v1.RuntimeService.TriggerSync:output_type -> rill.runtime.v1.TriggerSyncResponse - 52, // 178: rill.runtime.v1.RuntimeService.Migrate:output_type -> rill.runtime.v1.MigrateResponse - 59, // 179: rill.runtime.v1.RuntimeService.PutFileAndMigrate:output_type -> rill.runtime.v1.PutFileAndMigrateResponse - 61, // 180: rill.runtime.v1.RuntimeService.DeleteFileAndMigrate:output_type -> rill.runtime.v1.DeleteFileAndMigrateResponse - 63, // 181: rill.runtime.v1.RuntimeService.RenameFileAndMigrate:output_type -> rill.runtime.v1.RenameFileAndMigrateResponse - 55, // 182: rill.runtime.v1.RuntimeService.MigrateSingle:output_type -> rill.runtime.v1.MigrateSingleResponse - 57, // 183: rill.runtime.v1.RuntimeService.MigrateDelete:output_type -> rill.runtime.v1.MigrateDeleteResponse - 65, // 184: rill.runtime.v1.RuntimeService.Query:output_type -> rill.runtime.v1.QueryResponse - 67, // 185: rill.runtime.v1.RuntimeService.QueryDirect:output_type -> rill.runtime.v1.QueryDirectResponse - 69, // 186: rill.runtime.v1.RuntimeService.MetricsViewMeta:output_type -> rill.runtime.v1.MetricsViewMetaResponse - 71, // 187: rill.runtime.v1.RuntimeService.MetricsViewToplist:output_type -> rill.runtime.v1.MetricsViewToplistResponse - 73, // 188: rill.runtime.v1.RuntimeService.MetricsViewTimeSeries:output_type -> rill.runtime.v1.MetricsViewTimeSeriesResponse - 75, // 189: rill.runtime.v1.RuntimeService.MetricsViewTotals:output_type -> rill.runtime.v1.MetricsViewTotalsResponse - 80, // 190: rill.runtime.v1.RuntimeService.EstimateRollupInterval:output_type -> rill.runtime.v1.EstimateRollupIntervalResponse - 84, // 191: rill.runtime.v1.RuntimeService.GetTopK:output_type -> rill.runtime.v1.GetTopKResponse - 95, // 192: rill.runtime.v1.RuntimeService.GetNullCount:output_type -> rill.runtime.v1.GetNullCountResponse - 88, // 193: rill.runtime.v1.RuntimeService.GetDescriptiveStatistics:output_type -> rill.runtime.v1.GetDescriptiveStatisticsResponse - 99, // 194: rill.runtime.v1.RuntimeService.EstimateSmallestTimeGrain:output_type -> rill.runtime.v1.EstimateSmallestTimeGrainResponse - 87, // 195: rill.runtime.v1.RuntimeService.GetNumericHistogram:output_type -> rill.runtime.v1.GetNumericHistogramResponse - 86, // 196: rill.runtime.v1.RuntimeService.GetRugHistogram:output_type -> rill.runtime.v1.GetRugHistogramResponse - 89, // 197: rill.runtime.v1.RuntimeService.GetTimeRangeSummary:output_type -> rill.runtime.v1.GetTimeRangeSummaryResponse - 83, // 198: rill.runtime.v1.RuntimeService.GetCardinalityOfColumn:output_type -> rill.runtime.v1.GetCardinalityOfColumnResponse - 111, // 199: rill.runtime.v1.RuntimeService.GenerateTimeSeries:output_type -> rill.runtime.v1.GenerateTimeSeriesResponse - 116, // 200: rill.runtime.v1.RuntimeService.GetTableCardinality:output_type -> rill.runtime.v1.GetTableCardinalityResponse - 118, // 201: rill.runtime.v1.RuntimeService.ProfileColumns:output_type -> rill.runtime.v1.ProfileColumnsResponse - 121, // 202: rill.runtime.v1.RuntimeService.GetTableRows:output_type -> rill.runtime.v1.GetTableRowsResponse - 124, // 203: rill.runtime.v1.RuntimeService.ListConnectors:output_type -> rill.runtime.v1.ListConnectorsResponse - 160, // [160:204] is the sub-list for method output_type - 116, // [116:160] is the sub-list for method input_type - 116, // [116:116] is the sub-list for extension type_name - 116, // [116:116] is the sub-list for extension extendee - 0, // [0:116] is the sub-list for field type_name -} - -func init() { file_runtime_proto_init() } -func file_runtime_proto_init() { - if File_runtime_proto != nil { + 129, // 9: rill.runtime.v1.CatalogObject.table:type_name -> rill.runtime.v1.Table + 130, // 10: rill.runtime.v1.CatalogObject.source:type_name -> rill.runtime.v1.Source + 131, // 11: rill.runtime.v1.CatalogObject.model:type_name -> rill.runtime.v1.Model + 132, // 12: rill.runtime.v1.CatalogObject.metrics_view:type_name -> rill.runtime.v1.MetricsView + 128, // 13: rill.runtime.v1.CatalogObject.created_on:type_name -> google.protobuf.Timestamp + 128, // 14: rill.runtime.v1.CatalogObject.updated_on:type_name -> google.protobuf.Timestamp + 128, // 15: rill.runtime.v1.CatalogObject.refreshed_on:type_name -> google.protobuf.Timestamp + 3, // 16: rill.runtime.v1.ListCatalogObjectsRequest.type:type_name -> rill.runtime.v1.CatalogObject.Type + 36, // 17: rill.runtime.v1.ListCatalogObjectsResponse.objects:type_name -> rill.runtime.v1.CatalogObject + 36, // 18: rill.runtime.v1.GetCatalogObjectResponse.object:type_name -> rill.runtime.v1.CatalogObject + 47, // 19: rill.runtime.v1.MigrateResponse.errors:type_name -> rill.runtime.v1.MigrationError + 4, // 20: rill.runtime.v1.MigrationError.code:type_name -> rill.runtime.v1.MigrationError.Code + 117, // 21: rill.runtime.v1.MigrationError.start_location:type_name -> rill.runtime.v1.MigrationError.CharLocation + 117, // 22: rill.runtime.v1.MigrationError.end_location:type_name -> rill.runtime.v1.MigrationError.CharLocation + 47, // 23: rill.runtime.v1.PutFileAndMigrateResponse.errors:type_name -> rill.runtime.v1.MigrationError + 47, // 24: rill.runtime.v1.DeleteFileAndMigrateResponse.errors:type_name -> rill.runtime.v1.MigrationError + 47, // 25: rill.runtime.v1.RenameFileAndMigrateResponse.errors:type_name -> rill.runtime.v1.MigrationError + 133, // 26: rill.runtime.v1.QueryRequest.args:type_name -> google.protobuf.Value + 134, // 27: rill.runtime.v1.QueryResponse.meta:type_name -> rill.runtime.v1.StructType + 135, // 28: rill.runtime.v1.QueryResponse.data:type_name -> google.protobuf.Struct + 133, // 29: rill.runtime.v1.QueryDirectRequest.args:type_name -> google.protobuf.Value + 134, // 30: rill.runtime.v1.QueryDirectResponse.meta:type_name -> rill.runtime.v1.StructType + 135, // 31: rill.runtime.v1.QueryDirectResponse.data:type_name -> google.protobuf.Struct + 128, // 32: rill.runtime.v1.MetricsViewToplistRequest.time_start:type_name -> google.protobuf.Timestamp + 128, // 33: rill.runtime.v1.MetricsViewToplistRequest.time_end:type_name -> google.protobuf.Timestamp + 68, // 34: rill.runtime.v1.MetricsViewToplistRequest.sort:type_name -> rill.runtime.v1.MetricsViewSort + 69, // 35: rill.runtime.v1.MetricsViewToplistRequest.filter:type_name -> rill.runtime.v1.MetricsViewFilter + 70, // 36: rill.runtime.v1.MetricsViewToplistResponse.meta:type_name -> rill.runtime.v1.MetricsViewColumn + 135, // 37: rill.runtime.v1.MetricsViewToplistResponse.data:type_name -> google.protobuf.Struct + 128, // 38: rill.runtime.v1.MetricsViewTimeSeriesRequest.time_start:type_name -> google.protobuf.Timestamp + 128, // 39: rill.runtime.v1.MetricsViewTimeSeriesRequest.time_end:type_name -> google.protobuf.Timestamp + 69, // 40: rill.runtime.v1.MetricsViewTimeSeriesRequest.filter:type_name -> rill.runtime.v1.MetricsViewFilter + 70, // 41: rill.runtime.v1.MetricsViewTimeSeriesResponse.meta:type_name -> rill.runtime.v1.MetricsViewColumn + 135, // 42: rill.runtime.v1.MetricsViewTimeSeriesResponse.data:type_name -> google.protobuf.Struct + 128, // 43: rill.runtime.v1.MetricsViewTotalsRequest.time_start:type_name -> google.protobuf.Timestamp + 128, // 44: rill.runtime.v1.MetricsViewTotalsRequest.time_end:type_name -> google.protobuf.Timestamp + 69, // 45: rill.runtime.v1.MetricsViewTotalsRequest.filter:type_name -> rill.runtime.v1.MetricsViewFilter + 70, // 46: rill.runtime.v1.MetricsViewTotalsResponse.meta:type_name -> rill.runtime.v1.MetricsViewColumn + 135, // 47: rill.runtime.v1.MetricsViewTotalsResponse.data:type_name -> google.protobuf.Struct + 118, // 48: rill.runtime.v1.MetricsViewFilter.include:type_name -> rill.runtime.v1.MetricsViewFilter.Cond + 118, // 49: rill.runtime.v1.MetricsViewFilter.exclude:type_name -> rill.runtime.v1.MetricsViewFilter.Cond + 128, // 50: rill.runtime.v1.EstimateRollupIntervalResponse.start:type_name -> google.protobuf.Timestamp + 128, // 51: rill.runtime.v1.EstimateRollupIntervalResponse.end:type_name -> google.protobuf.Timestamp + 0, // 52: rill.runtime.v1.EstimateRollupIntervalResponse.interval:type_name -> rill.runtime.v1.TimeGrain + 74, // 53: rill.runtime.v1.ProfileColumnSummary.categorical_summary:type_name -> rill.runtime.v1.CategoricalSummary + 77, // 54: rill.runtime.v1.ProfileColumnSummary.numeric_summary:type_name -> rill.runtime.v1.NumericSummary + 82, // 55: rill.runtime.v1.ProfileColumnSummary.time_range_summary:type_name -> rill.runtime.v1.TimeRangeSummary + 85, // 56: rill.runtime.v1.CategoricalSummary.topK:type_name -> rill.runtime.v1.TopK + 74, // 57: rill.runtime.v1.GetCardinalityOfColumnResponse.categorical_summary:type_name -> rill.runtime.v1.CategoricalSummary + 74, // 58: rill.runtime.v1.GetTopKResponse.categorical_summary:type_name -> rill.runtime.v1.CategoricalSummary + 93, // 59: rill.runtime.v1.NumericSummary.numeric_histogram_bins:type_name -> rill.runtime.v1.NumericHistogramBins + 89, // 60: rill.runtime.v1.NumericSummary.numeric_statistics:type_name -> rill.runtime.v1.NumericStatistics + 83, // 61: rill.runtime.v1.NumericSummary.numeric_outliers:type_name -> rill.runtime.v1.NumericOutliers + 77, // 62: rill.runtime.v1.GetRugHistogramResponse.numeric_summary:type_name -> rill.runtime.v1.NumericSummary + 77, // 63: rill.runtime.v1.GetNumericHistogramResponse.numeric_summary:type_name -> rill.runtime.v1.NumericSummary + 77, // 64: rill.runtime.v1.GetDescriptiveStatisticsResponse.numeric_summary:type_name -> rill.runtime.v1.NumericSummary + 82, // 65: rill.runtime.v1.GetTimeRangeSummaryResponse.time_range_summary:type_name -> rill.runtime.v1.TimeRangeSummary + 128, // 66: rill.runtime.v1.TimeRangeSummary.min:type_name -> google.protobuf.Timestamp + 128, // 67: rill.runtime.v1.TimeRangeSummary.max:type_name -> google.protobuf.Timestamp + 119, // 68: rill.runtime.v1.TimeRangeSummary.interval:type_name -> rill.runtime.v1.TimeRangeSummary.Interval + 120, // 69: rill.runtime.v1.NumericOutliers.outliers:type_name -> rill.runtime.v1.NumericOutliers.Outlier + 121, // 70: rill.runtime.v1.TopK.entries:type_name -> rill.runtime.v1.TopK.TopKEntry + 0, // 71: rill.runtime.v1.EstimateSmallestTimeGrainResponse.time_grain:type_name -> rill.runtime.v1.TimeGrain + 122, // 72: rill.runtime.v1.NumericHistogramBins.bins:type_name -> rill.runtime.v1.NumericHistogramBins.Bin + 123, // 73: rill.runtime.v1.GenerateTimeSeriesRequest.measures:type_name -> rill.runtime.v1.GenerateTimeSeriesRequest.BasicMeasures + 99, // 74: rill.runtime.v1.GenerateTimeSeriesRequest.time_range:type_name -> rill.runtime.v1.TimeSeriesTimeRange + 101, // 75: rill.runtime.v1.GenerateTimeSeriesRequest.filters:type_name -> rill.runtime.v1.MetricsViewRequestFilter + 128, // 76: rill.runtime.v1.TimeSeriesTimeRange.start:type_name -> google.protobuf.Timestamp + 128, // 77: rill.runtime.v1.TimeSeriesTimeRange.end:type_name -> google.protobuf.Timestamp + 0, // 78: rill.runtime.v1.TimeSeriesTimeRange.interval:type_name -> rill.runtime.v1.TimeGrain + 133, // 79: rill.runtime.v1.MetricsViewDimensionValue.in:type_name -> google.protobuf.Value + 124, // 80: rill.runtime.v1.MetricsViewDimensionValue.like:type_name -> rill.runtime.v1.MetricsViewDimensionValue.Values + 100, // 81: rill.runtime.v1.MetricsViewRequestFilter.include:type_name -> rill.runtime.v1.MetricsViewDimensionValue + 100, // 82: rill.runtime.v1.MetricsViewRequestFilter.exclude:type_name -> rill.runtime.v1.MetricsViewDimensionValue + 104, // 83: rill.runtime.v1.TimeSeriesResponse.results:type_name -> rill.runtime.v1.TimeSeriesValue + 125, // 84: rill.runtime.v1.TimeSeriesResponse.spark:type_name -> rill.runtime.v1.TimeSeriesResponse.TimeSeriesValues + 99, // 85: rill.runtime.v1.TimeSeriesResponse.time_range:type_name -> rill.runtime.v1.TimeSeriesTimeRange + 102, // 86: rill.runtime.v1.GenerateTimeSeriesResponse.rollup:type_name -> rill.runtime.v1.TimeSeriesResponse + 126, // 87: rill.runtime.v1.TimeSeriesValue.records:type_name -> rill.runtime.v1.TimeSeriesValue.RecordsEntry + 2, // 88: rill.runtime.v1.RenameDatabaseObjectRequest.type:type_name -> rill.runtime.v1.DatabaseObjectType + 111, // 89: rill.runtime.v1.ProfileColumnsResponse.profile_columns:type_name -> rill.runtime.v1.ProfileColumn + 135, // 90: rill.runtime.v1.GetTableRowsResponse.data:type_name -> google.protobuf.Struct + 127, // 91: rill.runtime.v1.Connector.properties:type_name -> rill.runtime.v1.Connector.Property + 114, // 92: rill.runtime.v1.ListConnectorsResponse.connectors:type_name -> rill.runtime.v1.Connector + 133, // 93: rill.runtime.v1.MetricsViewFilter.Cond.in:type_name -> google.protobuf.Value + 133, // 94: rill.runtime.v1.MetricsViewFilter.Cond.like:type_name -> google.protobuf.Value + 98, // 95: rill.runtime.v1.GenerateTimeSeriesRequest.BasicMeasures.basic_measures:type_name -> rill.runtime.v1.BasicMeasureDefinition + 133, // 96: rill.runtime.v1.MetricsViewDimensionValue.Values.values:type_name -> google.protobuf.Value + 104, // 97: rill.runtime.v1.TimeSeriesResponse.TimeSeriesValues.values:type_name -> rill.runtime.v1.TimeSeriesValue + 5, // 98: rill.runtime.v1.Connector.Property.type:type_name -> rill.runtime.v1.Connector.Property.Type + 6, // 99: rill.runtime.v1.RuntimeService.Ping:input_type -> rill.runtime.v1.PingRequest + 9, // 100: rill.runtime.v1.RuntimeService.ListRepos:input_type -> rill.runtime.v1.ListReposRequest + 11, // 101: rill.runtime.v1.RuntimeService.GetRepo:input_type -> rill.runtime.v1.GetRepoRequest + 13, // 102: rill.runtime.v1.RuntimeService.CreateRepo:input_type -> rill.runtime.v1.CreateRepoRequest + 15, // 103: rill.runtime.v1.RuntimeService.DeleteRepo:input_type -> rill.runtime.v1.DeleteRepoRequest + 17, // 104: rill.runtime.v1.RuntimeService.ListFiles:input_type -> rill.runtime.v1.ListFilesRequest + 19, // 105: rill.runtime.v1.RuntimeService.GetFile:input_type -> rill.runtime.v1.GetFileRequest + 21, // 106: rill.runtime.v1.RuntimeService.PutFile:input_type -> rill.runtime.v1.PutFileRequest + 23, // 107: rill.runtime.v1.RuntimeService.DeleteFile:input_type -> rill.runtime.v1.DeleteFileRequest + 25, // 108: rill.runtime.v1.RuntimeService.RenameFile:input_type -> rill.runtime.v1.RenameFileRequest + 28, // 109: rill.runtime.v1.RuntimeService.ListInstances:input_type -> rill.runtime.v1.ListInstancesRequest + 30, // 110: rill.runtime.v1.RuntimeService.GetInstance:input_type -> rill.runtime.v1.GetInstanceRequest + 32, // 111: rill.runtime.v1.RuntimeService.CreateInstance:input_type -> rill.runtime.v1.CreateInstanceRequest + 34, // 112: rill.runtime.v1.RuntimeService.DeleteInstance:input_type -> rill.runtime.v1.DeleteInstanceRequest + 37, // 113: rill.runtime.v1.RuntimeService.ListCatalogObjects:input_type -> rill.runtime.v1.ListCatalogObjectsRequest + 39, // 114: rill.runtime.v1.RuntimeService.GetCatalogObject:input_type -> rill.runtime.v1.GetCatalogObjectRequest + 41, // 115: rill.runtime.v1.RuntimeService.TriggerRefresh:input_type -> rill.runtime.v1.TriggerRefreshRequest + 43, // 116: rill.runtime.v1.RuntimeService.TriggerSync:input_type -> rill.runtime.v1.TriggerSyncRequest + 45, // 117: rill.runtime.v1.RuntimeService.Migrate:input_type -> rill.runtime.v1.MigrateRequest + 52, // 118: rill.runtime.v1.RuntimeService.PutFileAndMigrate:input_type -> rill.runtime.v1.PutFileAndMigrateRequest + 54, // 119: rill.runtime.v1.RuntimeService.DeleteFileAndMigrate:input_type -> rill.runtime.v1.DeleteFileAndMigrateRequest + 56, // 120: rill.runtime.v1.RuntimeService.RenameFileAndMigrate:input_type -> rill.runtime.v1.RenameFileAndMigrateRequest + 48, // 121: rill.runtime.v1.RuntimeService.MigrateSingle:input_type -> rill.runtime.v1.MigrateSingleRequest + 50, // 122: rill.runtime.v1.RuntimeService.MigrateDelete:input_type -> rill.runtime.v1.MigrateDeleteRequest + 58, // 123: rill.runtime.v1.RuntimeService.Query:input_type -> rill.runtime.v1.QueryRequest + 60, // 124: rill.runtime.v1.RuntimeService.QueryDirect:input_type -> rill.runtime.v1.QueryDirectRequest + 62, // 125: rill.runtime.v1.RuntimeService.MetricsViewToplist:input_type -> rill.runtime.v1.MetricsViewToplistRequest + 64, // 126: rill.runtime.v1.RuntimeService.MetricsViewTimeSeries:input_type -> rill.runtime.v1.MetricsViewTimeSeriesRequest + 66, // 127: rill.runtime.v1.RuntimeService.MetricsViewTotals:input_type -> rill.runtime.v1.MetricsViewTotalsRequest + 71, // 128: rill.runtime.v1.RuntimeService.EstimateRollupInterval:input_type -> rill.runtime.v1.EstimateRollupIntervalRequest + 84, // 129: rill.runtime.v1.RuntimeService.GetTopK:input_type -> rill.runtime.v1.GetTopKRequest + 86, // 130: rill.runtime.v1.RuntimeService.GetNullCount:input_type -> rill.runtime.v1.GetNullCountRequest + 88, // 131: rill.runtime.v1.RuntimeService.GetDescriptiveStatistics:input_type -> rill.runtime.v1.GetDescriptiveStatisticsRequest + 90, // 132: rill.runtime.v1.RuntimeService.EstimateSmallestTimeGrain:input_type -> rill.runtime.v1.EstimateSmallestTimeGrainRequest + 92, // 133: rill.runtime.v1.RuntimeService.GetNumericHistogram:input_type -> rill.runtime.v1.GetNumericHistogramRequest + 94, // 134: rill.runtime.v1.RuntimeService.GetRugHistogram:input_type -> rill.runtime.v1.GetRugHistogramRequest + 95, // 135: rill.runtime.v1.RuntimeService.GetTimeRangeSummary:input_type -> rill.runtime.v1.GetTimeRangeSummaryRequest + 96, // 136: rill.runtime.v1.RuntimeService.GetCardinalityOfColumn:input_type -> rill.runtime.v1.GetCardinalityOfColumnRequest + 97, // 137: rill.runtime.v1.RuntimeService.GenerateTimeSeries:input_type -> rill.runtime.v1.GenerateTimeSeriesRequest + 107, // 138: rill.runtime.v1.RuntimeService.GetTableCardinality:input_type -> rill.runtime.v1.GetTableCardinalityRequest + 109, // 139: rill.runtime.v1.RuntimeService.ProfileColumns:input_type -> rill.runtime.v1.ProfileColumnsRequest + 112, // 140: rill.runtime.v1.RuntimeService.GetTableRows:input_type -> rill.runtime.v1.GetTableRowsRequest + 115, // 141: rill.runtime.v1.RuntimeService.ListConnectors:input_type -> rill.runtime.v1.ListConnectorsRequest + 7, // 142: rill.runtime.v1.RuntimeService.Ping:output_type -> rill.runtime.v1.PingResponse + 10, // 143: rill.runtime.v1.RuntimeService.ListRepos:output_type -> rill.runtime.v1.ListReposResponse + 12, // 144: rill.runtime.v1.RuntimeService.GetRepo:output_type -> rill.runtime.v1.GetRepoResponse + 14, // 145: rill.runtime.v1.RuntimeService.CreateRepo:output_type -> rill.runtime.v1.CreateRepoResponse + 16, // 146: rill.runtime.v1.RuntimeService.DeleteRepo:output_type -> rill.runtime.v1.DeleteRepoResponse + 18, // 147: rill.runtime.v1.RuntimeService.ListFiles:output_type -> rill.runtime.v1.ListFilesResponse + 20, // 148: rill.runtime.v1.RuntimeService.GetFile:output_type -> rill.runtime.v1.GetFileResponse + 22, // 149: rill.runtime.v1.RuntimeService.PutFile:output_type -> rill.runtime.v1.PutFileResponse + 24, // 150: rill.runtime.v1.RuntimeService.DeleteFile:output_type -> rill.runtime.v1.DeleteFileResponse + 26, // 151: rill.runtime.v1.RuntimeService.RenameFile:output_type -> rill.runtime.v1.RenameFileResponse + 29, // 152: rill.runtime.v1.RuntimeService.ListInstances:output_type -> rill.runtime.v1.ListInstancesResponse + 31, // 153: rill.runtime.v1.RuntimeService.GetInstance:output_type -> rill.runtime.v1.GetInstanceResponse + 33, // 154: rill.runtime.v1.RuntimeService.CreateInstance:output_type -> rill.runtime.v1.CreateInstanceResponse + 35, // 155: rill.runtime.v1.RuntimeService.DeleteInstance:output_type -> rill.runtime.v1.DeleteInstanceResponse + 38, // 156: rill.runtime.v1.RuntimeService.ListCatalogObjects:output_type -> rill.runtime.v1.ListCatalogObjectsResponse + 40, // 157: rill.runtime.v1.RuntimeService.GetCatalogObject:output_type -> rill.runtime.v1.GetCatalogObjectResponse + 42, // 158: rill.runtime.v1.RuntimeService.TriggerRefresh:output_type -> rill.runtime.v1.TriggerRefreshResponse + 44, // 159: rill.runtime.v1.RuntimeService.TriggerSync:output_type -> rill.runtime.v1.TriggerSyncResponse + 46, // 160: rill.runtime.v1.RuntimeService.Migrate:output_type -> rill.runtime.v1.MigrateResponse + 53, // 161: rill.runtime.v1.RuntimeService.PutFileAndMigrate:output_type -> rill.runtime.v1.PutFileAndMigrateResponse + 55, // 162: rill.runtime.v1.RuntimeService.DeleteFileAndMigrate:output_type -> rill.runtime.v1.DeleteFileAndMigrateResponse + 57, // 163: rill.runtime.v1.RuntimeService.RenameFileAndMigrate:output_type -> rill.runtime.v1.RenameFileAndMigrateResponse + 49, // 164: rill.runtime.v1.RuntimeService.MigrateSingle:output_type -> rill.runtime.v1.MigrateSingleResponse + 51, // 165: rill.runtime.v1.RuntimeService.MigrateDelete:output_type -> rill.runtime.v1.MigrateDeleteResponse + 59, // 166: rill.runtime.v1.RuntimeService.Query:output_type -> rill.runtime.v1.QueryResponse + 61, // 167: rill.runtime.v1.RuntimeService.QueryDirect:output_type -> rill.runtime.v1.QueryDirectResponse + 63, // 168: rill.runtime.v1.RuntimeService.MetricsViewToplist:output_type -> rill.runtime.v1.MetricsViewToplistResponse + 65, // 169: rill.runtime.v1.RuntimeService.MetricsViewTimeSeries:output_type -> rill.runtime.v1.MetricsViewTimeSeriesResponse + 67, // 170: rill.runtime.v1.RuntimeService.MetricsViewTotals:output_type -> rill.runtime.v1.MetricsViewTotalsResponse + 72, // 171: rill.runtime.v1.RuntimeService.EstimateRollupInterval:output_type -> rill.runtime.v1.EstimateRollupIntervalResponse + 76, // 172: rill.runtime.v1.RuntimeService.GetTopK:output_type -> rill.runtime.v1.GetTopKResponse + 87, // 173: rill.runtime.v1.RuntimeService.GetNullCount:output_type -> rill.runtime.v1.GetNullCountResponse + 80, // 174: rill.runtime.v1.RuntimeService.GetDescriptiveStatistics:output_type -> rill.runtime.v1.GetDescriptiveStatisticsResponse + 91, // 175: rill.runtime.v1.RuntimeService.EstimateSmallestTimeGrain:output_type -> rill.runtime.v1.EstimateSmallestTimeGrainResponse + 79, // 176: rill.runtime.v1.RuntimeService.GetNumericHistogram:output_type -> rill.runtime.v1.GetNumericHistogramResponse + 78, // 177: rill.runtime.v1.RuntimeService.GetRugHistogram:output_type -> rill.runtime.v1.GetRugHistogramResponse + 81, // 178: rill.runtime.v1.RuntimeService.GetTimeRangeSummary:output_type -> rill.runtime.v1.GetTimeRangeSummaryResponse + 75, // 179: rill.runtime.v1.RuntimeService.GetCardinalityOfColumn:output_type -> rill.runtime.v1.GetCardinalityOfColumnResponse + 103, // 180: rill.runtime.v1.RuntimeService.GenerateTimeSeries:output_type -> rill.runtime.v1.GenerateTimeSeriesResponse + 108, // 181: rill.runtime.v1.RuntimeService.GetTableCardinality:output_type -> rill.runtime.v1.GetTableCardinalityResponse + 110, // 182: rill.runtime.v1.RuntimeService.ProfileColumns:output_type -> rill.runtime.v1.ProfileColumnsResponse + 113, // 183: rill.runtime.v1.RuntimeService.GetTableRows:output_type -> rill.runtime.v1.GetTableRowsResponse + 116, // 184: rill.runtime.v1.RuntimeService.ListConnectors:output_type -> rill.runtime.v1.ListConnectorsResponse + 142, // [142:185] is the sub-list for method output_type + 99, // [99:142] is the sub-list for method input_type + 99, // [99:99] is the sub-list for extension type_name + 99, // [99:99] is the sub-list for extension extendee + 0, // [0:99] is the sub-list for field type_name +} + +func init() { file_rill_runtime_v1_api_proto_init() } +func file_rill_runtime_v1_api_proto_init() { + if File_rill_runtime_v1_api_proto != nil { return } + file_rill_runtime_v1_catalog_proto_init() + file_rill_runtime_v1_schema_proto_init() if !protoimpl.UnsafeEnabled { - file_runtime_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PingRequest); i { case 0: return &v.state @@ -10938,7 +9741,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PingResponse); i { case 0: return &v.state @@ -10950,7 +9753,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Repo); i { case 0: return &v.state @@ -10962,7 +9765,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListReposRequest); i { case 0: return &v.state @@ -10974,7 +9777,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListReposResponse); i { case 0: return &v.state @@ -10986,7 +9789,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRepoRequest); i { case 0: return &v.state @@ -10998,7 +9801,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRepoResponse); i { case 0: return &v.state @@ -11010,7 +9813,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateRepoRequest); i { case 0: return &v.state @@ -11022,7 +9825,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateRepoResponse); i { case 0: return &v.state @@ -11034,7 +9837,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteRepoRequest); i { case 0: return &v.state @@ -11046,7 +9849,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteRepoResponse); i { case 0: return &v.state @@ -11058,7 +9861,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListFilesRequest); i { case 0: return &v.state @@ -11070,7 +9873,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListFilesResponse); i { case 0: return &v.state @@ -11082,7 +9885,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFileRequest); i { case 0: return &v.state @@ -11094,7 +9897,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFileResponse); i { case 0: return &v.state @@ -11106,7 +9909,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PutFileRequest); i { case 0: return &v.state @@ -11118,7 +9921,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PutFileResponse); i { case 0: return &v.state @@ -11130,7 +9933,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteFileRequest); i { case 0: return &v.state @@ -11142,7 +9945,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteFileResponse); i { case 0: return &v.state @@ -11154,7 +9957,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RenameFileRequest); i { case 0: return &v.state @@ -11166,7 +9969,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RenameFileResponse); i { case 0: return &v.state @@ -11178,7 +9981,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Instance); i { case 0: return &v.state @@ -11190,7 +9993,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListInstancesRequest); i { case 0: return &v.state @@ -11202,7 +10005,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListInstancesResponse); i { case 0: return &v.state @@ -11214,7 +10017,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetInstanceRequest); i { case 0: return &v.state @@ -11226,7 +10029,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetInstanceResponse); i { case 0: return &v.state @@ -11238,7 +10041,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateInstanceRequest); i { case 0: return &v.state @@ -11250,7 +10053,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateInstanceResponse); i { case 0: return &v.state @@ -11262,7 +10065,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteInstanceRequest); i { case 0: return &v.state @@ -11274,7 +10077,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteInstanceResponse); i { case 0: return &v.state @@ -11286,7 +10089,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CatalogObject); i { case 0: return &v.state @@ -11298,55 +10101,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Table); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_runtime_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Source); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_runtime_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Model); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_runtime_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MetricsView); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_runtime_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListCatalogObjectsRequest); i { case 0: return &v.state @@ -11358,7 +10113,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListCatalogObjectsResponse); i { case 0: return &v.state @@ -11370,7 +10125,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCatalogObjectRequest); i { case 0: return &v.state @@ -11382,7 +10137,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCatalogObjectResponse); i { case 0: return &v.state @@ -11394,7 +10149,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TriggerRefreshRequest); i { case 0: return &v.state @@ -11406,7 +10161,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TriggerRefreshResponse); i { case 0: return &v.state @@ -11418,7 +10173,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TriggerSyncRequest); i { case 0: return &v.state @@ -11430,7 +10185,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TriggerSyncResponse); i { case 0: return &v.state @@ -11442,7 +10197,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MigrateRequest); i { case 0: return &v.state @@ -11454,7 +10209,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MigrateResponse); i { case 0: return &v.state @@ -11466,7 +10221,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MigrationError); i { case 0: return &v.state @@ -11478,7 +10233,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MigrateSingleRequest); i { case 0: return &v.state @@ -11490,7 +10245,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MigrateSingleResponse); i { case 0: return &v.state @@ -11502,7 +10257,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MigrateDeleteRequest); i { case 0: return &v.state @@ -11514,7 +10269,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MigrateDeleteResponse); i { case 0: return &v.state @@ -11526,7 +10281,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PutFileAndMigrateRequest); i { case 0: return &v.state @@ -11538,7 +10293,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PutFileAndMigrateResponse); i { case 0: return &v.state @@ -11550,7 +10305,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteFileAndMigrateRequest); i { case 0: return &v.state @@ -11562,7 +10317,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteFileAndMigrateResponse); i { case 0: return &v.state @@ -11574,7 +10329,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RenameFileAndMigrateRequest); i { case 0: return &v.state @@ -11586,7 +10341,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RenameFileAndMigrateResponse); i { case 0: return &v.state @@ -11598,7 +10353,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryRequest); i { case 0: return &v.state @@ -11610,7 +10365,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryResponse); i { case 0: return &v.state @@ -11622,7 +10377,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryDirectRequest); i { case 0: return &v.state @@ -11634,7 +10389,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*QueryDirectResponse); i { case 0: return &v.state @@ -11646,31 +10401,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MetricsViewMetaRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_runtime_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MetricsViewMetaResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_runtime_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MetricsViewToplistRequest); i { case 0: return &v.state @@ -11682,7 +10413,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MetricsViewToplistResponse); i { case 0: return &v.state @@ -11694,7 +10425,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MetricsViewTimeSeriesRequest); i { case 0: return &v.state @@ -11706,7 +10437,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MetricsViewTimeSeriesResponse); i { case 0: return &v.state @@ -11718,7 +10449,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MetricsViewTotalsRequest); i { case 0: return &v.state @@ -11730,7 +10461,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MetricsViewTotalsResponse); i { case 0: return &v.state @@ -11742,7 +10473,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MetricsViewSort); i { case 0: return &v.state @@ -11754,7 +10485,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MetricsViewFilter); i { case 0: return &v.state @@ -11766,7 +10497,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MetricsViewColumn); i { case 0: return &v.state @@ -11778,7 +10509,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EstimateRollupIntervalRequest); i { case 0: return &v.state @@ -11790,7 +10521,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EstimateRollupIntervalResponse); i { case 0: return &v.state @@ -11802,7 +10533,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProfileColumnSummary); i { case 0: return &v.state @@ -11814,7 +10545,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CategoricalSummary); i { case 0: return &v.state @@ -11826,7 +10557,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCardinalityOfColumnResponse); i { case 0: return &v.state @@ -11838,7 +10569,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTopKResponse); i { case 0: return &v.state @@ -11850,7 +10581,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NumericSummary); i { case 0: return &v.state @@ -11862,7 +10593,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRugHistogramResponse); i { case 0: return &v.state @@ -11874,7 +10605,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetNumericHistogramResponse); i { case 0: return &v.state @@ -11886,7 +10617,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetDescriptiveStatisticsResponse); i { case 0: return &v.state @@ -11898,7 +10629,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTimeRangeSummaryResponse); i { case 0: return &v.state @@ -11910,7 +10641,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TimeRangeSummary); i { case 0: return &v.state @@ -11922,7 +10653,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NumericOutliers); i { case 0: return &v.state @@ -11934,7 +10665,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTopKRequest); i { case 0: return &v.state @@ -11946,7 +10677,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TopK); i { case 0: return &v.state @@ -11958,7 +10689,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetNullCountRequest); i { case 0: return &v.state @@ -11970,7 +10701,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetNullCountResponse); i { case 0: return &v.state @@ -11982,7 +10713,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetDescriptiveStatisticsRequest); i { case 0: return &v.state @@ -11994,7 +10725,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NumericStatistics); i { case 0: return &v.state @@ -12006,7 +10737,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EstimateSmallestTimeGrainRequest); i { case 0: return &v.state @@ -12018,7 +10749,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EstimateSmallestTimeGrainResponse); i { case 0: return &v.state @@ -12030,7 +10761,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetNumericHistogramRequest); i { case 0: return &v.state @@ -12042,7 +10773,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NumericHistogramBins); i { case 0: return &v.state @@ -12054,7 +10785,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetRugHistogramRequest); i { case 0: return &v.state @@ -12066,7 +10797,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTimeRangeSummaryRequest); i { case 0: return &v.state @@ -12078,7 +10809,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCardinalityOfColumnRequest); i { case 0: return &v.state @@ -12090,7 +10821,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GenerateTimeSeriesRequest); i { case 0: return &v.state @@ -12102,7 +10833,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*BasicMeasureDefinition); i { case 0: return &v.state @@ -12114,7 +10845,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TimeSeriesTimeRange); i { case 0: return &v.state @@ -12126,7 +10857,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MetricsViewDimensionValue); i { case 0: return &v.state @@ -12138,7 +10869,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MetricsViewRequestFilter); i { case 0: return &v.state @@ -12150,7 +10881,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TimeSeriesResponse); i { case 0: return &v.state @@ -12162,7 +10893,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GenerateTimeSeriesResponse); i { case 0: return &v.state @@ -12174,7 +10905,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TimeSeriesValue); i { case 0: return &v.state @@ -12186,7 +10917,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RenameDatabaseObjectRequest); i { case 0: return &v.state @@ -12198,7 +10929,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RenameDatabaseObjectResponse); i { case 0: return &v.state @@ -12210,7 +10941,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTableCardinalityRequest); i { case 0: return &v.state @@ -12222,7 +10953,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTableCardinalityResponse); i { case 0: return &v.state @@ -12234,7 +10965,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProfileColumnsRequest); i { case 0: return &v.state @@ -12246,7 +10977,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProfileColumnsResponse); i { case 0: return &v.state @@ -12258,7 +10989,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ProfileColumn); i { case 0: return &v.state @@ -12270,7 +11001,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTableRowsRequest); i { case 0: return &v.state @@ -12282,7 +11013,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetTableRowsResponse); i { case 0: return &v.state @@ -12294,7 +11025,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Connector); i { case 0: return &v.state @@ -12306,7 +11037,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListConnectorsRequest); i { case 0: return &v.state @@ -12318,7 +11049,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListConnectorsResponse); i { case 0: return &v.state @@ -12330,67 +11061,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Type); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_runtime_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StructType); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_runtime_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MapType); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_runtime_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MetricsView_Dimension); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_runtime_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MetricsView_Measure); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_runtime_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MigrationError_CharLocation); i { case 0: return &v.state @@ -12402,7 +11073,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MetricsViewFilter_Cond); i { case 0: return &v.state @@ -12414,7 +11085,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TimeRangeSummary_Interval); i { case 0: return &v.state @@ -12426,7 +11097,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NumericOutliers_Outlier); i { case 0: return &v.state @@ -12438,7 +11109,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TopK_TopKEntry); i { case 0: return &v.state @@ -12450,7 +11121,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*NumericHistogramBins_Bin); i { case 0: return &v.state @@ -12462,7 +11133,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GenerateTimeSeriesRequest_BasicMeasures); i { case 0: return &v.state @@ -12474,7 +11145,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*MetricsViewDimensionValue_Values); i { case 0: return &v.state @@ -12486,7 +11157,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*TimeSeriesResponse_TimeSeriesValues); i { case 0: return &v.state @@ -12498,7 +11169,7 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { + file_rill_runtime_v1_api_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Connector_Property); i { case 0: return &v.state @@ -12510,58 +11181,46 @@ func file_runtime_proto_init() { return nil } } - file_runtime_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StructType_Field); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } } - file_runtime_proto_msgTypes[73].OneofWrappers = []interface{}{ + file_rill_runtime_v1_api_proto_msgTypes[67].OneofWrappers = []interface{}{ (*ProfileColumnSummary_CategoricalSummary)(nil), (*ProfileColumnSummary_NumericSummary)(nil), (*ProfileColumnSummary_TimeRangeSummary)(nil), } - file_runtime_proto_msgTypes[74].OneofWrappers = []interface{}{ + file_rill_runtime_v1_api_proto_msgTypes[68].OneofWrappers = []interface{}{ (*CategoricalSummary_TopK)(nil), (*CategoricalSummary_Cardinality)(nil), } - file_runtime_proto_msgTypes[77].OneofWrappers = []interface{}{ + file_rill_runtime_v1_api_proto_msgTypes[71].OneofWrappers = []interface{}{ (*NumericSummary_NumericHistogramBins)(nil), (*NumericSummary_NumericStatistics)(nil), (*NumericSummary_NumericOutliers)(nil), } - file_runtime_proto_msgTypes[84].OneofWrappers = []interface{}{} - file_runtime_proto_msgTypes[97].OneofWrappers = []interface{}{} - file_runtime_proto_msgTypes[98].OneofWrappers = []interface{}{} - file_runtime_proto_msgTypes[100].OneofWrappers = []interface{}{} - file_runtime_proto_msgTypes[102].OneofWrappers = []interface{}{} - file_runtime_proto_msgTypes[104].OneofWrappers = []interface{}{} - file_runtime_proto_msgTypes[105].OneofWrappers = []interface{}{} - file_runtime_proto_msgTypes[126].OneofWrappers = []interface{}{} + file_rill_runtime_v1_api_proto_msgTypes[78].OneofWrappers = []interface{}{} + file_rill_runtime_v1_api_proto_msgTypes[91].OneofWrappers = []interface{}{} + file_rill_runtime_v1_api_proto_msgTypes[92].OneofWrappers = []interface{}{} + file_rill_runtime_v1_api_proto_msgTypes[94].OneofWrappers = []interface{}{} + file_rill_runtime_v1_api_proto_msgTypes[96].OneofWrappers = []interface{}{} + file_rill_runtime_v1_api_proto_msgTypes[98].OneofWrappers = []interface{}{} + file_rill_runtime_v1_api_proto_msgTypes[99].OneofWrappers = []interface{}{} + file_rill_runtime_v1_api_proto_msgTypes[115].OneofWrappers = []interface{}{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_runtime_proto_rawDesc, - NumEnums: 8, - NumMessages: 134, + RawDescriptor: file_rill_runtime_v1_api_proto_rawDesc, + NumEnums: 6, + NumMessages: 122, NumExtensions: 0, NumServices: 1, }, - GoTypes: file_runtime_proto_goTypes, - DependencyIndexes: file_runtime_proto_depIdxs, - EnumInfos: file_runtime_proto_enumTypes, - MessageInfos: file_runtime_proto_msgTypes, + GoTypes: file_rill_runtime_v1_api_proto_goTypes, + DependencyIndexes: file_rill_runtime_v1_api_proto_depIdxs, + EnumInfos: file_rill_runtime_v1_api_proto_enumTypes, + MessageInfos: file_rill_runtime_v1_api_proto_msgTypes, }.Build() - File_runtime_proto = out.File - file_runtime_proto_rawDesc = nil - file_runtime_proto_goTypes = nil - file_runtime_proto_depIdxs = nil + File_rill_runtime_v1_api_proto = out.File + file_rill_runtime_v1_api_proto_rawDesc = nil + file_rill_runtime_v1_api_proto_goTypes = nil + file_rill_runtime_v1_api_proto_depIdxs = nil } diff --git a/runtime/api/runtime.pb.gw.go b/proto/gen/rill/runtime/v1/api.pb.gw.go similarity index 75% rename from runtime/api/runtime.pb.gw.go rename to proto/gen/rill/runtime/v1/api.pb.gw.go index acf8a907a6f..93f127eec7d 100644 --- a/runtime/api/runtime.pb.gw.go +++ b/proto/gen/rill/runtime/v1/api.pb.gw.go @@ -1,12 +1,12 @@ // Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. -// source: runtime.proto +// source: rill/runtime/v1/api.proto /* -Package api is a reverse proxy. +Package runtimev1 is a reverse proxy. It translates gRPC into RESTful JSON APIs. */ -package api +package runtimev1 import ( "context" @@ -1475,78 +1475,6 @@ func local_request_RuntimeService_QueryDirect_0(ctx context.Context, marshaler r } -func request_RuntimeService_MetricsViewMeta_0(ctx context.Context, marshaler runtime.Marshaler, client RuntimeServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MetricsViewMetaRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["instance_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "instance_id") - } - - protoReq.InstanceId, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "instance_id", err) - } - - val, ok = pathParams["metrics_view_name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metrics_view_name") - } - - protoReq.MetricsViewName, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metrics_view_name", err) - } - - msg, err := client.MetricsViewMeta(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) - return msg, metadata, err - -} - -func local_request_RuntimeService_MetricsViewMeta_0(ctx context.Context, marshaler runtime.Marshaler, server RuntimeServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq MetricsViewMetaRequest - var metadata runtime.ServerMetadata - - var ( - val string - ok bool - err error - _ = err - ) - - val, ok = pathParams["instance_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "instance_id") - } - - protoReq.InstanceId, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "instance_id", err) - } - - val, ok = pathParams["metrics_view_name"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "metrics_view_name") - } - - protoReq.MetricsViewName, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "metrics_view_name", err) - } - - msg, err := server.MetricsViewMeta(ctx, &protoReq) - return msg, metadata, err - -} - func request_RuntimeService_MetricsViewToplist_0(ctx context.Context, marshaler runtime.Marshaler, client RuntimeServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq MetricsViewToplistRequest var metadata runtime.ServerMetadata @@ -3004,20 +2932,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/Ping", runtime.WithHTTPPathPattern("/v1/ping")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/Ping", runtime.WithHTTPPathPattern("/v1/ping")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_Ping_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_Ping_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_Ping_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_Ping_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3028,20 +2957,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListRepos", runtime.WithHTTPPathPattern("/v1/repos")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListRepos", runtime.WithHTTPPathPattern("/v1/repos")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_ListRepos_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_ListRepos_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_ListRepos_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_ListRepos_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3052,20 +2982,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetRepo", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetRepo", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_GetRepo_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_GetRepo_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetRepo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetRepo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3076,20 +3007,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/CreateRepo", runtime.WithHTTPPathPattern("/v1/repos")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/CreateRepo", runtime.WithHTTPPathPattern("/v1/repos")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_CreateRepo_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_CreateRepo_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_CreateRepo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_CreateRepo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3100,20 +3032,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/DeleteRepo", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/DeleteRepo", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_DeleteRepo_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_DeleteRepo_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_DeleteRepo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_DeleteRepo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3124,20 +3057,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListFiles", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}/files")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListFiles", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}/files")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_ListFiles_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_ListFiles_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_ListFiles_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_ListFiles_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3148,20 +3082,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetFile", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}/files/-/{path=**}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetFile", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}/files/-/{path=**}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_GetFile_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_GetFile_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetFile_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetFile_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3172,20 +3107,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/PutFile", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}/files/-/{path=**}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/PutFile", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}/files/-/{path=**}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_PutFile_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_PutFile_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_PutFile_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_PutFile_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3196,20 +3132,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/DeleteFile", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}/files/-/{path=**}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/DeleteFile", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}/files/-/{path=**}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_DeleteFile_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_DeleteFile_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_DeleteFile_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_DeleteFile_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3220,20 +3157,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/RenameFile", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}/files/rename")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/RenameFile", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}/files/rename")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_RenameFile_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_RenameFile_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_RenameFile_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_RenameFile_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3244,20 +3182,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListInstances", runtime.WithHTTPPathPattern("/v1/instances")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListInstances", runtime.WithHTTPPathPattern("/v1/instances")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_ListInstances_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_ListInstances_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_ListInstances_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_ListInstances_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3268,20 +3207,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetInstance", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetInstance", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_GetInstance_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_GetInstance_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetInstance_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetInstance_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3292,20 +3232,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/CreateInstance", runtime.WithHTTPPathPattern("/v1/instances")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/CreateInstance", runtime.WithHTTPPathPattern("/v1/instances")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_CreateInstance_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_CreateInstance_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_CreateInstance_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_CreateInstance_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3316,20 +3257,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/DeleteInstance", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/DeleteInstance", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_DeleteInstance_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_DeleteInstance_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_DeleteInstance_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_DeleteInstance_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3340,20 +3282,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListCatalogObjects", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/catalog")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListCatalogObjects", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/catalog")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_ListCatalogObjects_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_ListCatalogObjects_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_ListCatalogObjects_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_ListCatalogObjects_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3364,20 +3307,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetCatalogObject", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/catalog/{name}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetCatalogObject", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/catalog/{name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_GetCatalogObject_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_GetCatalogObject_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetCatalogObject_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetCatalogObject_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3388,20 +3332,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/TriggerRefresh", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/catalog/{name}/refresh")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/TriggerRefresh", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/catalog/{name}/refresh")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_TriggerRefresh_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_TriggerRefresh_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_TriggerRefresh_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_TriggerRefresh_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3412,20 +3357,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/TriggerSync", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/sync")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/TriggerSync", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/sync")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_TriggerSync_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_TriggerSync_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_TriggerSync_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_TriggerSync_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3436,20 +3382,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/Migrate", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/migrate")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/Migrate", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/migrate")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_Migrate_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_Migrate_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_Migrate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_Migrate_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3460,20 +3407,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/PutFileAndMigrate", runtime.WithHTTPPathPattern("/v1/put-and-migrate")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/PutFileAndMigrate", runtime.WithHTTPPathPattern("/v1/put-and-migrate")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_PutFileAndMigrate_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_PutFileAndMigrate_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_PutFileAndMigrate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_PutFileAndMigrate_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3484,20 +3432,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/DeleteFileAndMigrate", runtime.WithHTTPPathPattern("/v1/delete-and-migrate")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/DeleteFileAndMigrate", runtime.WithHTTPPathPattern("/v1/delete-and-migrate")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_DeleteFileAndMigrate_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_DeleteFileAndMigrate_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_DeleteFileAndMigrate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_DeleteFileAndMigrate_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3508,20 +3457,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/RenameFileAndMigrate", runtime.WithHTTPPathPattern("/v1/rename-and-migrate")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/RenameFileAndMigrate", runtime.WithHTTPPathPattern("/v1/rename-and-migrate")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_RenameFileAndMigrate_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_RenameFileAndMigrate_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_RenameFileAndMigrate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_RenameFileAndMigrate_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3532,20 +3482,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/MigrateSingle", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/migrate/single")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/MigrateSingle", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/migrate/single")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_MigrateSingle_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_MigrateSingle_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_MigrateSingle_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_MigrateSingle_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3556,20 +3507,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/MigrateDelete", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/migrate/single/delete")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/MigrateDelete", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/migrate/single/delete")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_MigrateDelete_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_MigrateDelete_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_MigrateDelete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_MigrateDelete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3580,20 +3532,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/Query", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/query")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/Query", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/query")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_Query_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_Query_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_Query_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_Query_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3604,44 +3557,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/QueryDirect", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/query/direct")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/QueryDirect", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/query/direct")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_QueryDirect_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_QueryDirect_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_QueryDirect_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_RuntimeService_MetricsViewMeta_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - var stream runtime.ServerTransportStream - ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/MetricsViewMeta", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/metrics-views/{metrics_view_name}/meta")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := local_request_RuntimeService_MetricsViewMeta_0(ctx, inboundMarshaler, server, req, pathParams) - md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_RuntimeService_MetricsViewMeta_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_QueryDirect_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3652,20 +3582,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/MetricsViewToplist", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/metrics-views/{metrics_view_name}/toplist/{dimension_name}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/MetricsViewToplist", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/metrics-views/{metrics_view_name}/toplist/{dimension_name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_MetricsViewToplist_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_MetricsViewToplist_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_MetricsViewToplist_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_MetricsViewToplist_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3676,20 +3607,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/MetricsViewTimeSeries", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/metrics-views/{metrics_view_name}/timeseries")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/MetricsViewTimeSeries", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/metrics-views/{metrics_view_name}/timeseries")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_MetricsViewTimeSeries_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_MetricsViewTimeSeries_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_MetricsViewTimeSeries_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_MetricsViewTimeSeries_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3700,20 +3632,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/MetricsViewTotals", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/metrics-views/{metrics_view_name}/totals")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/MetricsViewTotals", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/metrics-views/{metrics_view_name}/totals")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_MetricsViewTotals_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_MetricsViewTotals_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_MetricsViewTotals_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_MetricsViewTotals_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3724,20 +3657,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/EstimateRollupInterval", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/estimate-rollup-interval/{table_name}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/EstimateRollupInterval", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/estimate-rollup-interval/{table_name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_EstimateRollupInterval_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_EstimateRollupInterval_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_EstimateRollupInterval_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_EstimateRollupInterval_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3748,20 +3682,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetTopK", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/topk/{table_name}/{column_name}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetTopK", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/topk/{table_name}/{column_name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_GetTopK_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_GetTopK_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetTopK_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetTopK_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3772,20 +3707,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetNullCount", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/null-count/{table_name}/{column_name}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetNullCount", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/null-count/{table_name}/{column_name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_GetNullCount_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_GetNullCount_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetNullCount_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetNullCount_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3796,20 +3732,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetDescriptiveStatistics", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/descriptive-statistics/{table_name}/{column_name}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetDescriptiveStatistics", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/descriptive-statistics/{table_name}/{column_name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_GetDescriptiveStatistics_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_GetDescriptiveStatistics_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetDescriptiveStatistics_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetDescriptiveStatistics_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3820,20 +3757,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/EstimateSmallestTimeGrain", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/estimate-smallest-time-grain/{table_name}/{column_name}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/EstimateSmallestTimeGrain", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/estimate-smallest-time-grain/{table_name}/{column_name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_EstimateSmallestTimeGrain_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_EstimateSmallestTimeGrain_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_EstimateSmallestTimeGrain_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_EstimateSmallestTimeGrain_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3844,20 +3782,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetNumericHistogram", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/numeric-histogram/{table_name}/{column_name}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetNumericHistogram", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/numeric-histogram/{table_name}/{column_name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_GetNumericHistogram_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_GetNumericHistogram_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetNumericHistogram_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetNumericHistogram_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3868,20 +3807,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetRugHistogram", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/rug-histogram/{table_name}/{column_name}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetRugHistogram", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/rug-histogram/{table_name}/{column_name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_GetRugHistogram_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_GetRugHistogram_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetRugHistogram_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetRugHistogram_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3892,20 +3832,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetTimeRangeSummary", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/time-range-summary/{table_name}/{column_name}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetTimeRangeSummary", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/time-range-summary/{table_name}/{column_name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_GetTimeRangeSummary_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_GetTimeRangeSummary_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetTimeRangeSummary_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetTimeRangeSummary_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3916,20 +3857,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetCardinalityOfColumn", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/cardinality-of-column/{table_name}/{column_name}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetCardinalityOfColumn", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/cardinality-of-column/{table_name}/{column_name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_GetCardinalityOfColumn_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_GetCardinalityOfColumn_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetCardinalityOfColumn_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetCardinalityOfColumn_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3940,20 +3882,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GenerateTimeSeries", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/generate-timeseries")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GenerateTimeSeries", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/generate-timeseries")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_GenerateTimeSeries_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_GenerateTimeSeries_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GenerateTimeSeries_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GenerateTimeSeries_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3964,20 +3907,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetTableCardinality", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/queries/cardinality/tables/{table_name}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetTableCardinality", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/queries/cardinality/tables/{table_name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_GetTableCardinality_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_GetTableCardinality_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetTableCardinality_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetTableCardinality_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -3988,20 +3932,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ProfileColumns", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/tables/{table_name}/profile-columns")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ProfileColumns", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/tables/{table_name}/profile-columns")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_ProfileColumns_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_ProfileColumns_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_ProfileColumns_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_ProfileColumns_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4012,20 +3957,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetTableRows", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/tables/{table_name}/rows")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetTableRows", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/tables/{table_name}/rows")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_GetTableRows_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_GetTableRows_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetTableRows_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetTableRows_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4036,20 +3982,21 @@ func RegisterRuntimeServiceHandlerServer(ctx context.Context, mux *runtime.Serve ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListConnectors", runtime.WithHTTPPathPattern("/v1/connectors/meta")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListConnectors", runtime.WithHTTPPathPattern("/v1/connectors/meta")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_RuntimeService_ListConnectors_0(ctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_RuntimeService_ListConnectors_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) - ctx = runtime.NewServerMetadataContext(ctx, md) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_ListConnectors_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_ListConnectors_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4099,19 +4046,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/Ping", runtime.WithHTTPPathPattern("/v1/ping")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/Ping", runtime.WithHTTPPathPattern("/v1/ping")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_Ping_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_Ping_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_Ping_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_Ping_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4120,19 +4068,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListRepos", runtime.WithHTTPPathPattern("/v1/repos")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListRepos", runtime.WithHTTPPathPattern("/v1/repos")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_ListRepos_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_ListRepos_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_ListRepos_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_ListRepos_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4141,19 +4090,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetRepo", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetRepo", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_GetRepo_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_GetRepo_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetRepo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetRepo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4162,19 +4112,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/CreateRepo", runtime.WithHTTPPathPattern("/v1/repos")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/CreateRepo", runtime.WithHTTPPathPattern("/v1/repos")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_CreateRepo_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_CreateRepo_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_CreateRepo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_CreateRepo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4183,19 +4134,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/DeleteRepo", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/DeleteRepo", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_DeleteRepo_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_DeleteRepo_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_DeleteRepo_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_DeleteRepo_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4204,19 +4156,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListFiles", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}/files")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListFiles", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}/files")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_ListFiles_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_ListFiles_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_ListFiles_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_ListFiles_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4225,19 +4178,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetFile", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}/files/-/{path=**}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetFile", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}/files/-/{path=**}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_GetFile_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_GetFile_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetFile_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetFile_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4246,19 +4200,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/PutFile", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}/files/-/{path=**}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/PutFile", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}/files/-/{path=**}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_PutFile_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_PutFile_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_PutFile_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_PutFile_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4267,19 +4222,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/DeleteFile", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}/files/-/{path=**}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/DeleteFile", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}/files/-/{path=**}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_DeleteFile_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_DeleteFile_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_DeleteFile_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_DeleteFile_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4288,19 +4244,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/RenameFile", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}/files/rename")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/RenameFile", runtime.WithHTTPPathPattern("/v1/repos/{repo_id}/files/rename")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_RenameFile_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_RenameFile_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_RenameFile_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_RenameFile_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4309,19 +4266,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListInstances", runtime.WithHTTPPathPattern("/v1/instances")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListInstances", runtime.WithHTTPPathPattern("/v1/instances")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_ListInstances_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_ListInstances_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_ListInstances_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_ListInstances_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4330,19 +4288,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetInstance", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetInstance", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_GetInstance_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_GetInstance_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetInstance_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetInstance_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4351,19 +4310,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/CreateInstance", runtime.WithHTTPPathPattern("/v1/instances")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/CreateInstance", runtime.WithHTTPPathPattern("/v1/instances")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_CreateInstance_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_CreateInstance_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_CreateInstance_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_CreateInstance_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4372,19 +4332,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/DeleteInstance", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/DeleteInstance", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_DeleteInstance_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_DeleteInstance_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_DeleteInstance_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_DeleteInstance_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4393,19 +4354,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListCatalogObjects", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/catalog")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListCatalogObjects", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/catalog")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_ListCatalogObjects_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_ListCatalogObjects_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_ListCatalogObjects_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_ListCatalogObjects_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4414,19 +4376,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetCatalogObject", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/catalog/{name}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetCatalogObject", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/catalog/{name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_GetCatalogObject_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_GetCatalogObject_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetCatalogObject_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetCatalogObject_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4435,19 +4398,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/TriggerRefresh", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/catalog/{name}/refresh")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/TriggerRefresh", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/catalog/{name}/refresh")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_TriggerRefresh_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_TriggerRefresh_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_TriggerRefresh_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_TriggerRefresh_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4456,19 +4420,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/TriggerSync", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/sync")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/TriggerSync", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/sync")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_TriggerSync_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_TriggerSync_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_TriggerSync_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_TriggerSync_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4477,19 +4442,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/Migrate", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/migrate")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/Migrate", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/migrate")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_Migrate_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_Migrate_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_Migrate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_Migrate_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4498,19 +4464,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/PutFileAndMigrate", runtime.WithHTTPPathPattern("/v1/put-and-migrate")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/PutFileAndMigrate", runtime.WithHTTPPathPattern("/v1/put-and-migrate")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_PutFileAndMigrate_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_PutFileAndMigrate_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_PutFileAndMigrate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_PutFileAndMigrate_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4519,19 +4486,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/DeleteFileAndMigrate", runtime.WithHTTPPathPattern("/v1/delete-and-migrate")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/DeleteFileAndMigrate", runtime.WithHTTPPathPattern("/v1/delete-and-migrate")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_DeleteFileAndMigrate_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_DeleteFileAndMigrate_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_DeleteFileAndMigrate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_DeleteFileAndMigrate_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4540,19 +4508,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/RenameFileAndMigrate", runtime.WithHTTPPathPattern("/v1/rename-and-migrate")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/RenameFileAndMigrate", runtime.WithHTTPPathPattern("/v1/rename-and-migrate")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_RenameFileAndMigrate_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_RenameFileAndMigrate_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_RenameFileAndMigrate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_RenameFileAndMigrate_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4561,19 +4530,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/MigrateSingle", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/migrate/single")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/MigrateSingle", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/migrate/single")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_MigrateSingle_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_MigrateSingle_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_MigrateSingle_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_MigrateSingle_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4582,19 +4552,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/MigrateDelete", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/migrate/single/delete")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/MigrateDelete", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/migrate/single/delete")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_MigrateDelete_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_MigrateDelete_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_MigrateDelete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_MigrateDelete_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4603,19 +4574,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/Query", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/query")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/Query", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/query")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_Query_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_Query_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_Query_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_Query_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4624,40 +4596,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/QueryDirect", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/query/direct")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/QueryDirect", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/query/direct")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_QueryDirect_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_QueryDirect_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_QueryDirect_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) - - }) - - mux.Handle("POST", pattern_RuntimeService_MetricsViewMeta_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { - ctx, cancel := context.WithCancel(req.Context()) - defer cancel() - inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) - var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/MetricsViewMeta", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/metrics-views/{metrics_view_name}/meta")) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - resp, md, err := request_RuntimeService_MetricsViewMeta_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) - if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) - return - } - - forward_RuntimeService_MetricsViewMeta_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_QueryDirect_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4666,19 +4618,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/MetricsViewToplist", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/metrics-views/{metrics_view_name}/toplist/{dimension_name}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/MetricsViewToplist", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/metrics-views/{metrics_view_name}/toplist/{dimension_name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_MetricsViewToplist_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_MetricsViewToplist_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_MetricsViewToplist_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_MetricsViewToplist_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4687,19 +4640,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/MetricsViewTimeSeries", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/metrics-views/{metrics_view_name}/timeseries")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/MetricsViewTimeSeries", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/metrics-views/{metrics_view_name}/timeseries")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_MetricsViewTimeSeries_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_MetricsViewTimeSeries_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_MetricsViewTimeSeries_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_MetricsViewTimeSeries_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4708,19 +4662,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/MetricsViewTotals", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/metrics-views/{metrics_view_name}/totals")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/MetricsViewTotals", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/metrics-views/{metrics_view_name}/totals")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_MetricsViewTotals_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_MetricsViewTotals_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_MetricsViewTotals_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_MetricsViewTotals_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4729,19 +4684,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/EstimateRollupInterval", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/estimate-rollup-interval/{table_name}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/EstimateRollupInterval", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/estimate-rollup-interval/{table_name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_EstimateRollupInterval_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_EstimateRollupInterval_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_EstimateRollupInterval_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_EstimateRollupInterval_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4750,19 +4706,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetTopK", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/topk/{table_name}/{column_name}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetTopK", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/topk/{table_name}/{column_name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_GetTopK_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_GetTopK_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetTopK_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetTopK_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4771,19 +4728,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetNullCount", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/null-count/{table_name}/{column_name}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetNullCount", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/null-count/{table_name}/{column_name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_GetNullCount_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_GetNullCount_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetNullCount_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetNullCount_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4792,19 +4750,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetDescriptiveStatistics", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/descriptive-statistics/{table_name}/{column_name}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetDescriptiveStatistics", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/descriptive-statistics/{table_name}/{column_name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_GetDescriptiveStatistics_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_GetDescriptiveStatistics_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetDescriptiveStatistics_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetDescriptiveStatistics_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4813,19 +4772,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/EstimateSmallestTimeGrain", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/estimate-smallest-time-grain/{table_name}/{column_name}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/EstimateSmallestTimeGrain", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/estimate-smallest-time-grain/{table_name}/{column_name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_EstimateSmallestTimeGrain_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_EstimateSmallestTimeGrain_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_EstimateSmallestTimeGrain_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_EstimateSmallestTimeGrain_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4834,19 +4794,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetNumericHistogram", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/numeric-histogram/{table_name}/{column_name}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetNumericHistogram", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/numeric-histogram/{table_name}/{column_name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_GetNumericHistogram_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_GetNumericHistogram_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetNumericHistogram_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetNumericHistogram_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4855,19 +4816,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetRugHistogram", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/rug-histogram/{table_name}/{column_name}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetRugHistogram", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/rug-histogram/{table_name}/{column_name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_GetRugHistogram_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_GetRugHistogram_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetRugHistogram_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetRugHistogram_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4876,19 +4838,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetTimeRangeSummary", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/time-range-summary/{table_name}/{column_name}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetTimeRangeSummary", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/time-range-summary/{table_name}/{column_name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_GetTimeRangeSummary_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_GetTimeRangeSummary_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetTimeRangeSummary_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetTimeRangeSummary_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4897,19 +4860,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetCardinalityOfColumn", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/cardinality-of-column/{table_name}/{column_name}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetCardinalityOfColumn", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/cardinality-of-column/{table_name}/{column_name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_GetCardinalityOfColumn_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_GetCardinalityOfColumn_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetCardinalityOfColumn_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetCardinalityOfColumn_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4918,19 +4882,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GenerateTimeSeries", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/generate-timeseries")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GenerateTimeSeries", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/generate-timeseries")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_GenerateTimeSeries_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_GenerateTimeSeries_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GenerateTimeSeries_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GenerateTimeSeries_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4939,19 +4904,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetTableCardinality", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/queries/cardinality/tables/{table_name}")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetTableCardinality", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/queries/cardinality/tables/{table_name}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_GetTableCardinality_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_GetTableCardinality_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetTableCardinality_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetTableCardinality_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4960,19 +4926,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ProfileColumns", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/tables/{table_name}/profile-columns")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ProfileColumns", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/tables/{table_name}/profile-columns")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_ProfileColumns_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_ProfileColumns_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_ProfileColumns_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_ProfileColumns_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -4981,19 +4948,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetTableRows", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/tables/{table_name}/rows")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/GetTableRows", runtime.WithHTTPPathPattern("/v1/instances/{instance_id}/tables/{table_name}/rows")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_GetTableRows_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_GetTableRows_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_GetTableRows_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_GetTableRows_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -5002,19 +4970,20 @@ func RegisterRuntimeServiceHandlerClient(ctx context.Context, mux *runtime.Serve defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error - ctx, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListConnectors", runtime.WithHTTPPathPattern("/v1/connectors/meta")) + var annotatedContext context.Context + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/rill.runtime.v1.RuntimeService/ListConnectors", runtime.WithHTTPPathPattern("/v1/connectors/meta")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_RuntimeService_ListConnectors_0(ctx, inboundMarshaler, client, req, pathParams) - ctx = runtime.NewServerMetadataContext(ctx, md) + resp, md, err := request_RuntimeService_ListConnectors_0(annotatedContext, inboundMarshaler, client, req, pathParams) + annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { - runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_RuntimeService_ListConnectors_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_RuntimeService_ListConnectors_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -5074,8 +5043,6 @@ var ( pattern_RuntimeService_QueryDirect_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 2, 4}, []string{"v1", "instances", "instance_id", "query", "direct"}, "")) - pattern_RuntimeService_MetricsViewMeta_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"v1", "instances", "instance_id", "metrics-views", "metrics_view_name", "meta"}, "")) - pattern_RuntimeService_MetricsViewToplist_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5, 1, 0, 4, 1, 5, 6}, []string{"v1", "instances", "instance_id", "metrics-views", "metrics_view_name", "toplist", "dimension_name"}, "")) pattern_RuntimeService_MetricsViewTimeSeries_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2, 2, 3, 1, 0, 4, 1, 5, 4, 2, 5}, []string{"v1", "instances", "instance_id", "metrics-views", "metrics_view_name", "timeseries"}, "")) @@ -5164,8 +5131,6 @@ var ( forward_RuntimeService_QueryDirect_0 = runtime.ForwardResponseMessage - forward_RuntimeService_MetricsViewMeta_0 = runtime.ForwardResponseMessage - forward_RuntimeService_MetricsViewToplist_0 = runtime.ForwardResponseMessage forward_RuntimeService_MetricsViewTimeSeries_0 = runtime.ForwardResponseMessage diff --git a/runtime/api/runtime_grpc.pb.go b/proto/gen/rill/runtime/v1/api_grpc.pb.go similarity index 97% rename from runtime/api/runtime_grpc.pb.go rename to proto/gen/rill/runtime/v1/api_grpc.pb.go index d8a3ff7f827..16392e73e81 100644 --- a/runtime/api/runtime_grpc.pb.go +++ b/proto/gen/rill/runtime/v1/api_grpc.pb.go @@ -1,10 +1,10 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: // - protoc-gen-go-grpc v1.2.0 -// - protoc v3.21.9 -// source: runtime.proto +// - protoc (unknown) +// source: rill/runtime/v1/api.proto -package api +package runtimev1 import ( context "context" @@ -86,9 +86,6 @@ type RuntimeServiceClient interface { Query(ctx context.Context, in *QueryRequest, opts ...grpc.CallOption) (*QueryResponse, error) // DEPRECATED: QueryDirect runs a SQL query by directly executing it against the instance's OLAP datastore. QueryDirect(ctx context.Context, in *QueryDirectRequest, opts ...grpc.CallOption) (*QueryDirectResponse, error) - // MetricsViewMeta returns metadata about a metrics view. - // It's comparable to calling GetCatalogObject and will be deprecated in the future. - MetricsViewMeta(ctx context.Context, in *MetricsViewMetaRequest, opts ...grpc.CallOption) (*MetricsViewMetaResponse, error) // MetricsViewToplist returns the top dimension values of a metrics view sorted by one or more measures. // It's a convenience API for querying a metrics view. MetricsViewToplist(ctx context.Context, in *MetricsViewToplistRequest, opts ...grpc.CallOption) (*MetricsViewToplistResponse, error) @@ -372,15 +369,6 @@ func (c *runtimeServiceClient) QueryDirect(ctx context.Context, in *QueryDirectR return out, nil } -func (c *runtimeServiceClient) MetricsViewMeta(ctx context.Context, in *MetricsViewMetaRequest, opts ...grpc.CallOption) (*MetricsViewMetaResponse, error) { - out := new(MetricsViewMetaResponse) - err := c.cc.Invoke(ctx, "/rill.runtime.v1.RuntimeService/MetricsViewMeta", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *runtimeServiceClient) MetricsViewToplist(ctx context.Context, in *MetricsViewToplistRequest, opts ...grpc.CallOption) (*MetricsViewToplistResponse, error) { out := new(MetricsViewToplistResponse) err := c.cc.Invoke(ctx, "/rill.runtime.v1.RuntimeService/MetricsViewToplist", in, out, opts...) @@ -602,9 +590,6 @@ type RuntimeServiceServer interface { Query(context.Context, *QueryRequest) (*QueryResponse, error) // DEPRECATED: QueryDirect runs a SQL query by directly executing it against the instance's OLAP datastore. QueryDirect(context.Context, *QueryDirectRequest) (*QueryDirectResponse, error) - // MetricsViewMeta returns metadata about a metrics view. - // It's comparable to calling GetCatalogObject and will be deprecated in the future. - MetricsViewMeta(context.Context, *MetricsViewMetaRequest) (*MetricsViewMetaResponse, error) // MetricsViewToplist returns the top dimension values of a metrics view sorted by one or more measures. // It's a convenience API for querying a metrics view. MetricsViewToplist(context.Context, *MetricsViewToplistRequest) (*MetricsViewToplistResponse, error) @@ -729,9 +714,6 @@ func (UnimplementedRuntimeServiceServer) Query(context.Context, *QueryRequest) ( func (UnimplementedRuntimeServiceServer) QueryDirect(context.Context, *QueryDirectRequest) (*QueryDirectResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method QueryDirect not implemented") } -func (UnimplementedRuntimeServiceServer) MetricsViewMeta(context.Context, *MetricsViewMetaRequest) (*MetricsViewMetaResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method MetricsViewMeta not implemented") -} func (UnimplementedRuntimeServiceServer) MetricsViewToplist(context.Context, *MetricsViewToplistRequest) (*MetricsViewToplistResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method MetricsViewToplist not implemented") } @@ -1264,24 +1246,6 @@ func _RuntimeService_QueryDirect_Handler(srv interface{}, ctx context.Context, d return interceptor(ctx, in, info, handler) } -func _RuntimeService_MetricsViewMeta_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MetricsViewMetaRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RuntimeServiceServer).MetricsViewMeta(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/rill.runtime.v1.RuntimeService/MetricsViewMeta", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RuntimeServiceServer).MetricsViewMeta(ctx, req.(*MetricsViewMetaRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _RuntimeService_MetricsViewToplist_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MetricsViewToplistRequest) if err := dec(in); err != nil { @@ -1699,10 +1663,6 @@ var RuntimeService_ServiceDesc = grpc.ServiceDesc{ MethodName: "QueryDirect", Handler: _RuntimeService_QueryDirect_Handler, }, - { - MethodName: "MetricsViewMeta", - Handler: _RuntimeService_MetricsViewMeta_Handler, - }, { MethodName: "MetricsViewToplist", Handler: _RuntimeService_MetricsViewToplist_Handler, @@ -1773,5 +1733,5 @@ var RuntimeService_ServiceDesc = grpc.ServiceDesc{ }, }, Streams: []grpc.StreamDesc{}, - Metadata: "runtime.proto", + Metadata: "rill/runtime/v1/api.proto", } diff --git a/proto/gen/rill/runtime/v1/catalog.pb.go b/proto/gen/rill/runtime/v1/catalog.pb.go new file mode 100644 index 00000000000..4376e49a582 --- /dev/null +++ b/proto/gen/rill/runtime/v1/catalog.pb.go @@ -0,0 +1,788 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc (unknown) +// source: rill/runtime/v1/catalog.proto + +package runtimev1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + structpb "google.golang.org/protobuf/types/known/structpb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Dialects supported for models +type Model_Dialect int32 + +const ( + Model_DIALECT_UNSPECIFIED Model_Dialect = 0 + Model_DIALECT_DUCKDB Model_Dialect = 1 +) + +// Enum value maps for Model_Dialect. +var ( + Model_Dialect_name = map[int32]string{ + 0: "DIALECT_UNSPECIFIED", + 1: "DIALECT_DUCKDB", + } + Model_Dialect_value = map[string]int32{ + "DIALECT_UNSPECIFIED": 0, + "DIALECT_DUCKDB": 1, + } +) + +func (x Model_Dialect) Enum() *Model_Dialect { + p := new(Model_Dialect) + *p = x + return p +} + +func (x Model_Dialect) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Model_Dialect) Descriptor() protoreflect.EnumDescriptor { + return file_rill_runtime_v1_catalog_proto_enumTypes[0].Descriptor() +} + +func (Model_Dialect) Type() protoreflect.EnumType { + return &file_rill_runtime_v1_catalog_proto_enumTypes[0] +} + +func (x Model_Dialect) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Model_Dialect.Descriptor instead. +func (Model_Dialect) EnumDescriptor() ([]byte, []int) { + return file_rill_runtime_v1_catalog_proto_rawDescGZIP(), []int{2, 0} +} + +// Table represents a table in the OLAP database. These include pre-existing tables discovered by periodically +// scanning the database's information schema when the instance is created with exposed=true. Pre-existing tables +// have managed = false. +type Table struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Table name + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Table schema + Schema *StructType `protobuf:"bytes,2,opt,name=schema,proto3" json:"schema,omitempty"` + // Managed is true if the table was created through a runtime migration, false if it was discovered in by + // scanning the database's information schema. + Managed bool `protobuf:"varint,3,opt,name=managed,proto3" json:"managed,omitempty"` +} + +func (x *Table) Reset() { + *x = Table{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_runtime_v1_catalog_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Table) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Table) ProtoMessage() {} + +func (x *Table) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_catalog_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Table.ProtoReflect.Descriptor instead. +func (*Table) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_catalog_proto_rawDescGZIP(), []int{0} +} + +func (x *Table) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Table) GetSchema() *StructType { + if x != nil { + return x.Schema + } + return nil +} + +func (x *Table) GetManaged() bool { + if x != nil { + return x.Managed + } + return false +} + +// Source is the internal representation of a source definition +type Source struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Name of the source + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Connector used by the source + Connector string `protobuf:"bytes,2,opt,name=connector,proto3" json:"connector,omitempty"` + // Connector properties assigned in the source + Properties *structpb.Struct `protobuf:"bytes,3,opt,name=properties,proto3" json:"properties,omitempty"` + // Detected schema of the source + Schema *StructType `protobuf:"bytes,5,opt,name=schema,proto3" json:"schema,omitempty"` + // Used for the SQL statement for sources + // TODO: Remove when frontend sources code has been refactored + Sql string `protobuf:"bytes,20,opt,name=sql,proto3" json:"sql,omitempty"` +} + +func (x *Source) Reset() { + *x = Source{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_runtime_v1_catalog_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Source) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Source) ProtoMessage() {} + +func (x *Source) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_catalog_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Source.ProtoReflect.Descriptor instead. +func (*Source) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_catalog_proto_rawDescGZIP(), []int{1} +} + +func (x *Source) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Source) GetConnector() string { + if x != nil { + return x.Connector + } + return "" +} + +func (x *Source) GetProperties() *structpb.Struct { + if x != nil { + return x.Properties + } + return nil +} + +func (x *Source) GetSchema() *StructType { + if x != nil { + return x.Schema + } + return nil +} + +func (x *Source) GetSql() string { + if x != nil { + return x.Sql + } + return "" +} + +// Model is the internal representation of a model definition +type Model struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Name of the model + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // SQL is a SELECT statement representing the model + Sql string `protobuf:"bytes,2,opt,name=sql,proto3" json:"sql,omitempty"` + // Dialect of the SQL statement + Dialect Model_Dialect `protobuf:"varint,3,opt,name=dialect,proto3,enum=rill.runtime.v1.Model_Dialect" json:"dialect,omitempty"` + // Detected schema of the model + Schema *StructType `protobuf:"bytes,4,opt,name=schema,proto3" json:"schema,omitempty"` +} + +func (x *Model) Reset() { + *x = Model{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_runtime_v1_catalog_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Model) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Model) ProtoMessage() {} + +func (x *Model) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_catalog_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Model.ProtoReflect.Descriptor instead. +func (*Model) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_catalog_proto_rawDescGZIP(), []int{2} +} + +func (x *Model) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Model) GetSql() string { + if x != nil { + return x.Sql + } + return "" +} + +func (x *Model) GetDialect() Model_Dialect { + if x != nil { + return x.Dialect + } + return Model_DIALECT_UNSPECIFIED +} + +func (x *Model) GetSchema() *StructType { + if x != nil { + return x.Schema + } + return nil +} + +// Metrics view is the internal representation of a metrics view definition +type MetricsView struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Name of the metrics view + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Name of the source or model that the metrics view is based on + From string `protobuf:"bytes,2,opt,name=from,proto3" json:"from,omitempty"` + // Name of the primary time dimension, used for rendering time series + TimeDimension string `protobuf:"bytes,3,opt,name=time_dimension,json=timeDimension,proto3" json:"time_dimension,omitempty"` + // Recommended granularities for rolling up the time dimension. + // Should be a valid SQL INTERVAL value. + TimeGrains []string `protobuf:"bytes,4,rep,name=time_grains,json=timeGrains,proto3" json:"time_grains,omitempty"` + // Dimensions in the metrics view + Dimensions []*MetricsView_Dimension `protobuf:"bytes,5,rep,name=dimensions,proto3" json:"dimensions,omitempty"` + // Measures in the metrics view + Measures []*MetricsView_Measure `protobuf:"bytes,6,rep,name=measures,proto3" json:"measures,omitempty"` +} + +func (x *MetricsView) Reset() { + *x = MetricsView{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_runtime_v1_catalog_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MetricsView) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MetricsView) ProtoMessage() {} + +func (x *MetricsView) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_catalog_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MetricsView.ProtoReflect.Descriptor instead. +func (*MetricsView) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_catalog_proto_rawDescGZIP(), []int{3} +} + +func (x *MetricsView) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *MetricsView) GetFrom() string { + if x != nil { + return x.From + } + return "" +} + +func (x *MetricsView) GetTimeDimension() string { + if x != nil { + return x.TimeDimension + } + return "" +} + +func (x *MetricsView) GetTimeGrains() []string { + if x != nil { + return x.TimeGrains + } + return nil +} + +func (x *MetricsView) GetDimensions() []*MetricsView_Dimension { + if x != nil { + return x.Dimensions + } + return nil +} + +func (x *MetricsView) GetMeasures() []*MetricsView_Measure { + if x != nil { + return x.Measures + } + return nil +} + +// Dimensions are columns to filter and group by +type MetricsView_Dimension struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"` + Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` + Enabled string `protobuf:"bytes,4,opt,name=enabled,proto3" json:"enabled,omitempty"` +} + +func (x *MetricsView_Dimension) Reset() { + *x = MetricsView_Dimension{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_runtime_v1_catalog_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MetricsView_Dimension) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MetricsView_Dimension) ProtoMessage() {} + +func (x *MetricsView_Dimension) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_catalog_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MetricsView_Dimension.ProtoReflect.Descriptor instead. +func (*MetricsView_Dimension) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_catalog_proto_rawDescGZIP(), []int{3, 0} +} + +func (x *MetricsView_Dimension) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *MetricsView_Dimension) GetLabel() string { + if x != nil { + return x.Label + } + return "" +} + +func (x *MetricsView_Dimension) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *MetricsView_Dimension) GetEnabled() string { + if x != nil { + return x.Enabled + } + return "" +} + +// Measures are aggregated computed values +type MetricsView_Measure struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Label string `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"` + Expression string `protobuf:"bytes,3,opt,name=expression,proto3" json:"expression,omitempty"` + Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` + Format string `protobuf:"bytes,5,opt,name=format,proto3" json:"format,omitempty"` + Enabled string `protobuf:"bytes,6,opt,name=enabled,proto3" json:"enabled,omitempty"` +} + +func (x *MetricsView_Measure) Reset() { + *x = MetricsView_Measure{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_runtime_v1_catalog_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MetricsView_Measure) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MetricsView_Measure) ProtoMessage() {} + +func (x *MetricsView_Measure) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_catalog_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MetricsView_Measure.ProtoReflect.Descriptor instead. +func (*MetricsView_Measure) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_catalog_proto_rawDescGZIP(), []int{3, 1} +} + +func (x *MetricsView_Measure) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *MetricsView_Measure) GetLabel() string { + if x != nil { + return x.Label + } + return "" +} + +func (x *MetricsView_Measure) GetExpression() string { + if x != nil { + return x.Expression + } + return "" +} + +func (x *MetricsView_Measure) GetDescription() string { + if x != nil { + return x.Description + } + return "" +} + +func (x *MetricsView_Measure) GetFormat() string { + if x != nil { + return x.Format + } + return "" +} + +func (x *MetricsView_Measure) GetEnabled() string { + if x != nil { + return x.Enabled + } + return "" +} + +var File_rill_runtime_v1_catalog_proto protoreflect.FileDescriptor + +var file_rill_runtime_v1_catalog_proto_rawDesc = []byte{ + 0x0a, 0x1d, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x76, + 0x31, 0x2f, 0x63, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, + 0x0f, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, + 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2f, 0x73, 0x74, 0x72, 0x75, 0x63, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, + 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x2f, + 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6a, 0x0a, 0x05, + 0x54, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x18, + 0x0a, 0x07, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x07, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x64, 0x22, 0xba, 0x01, 0x0a, 0x06, 0x53, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x37, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, + 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, + 0x63, 0x74, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x33, + 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x73, 0x63, 0x68, + 0x65, 0x6d, 0x61, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x71, 0x6c, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x73, 0x71, 0x6c, 0x22, 0xd4, 0x01, 0x0a, 0x05, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x71, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x73, 0x71, 0x6c, 0x12, 0x38, 0x0a, 0x07, 0x64, 0x69, 0x61, 0x6c, 0x65, 0x63, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x2e, 0x44, + 0x69, 0x61, 0x6c, 0x65, 0x63, 0x74, 0x52, 0x07, 0x64, 0x69, 0x61, 0x6c, 0x65, 0x63, 0x74, 0x12, + 0x33, 0x0a, 0x06, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1b, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x06, 0x73, 0x63, + 0x68, 0x65, 0x6d, 0x61, 0x22, 0x36, 0x0a, 0x07, 0x44, 0x69, 0x61, 0x6c, 0x65, 0x63, 0x74, 0x12, + 0x17, 0x0a, 0x13, 0x44, 0x49, 0x41, 0x4c, 0x45, 0x43, 0x54, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x44, 0x49, 0x41, 0x4c, + 0x45, 0x43, 0x54, 0x5f, 0x44, 0x55, 0x43, 0x4b, 0x44, 0x42, 0x10, 0x01, 0x22, 0xa4, 0x04, 0x0a, + 0x0b, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x12, 0x12, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x12, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x5f, 0x64, 0x69, 0x6d, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x69, + 0x6d, 0x65, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x74, + 0x69, 0x6d, 0x65, 0x5f, 0x67, 0x72, 0x61, 0x69, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x0a, 0x74, 0x69, 0x6d, 0x65, 0x47, 0x72, 0x61, 0x69, 0x6e, 0x73, 0x12, 0x46, 0x0a, 0x0a, + 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x26, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x56, 0x69, 0x65, 0x77, 0x2e, 0x44, + 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0a, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x40, 0x0a, 0x08, 0x6d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x73, + 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, + 0x56, 0x69, 0x65, 0x77, 0x2e, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x52, 0x08, 0x6d, 0x65, + 0x61, 0x73, 0x75, 0x72, 0x65, 0x73, 0x1a, 0x71, 0x0a, 0x09, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, + 0x69, 0x6f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x20, 0x0a, + 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x1a, 0xa7, 0x01, 0x0a, 0x07, 0x4d, 0x65, + 0x61, 0x73, 0x75, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, + 0x1e, 0x0a, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x72, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, + 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, + 0x62, 0x6c, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, + 0x6c, 0x65, 0x64, 0x42, 0xb5, 0x01, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x43, 0x61, 0x74, + 0x61, 0x6c, 0x6f, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x32, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x64, 0x61, 0x74, 0x61, + 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, + 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x76, 0x31, 0xa2, + 0x02, 0x03, 0x52, 0x52, 0x58, 0xaa, 0x02, 0x0f, 0x52, 0x69, 0x6c, 0x6c, 0x2e, 0x52, 0x75, 0x6e, + 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0f, 0x52, 0x69, 0x6c, 0x6c, 0x5c, 0x52, + 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1b, 0x52, 0x69, 0x6c, 0x6c, + 0x5c, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x11, 0x52, 0x69, 0x6c, 0x6c, 0x3a, 0x3a, + 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +} + +var ( + file_rill_runtime_v1_catalog_proto_rawDescOnce sync.Once + file_rill_runtime_v1_catalog_proto_rawDescData = file_rill_runtime_v1_catalog_proto_rawDesc +) + +func file_rill_runtime_v1_catalog_proto_rawDescGZIP() []byte { + file_rill_runtime_v1_catalog_proto_rawDescOnce.Do(func() { + file_rill_runtime_v1_catalog_proto_rawDescData = protoimpl.X.CompressGZIP(file_rill_runtime_v1_catalog_proto_rawDescData) + }) + return file_rill_runtime_v1_catalog_proto_rawDescData +} + +var file_rill_runtime_v1_catalog_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_rill_runtime_v1_catalog_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_rill_runtime_v1_catalog_proto_goTypes = []interface{}{ + (Model_Dialect)(0), // 0: rill.runtime.v1.Model.Dialect + (*Table)(nil), // 1: rill.runtime.v1.Table + (*Source)(nil), // 2: rill.runtime.v1.Source + (*Model)(nil), // 3: rill.runtime.v1.Model + (*MetricsView)(nil), // 4: rill.runtime.v1.MetricsView + (*MetricsView_Dimension)(nil), // 5: rill.runtime.v1.MetricsView.Dimension + (*MetricsView_Measure)(nil), // 6: rill.runtime.v1.MetricsView.Measure + (*StructType)(nil), // 7: rill.runtime.v1.StructType + (*structpb.Struct)(nil), // 8: google.protobuf.Struct +} +var file_rill_runtime_v1_catalog_proto_depIdxs = []int32{ + 7, // 0: rill.runtime.v1.Table.schema:type_name -> rill.runtime.v1.StructType + 8, // 1: rill.runtime.v1.Source.properties:type_name -> google.protobuf.Struct + 7, // 2: rill.runtime.v1.Source.schema:type_name -> rill.runtime.v1.StructType + 0, // 3: rill.runtime.v1.Model.dialect:type_name -> rill.runtime.v1.Model.Dialect + 7, // 4: rill.runtime.v1.Model.schema:type_name -> rill.runtime.v1.StructType + 5, // 5: rill.runtime.v1.MetricsView.dimensions:type_name -> rill.runtime.v1.MetricsView.Dimension + 6, // 6: rill.runtime.v1.MetricsView.measures:type_name -> rill.runtime.v1.MetricsView.Measure + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name +} + +func init() { file_rill_runtime_v1_catalog_proto_init() } +func file_rill_runtime_v1_catalog_proto_init() { + if File_rill_runtime_v1_catalog_proto != nil { + return + } + file_rill_runtime_v1_schema_proto_init() + if !protoimpl.UnsafeEnabled { + file_rill_runtime_v1_catalog_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Table); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_runtime_v1_catalog_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Source); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_runtime_v1_catalog_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Model); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_runtime_v1_catalog_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MetricsView); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_runtime_v1_catalog_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MetricsView_Dimension); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_runtime_v1_catalog_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MetricsView_Measure); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_rill_runtime_v1_catalog_proto_rawDesc, + NumEnums: 1, + NumMessages: 6, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_rill_runtime_v1_catalog_proto_goTypes, + DependencyIndexes: file_rill_runtime_v1_catalog_proto_depIdxs, + EnumInfos: file_rill_runtime_v1_catalog_proto_enumTypes, + MessageInfos: file_rill_runtime_v1_catalog_proto_msgTypes, + }.Build() + File_rill_runtime_v1_catalog_proto = out.File + file_rill_runtime_v1_catalog_proto_rawDesc = nil + file_rill_runtime_v1_catalog_proto_goTypes = nil + file_rill_runtime_v1_catalog_proto_depIdxs = nil +} diff --git a/proto/gen/rill/runtime/v1/runtime.swagger.yaml b/proto/gen/rill/runtime/v1/runtime.swagger.yaml new file mode 100644 index 00000000000..c28ec74a246 --- /dev/null +++ b/proto/gen/rill/runtime/v1/runtime.swagger.yaml @@ -0,0 +1,2454 @@ +swagger: "2.0" +info: + title: rill/runtime/v1/schema.proto + version: version not set +tags: + - name: RuntimeService +consumes: + - application/json +produces: + - application/json +paths: + /v1/connectors/meta: + get: + summary: |- + ListConnectors returns a description of all the connectors implemented in the runtime, + including their schema and validation rules + operationId: RuntimeService_ListConnectors + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1ListConnectorsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + tags: + - RuntimeService + /v1/delete-and-migrate: + post: + summary: DeleteFileAndMigrate combines RenameFile and Migrate in a single endpoint to reduce latency. + operationId: RuntimeService_DeleteFileAndMigrate + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1DeleteFileAndMigrateResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/v1DeleteFileAndMigrateRequest' + tags: + - RuntimeService + /v1/instances: + get: + summary: ListInstances lists all the instances currently managed by the runtime + operationId: RuntimeService_ListInstances + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1ListInstancesResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: pageSize + in: query + required: false + type: integer + format: int32 + - name: pageToken + in: query + required: false + type: string + tags: + - RuntimeService + post: + summary: CreateInstance creates a new instance + operationId: RuntimeService_CreateInstance + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1CreateInstanceResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/v1CreateInstanceRequest' + tags: + - RuntimeService + /v1/instances/{instanceId}: + get: + summary: GetInstance returns information about a specific instance + operationId: RuntimeService_GetInstance + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1GetInstanceResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + in: path + required: true + type: string + tags: + - RuntimeService + delete: + summary: DeleteInstance deletes an instance + operationId: RuntimeService_DeleteInstance + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1DeleteInstanceResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + in: path + required: true + type: string + tags: + - RuntimeService + /v1/instances/{instanceId}/cardinality-of-column/{tableName}/{columnName}: + get: + summary: Get cardinality for a column + operationId: RuntimeService_GetCardinalityOfColumn + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1GetCardinalityOfColumnResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + in: path + required: true + type: string + - name: tableName + in: path + required: true + type: string + - name: columnName + in: path + required: true + type: string + tags: + - RuntimeService + /v1/instances/{instanceId}/catalog: + get: + summary: ListCatalogObjects lists all the objects (like tables, sources or metrics views) registered in an instance's catalog + operationId: RuntimeService_ListCatalogObjects + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1ListCatalogObjectsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + in: path + required: true + type: string + - name: type + in: query + required: false + type: string + enum: + - TYPE_UNSPECIFIED + - TYPE_TABLE + - TYPE_SOURCE + - TYPE_MODEL + - TYPE_METRICS_VIEW + default: TYPE_UNSPECIFIED + tags: + - RuntimeService + /v1/instances/{instanceId}/catalog/{name}: + get: + summary: GetCatalogObject returns information about a specific object in the catalog + operationId: RuntimeService_GetCatalogObject + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1GetCatalogObjectResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + in: path + required: true + type: string + - name: name + in: path + required: true + type: string + tags: + - RuntimeService + /v1/instances/{instanceId}/catalog/{name}/refresh: + post: + summary: |- + TriggerRefresh triggers a refresh of a refreshable catalog object. + It currently only supports sources (which will be re-ingested), but will also support materialized models in the future. + It does not respond until the refresh has completed (will move to async jobs when the task scheduler is in place). + operationId: RuntimeService_TriggerRefresh + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1TriggerRefreshResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + in: path + required: true + type: string + - name: name + in: path + required: true + type: string + tags: + - RuntimeService + /v1/instances/{instanceId}/descriptive-statistics/{tableName}/{columnName}: + get: + summary: Get basic stats for a numeric column like min, max, mean, stddev, etc + operationId: RuntimeService_GetDescriptiveStatistics + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1GetDescriptiveStatisticsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + in: path + required: true + type: string + - name: tableName + in: path + required: true + type: string + - name: columnName + in: path + required: true + type: string + tags: + - RuntimeService + /v1/instances/{instanceId}/estimate-rollup-interval/{tableName}: + post: + summary: 'EstimateRollupInterval (TODO: add description)' + operationId: RuntimeService_EstimateRollupInterval + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1EstimateRollupIntervalResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + in: path + required: true + type: string + - name: tableName + in: path + required: true + type: string + - name: body + in: body + required: true + schema: + type: object + properties: + columnName: + type: string + tags: + - RuntimeService + /v1/instances/{instanceId}/estimate-smallest-time-grain/{tableName}/{columnName}: + get: + summary: Estimates the smallest time grain present in the column + operationId: RuntimeService_EstimateSmallestTimeGrain + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1EstimateSmallestTimeGrainResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + in: path + required: true + type: string + - name: tableName + in: path + required: true + type: string + - name: columnName + in: path + required: true + type: string + tags: + - RuntimeService + /v1/instances/{instanceId}/generate-timeseries: + post: + summary: Generate time series + operationId: RuntimeService_GenerateTimeSeries + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1GenerateTimeSeriesResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + in: path + required: true + type: string + - name: body + in: body + required: true + schema: + type: object + properties: + filters: + $ref: '#/definitions/v1MetricsViewRequestFilter' + measures: + $ref: '#/definitions/GenerateTimeSeriesRequestBasicMeasures' + pixels: + type: string + format: int64 + sampleSize: + type: integer + format: int32 + tableName: + type: string + timeRange: + $ref: '#/definitions/v1TimeSeriesTimeRange' + timestampColumnName: + type: string + tags: + - RuntimeService + /v1/instances/{instanceId}/metrics-views/{metricsViewName}/timeseries: + post: + summary: |- + MetricsViewTimeSeries returns time series for the measures in the metrics view. + It's a convenience API for querying a metrics view. + operationId: RuntimeService_MetricsViewTimeSeries + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1MetricsViewTimeSeriesResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + in: path + required: true + type: string + - name: metricsViewName + in: path + required: true + type: string + - name: body + in: body + required: true + schema: + type: object + properties: + filter: + $ref: '#/definitions/v1MetricsViewFilter' + measureNames: + type: array + items: + type: string + timeEnd: + type: string + format: date-time + timeGranularity: + type: string + timeStart: + type: string + format: date-time + title: Request message for RuntimeService.MetricsViewTimeSeries + tags: + - RuntimeService + /v1/instances/{instanceId}/metrics-views/{metricsViewName}/toplist/{dimensionName}: + post: + summary: |- + MetricsViewToplist returns the top dimension values of a metrics view sorted by one or more measures. + It's a convenience API for querying a metrics view. + operationId: RuntimeService_MetricsViewToplist + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1MetricsViewToplistResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + in: path + required: true + type: string + - name: metricsViewName + in: path + required: true + type: string + - name: dimensionName + in: path + required: true + type: string + - name: body + in: body + required: true + schema: + type: object + properties: + filter: + $ref: '#/definitions/v1MetricsViewFilter' + limit: + type: string + format: int64 + measureNames: + type: array + items: + type: string + offset: + type: string + format: int64 + sort: + type: array + items: + $ref: '#/definitions/v1MetricsViewSort' + timeEnd: + type: string + format: date-time + timeStart: + type: string + format: date-time + title: Request message for RuntimeService.MetricsViewToplist + tags: + - RuntimeService + /v1/instances/{instanceId}/metrics-views/{metricsViewName}/totals: + post: + summary: |- + MetricsViewTotals returns totals over a time period for the measures in a metrics view. + It's a convenience API for querying a metrics view. + operationId: RuntimeService_MetricsViewTotals + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1MetricsViewTotalsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + in: path + required: true + type: string + - name: metricsViewName + in: path + required: true + type: string + - name: body + in: body + required: true + schema: + type: object + properties: + filter: + $ref: '#/definitions/v1MetricsViewFilter' + measureNames: + type: array + items: + type: string + timeEnd: + type: string + format: date-time + timeStart: + type: string + format: date-time + title: Request message for RuntimeService.MetricsViewTotals + tags: + - RuntimeService + /v1/instances/{instanceId}/migrate: + post: + summary: |- + Migrate applies a full set of artifacts from a repo to the catalog and infra. + It attempts to infer a minimal number of migrations to apply to reconcile the current state with + the desired state expressed in the artifacts. Any existing objects not described in the submitted + artifacts will be deleted. + operationId: RuntimeService_Migrate + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1MigrateResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + description: Instance to migrate + in: path + required: true + type: string + - name: body + in: body + required: true + schema: + type: object + properties: + changedPaths: + type: array + items: + type: string + description: |- + Changed paths provides a way to "hint" what files have changed in the repo, enabling + migrations to execute faster by not scanning all code artifacts for changes. + dry: + type: boolean + title: If true, will validate the file artifacts, but not actually execute any migrations + repoId: + type: string + title: Contents of files containing one or more SQL DDL statements + strict: + type: boolean + title: |- + If true, will not execute any migrations if any artifact fails to validate. + Otherwise, it will execute a best-effort migration (including dropping objects with artifacts + that fail to validate.) + title: Request message for RuntimeService.Migrate + tags: + - RuntimeService + /v1/instances/{instanceId}/migrate/single: + post: + summary: |- + DEPRECATED: MigrateSingle applies a single `CREATE` statement. + It bypasses the reconciling migrations described in Migrate. + We aim to deprecate this function once reconciling migrations are mature and adopted in the modeller. + operationId: RuntimeService_MigrateSingle + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1MigrateSingleResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + description: Instance to migrate + in: path + required: true + type: string + - name: body + in: body + required: true + schema: + type: object + properties: + createOrReplace: + type: boolean + title: If true, will replace existing definitions with the same name + dryRun: + type: boolean + title: If true, will validate the SQL, but not actually execute the migrations + renameFrom: + type: string + description: |- + If provided, will attempt to rename an existing object and only recompute if necessary. + NOTE: very questionable semantics here. + sql: + type: string + title: A CREATE statement + title: Request message for RuntimeService.MigrateSingle + tags: + - RuntimeService + /v1/instances/{instanceId}/migrate/single/delete: + post: + summary: |- + DEPRECATED: MigrateDelete deletes a single object. + It bypasses the reconciling migrations described in Migrate. + We aim to deprecate this function once reconciling migrations are mature and adopted in the modeller. + operationId: RuntimeService_MigrateDelete + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1MigrateDeleteResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + description: Instance to migrate + in: path + required: true + type: string + - name: body + in: body + required: true + schema: + type: object + properties: + name: + type: string + title: Name of object to drop + title: Request message for RuntimeService.MigrateDelete + tags: + - RuntimeService + /v1/instances/{instanceId}/null-count/{tableName}/{columnName}: + get: + summary: Get the number of nulls in a column + operationId: RuntimeService_GetNullCount + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1GetNullCountResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + in: path + required: true + type: string + - name: tableName + in: path + required: true + type: string + - name: columnName + in: path + required: true + type: string + tags: + - RuntimeService + /v1/instances/{instanceId}/numeric-histogram/{tableName}/{columnName}: + get: + summary: Get the histogram for values in a column + operationId: RuntimeService_GetNumericHistogram + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1GetNumericHistogramResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + in: path + required: true + type: string + - name: tableName + in: path + required: true + type: string + - name: columnName + in: path + required: true + type: string + tags: + - RuntimeService + /v1/instances/{instanceId}/queries/cardinality/tables/{tableName}: + get: + summary: 'TableCardinality (TODO: add description)' + operationId: RuntimeService_GetTableCardinality + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1GetTableCardinalityResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + in: path + required: true + type: string + - name: tableName + in: path + required: true + type: string + tags: + - RuntimeService + /v1/instances/{instanceId}/query: + post: + summary: Query runs a SQL query against the instance's OLAP datastore. + operationId: RuntimeService_Query + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1QueryResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + description: Instance to query + in: path + required: true + type: string + - name: body + in: body + required: true + schema: + type: object + properties: + args: + type: array + items: {} + title: Args to interpolate into the statement + dryRun: + type: boolean + title: If true, will only validate the query, not execute it + priority: + type: string + format: int64 + title: Query priority (not supported by all backends) + sql: + type: string + title: SELECT statement + title: Request message for RuntimeService.Query + tags: + - RuntimeService + /v1/instances/{instanceId}/query/direct: + post: + summary: 'DEPRECATED: QueryDirect runs a SQL query by directly executing it against the instance''s OLAP datastore.' + operationId: RuntimeService_QueryDirect + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1QueryDirectResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + description: Instance to query + in: path + required: true + type: string + - name: body + in: body + required: true + schema: + type: object + properties: + args: + type: array + items: {} + title: Args to interpolate into the statement + dryRun: + type: boolean + title: If true, will only validate the query, not execute it + priority: + type: string + format: int64 + title: Query priority (not supported by all backends) + sql: + type: string + title: SELECT statement + title: Request message for RuntimeService.QueryDirect + tags: + - RuntimeService + /v1/instances/{instanceId}/rug-histogram/{tableName}/{columnName}: + get: + summary: Get outliers for a numeric column + operationId: RuntimeService_GetRugHistogram + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1GetRugHistogramResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + in: path + required: true + type: string + - name: tableName + in: path + required: true + type: string + - name: columnName + in: path + required: true + type: string + tags: + - RuntimeService + /v1/instances/{instanceId}/sync: + post: + summary: |- + TriggerSync syncronizes the instance's catalog with the underlying OLAP's information schema. + If the instance has exposed=true, tables found in the information schema will be added to the catalog. + operationId: RuntimeService_TriggerSync + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1TriggerSyncResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + in: path + required: true + type: string + tags: + - RuntimeService + /v1/instances/{instanceId}/tables/{tableName}/profile-columns: + post: + summary: 'ProfileColumns (TODO: add description)' + operationId: RuntimeService_ProfileColumns + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1ProfileColumnsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + in: path + required: true + type: string + - name: tableName + in: path + required: true + type: string + tags: + - RuntimeService + /v1/instances/{instanceId}/tables/{tableName}/rows: + get: + summary: 'TableRows (TODO: add description)' + operationId: RuntimeService_GetTableRows + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1GetTableRowsResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + in: path + required: true + type: string + - name: tableName + in: path + required: true + type: string + - name: limit + in: query + required: false + type: integer + format: int32 + tags: + - RuntimeService + /v1/instances/{instanceId}/time-range-summary/{tableName}/{columnName}: + get: + summary: Get the time range summaries (min, max) for a column + operationId: RuntimeService_GetTimeRangeSummary + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1GetTimeRangeSummaryResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + in: path + required: true + type: string + - name: tableName + in: path + required: true + type: string + - name: columnName + in: path + required: true + type: string + tags: + - RuntimeService + /v1/instances/{instanceId}/topk/{tableName}/{columnName}: + post: + summary: |- + Get TopK elements from a table for a column given an agg function + agg function and k are optional, defaults are count(*) and 50 respectively + operationId: RuntimeService_GetTopK + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1GetTopKResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: instanceId + in: path + required: true + type: string + - name: tableName + in: path + required: true + type: string + - name: columnName + in: path + required: true + type: string + - name: body + in: body + required: true + schema: + type: object + properties: + agg: + type: string + title: default is count(*) + k: + type: integer + format: int32 + title: default is 50 + description: Request for RuntimeService.GetTopK. Returns the top K values for a given column using agg function for table table_name. + tags: + - RuntimeService + /v1/ping: + get: + summary: Ping returns information about the runtime + operationId: RuntimeService_Ping + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1PingResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + tags: + - RuntimeService + /v1/put-and-migrate: + post: + summary: |- + PutFileAndMigrate combines PutFile and Migrate in a single endpoint to reduce latency. + It is equivalent to calling the two RPCs sequentially. + operationId: RuntimeService_PutFileAndMigrate + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1PutFileAndMigrateResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/v1PutFileAndMigrateRequest' + tags: + - RuntimeService + /v1/rename-and-migrate: + post: + summary: RenameFileAndMigrate combines RenameFile and Migrate in a single endpoint to reduce latency. + operationId: RuntimeService_RenameFileAndMigrate + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1RenameFileAndMigrateResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/v1RenameFileAndMigrateRequest' + tags: + - RuntimeService + /v1/repos: + get: + summary: ListRepos lists all the repos currently managed by the runtime + operationId: RuntimeService_ListRepos + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1ListReposResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: pageSize + in: query + required: false + type: integer + format: int32 + - name: pageToken + in: query + required: false + type: string + tags: + - RuntimeService + post: + summary: CreateRepo creates a new repo. See the Repo message for an explanation of repos. + operationId: RuntimeService_CreateRepo + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1CreateRepoResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: body + in: body + required: true + schema: + $ref: '#/definitions/v1CreateRepoRequest' + tags: + - RuntimeService + /v1/repos/{repoId}: + get: + summary: GetRepo returns info about a specific repo + operationId: RuntimeService_GetRepo + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1GetRepoResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: repoId + in: path + required: true + type: string + tags: + - RuntimeService + delete: + summary: DeleteRepo deletes a repo + operationId: RuntimeService_DeleteRepo + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1DeleteRepoResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: repoId + in: path + required: true + type: string + tags: + - RuntimeService + /v1/repos/{repoId}/files: + get: + summary: |- + ListFiles lists all the files matching a glob in a repo. + The files are sorted by their full path. + operationId: RuntimeService_ListFiles + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1ListFilesResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: repoId + in: path + required: true + type: string + - name: glob + in: query + required: false + type: string + tags: + - RuntimeService + /v1/repos/{repoId}/files/-/{path}: + get: + summary: GetFile returns the contents of a specific file in a repo. + operationId: RuntimeService_GetFile + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1GetFileResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: repoId + in: path + required: true + type: string + - name: path + in: path + required: true + type: string + pattern: .+ + tags: + - RuntimeService + delete: + summary: DeleteFile deletes a file from a repo + operationId: RuntimeService_DeleteFile + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1DeleteFileResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: repoId + in: path + required: true + type: string + - name: path + in: path + required: true + type: string + pattern: .+ + tags: + - RuntimeService + post: + summary: PutFile creates or updates a file in a repo + operationId: RuntimeService_PutFile + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1PutFileResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: repoId + in: path + required: true + type: string + - name: path + in: path + required: true + type: string + pattern: .+ + - name: body + in: body + required: true + schema: + type: object + properties: + blob: + type: string + create: + type: boolean + title: Create indicates whether to create the file if it doesn't already exist + createOnly: + type: boolean + description: |- + Will cause the operation to fail if the file already exists. + It should only be set when create = true. + title: Request message for RuntimeService.PutFile + tags: + - RuntimeService + /v1/repos/{repoId}/files/rename: + post: + summary: RenameFile renames a file in a repo + operationId: RuntimeService_RenameFile + responses: + "200": + description: A successful response. + schema: + $ref: '#/definitions/v1RenameFileResponse' + default: + description: An unexpected error response. + schema: + $ref: '#/definitions/rpcStatus' + parameters: + - name: repoId + in: path + required: true + type: string + - name: body + in: body + required: true + schema: + type: object + properties: + fromPath: + type: string + toPath: + type: string + title: Request message for RuntimeService.RenameFile + tags: + - RuntimeService +definitions: + ConnectorProperty: + type: object + properties: + description: + type: string + title: Human readable description of the field + displayName: + type: string + title: Pretty name for the property + hint: + type: string + title: Additional textual explanation for use in UIs + href: + type: string + title: Link to documentation for this property + key: + type: string + title: The property key + nullable: + type: boolean + title: Nullable is true if the field is optional + placeholder: + type: string + title: Placeholder value for use in UIs + type: + $ref: '#/definitions/ConnectorPropertyType' + title: The type expected for this property + title: Property represents one of the connector's config properties + ConnectorPropertyType: + type: string + enum: + - TYPE_UNSPECIFIED + - TYPE_STRING + - TYPE_NUMBER + - TYPE_BOOLEAN + - TYPE_INFORMATIONAL + default: TYPE_UNSPECIFIED + title: Type represents the field type + GenerateTimeSeriesRequestBasicMeasures: + type: object + properties: + basicMeasures: + type: array + items: + $ref: '#/definitions/v1BasicMeasureDefinition' + MetricsViewDimension: + type: object + properties: + description: + type: string + enabled: + type: string + label: + type: string + name: + type: string + title: Dimensions are columns to filter and group by + MetricsViewDimensionValueValues: + type: object + properties: + values: + type: array + items: {} + MetricsViewFilterCond: + type: object + properties: + in: + type: array + items: {} + like: + type: array + items: {} + name: + type: string + MetricsViewMeasure: + type: object + properties: + description: + type: string + enabled: + type: string + expression: + type: string + format: + type: string + label: + type: string + name: + type: string + title: Measures are aggregated computed values + MigrationErrorCharLocation: + type: object + properties: + column: + type: integer + format: int64 + line: + type: integer + format: int64 + title: CharLocation is a line and column in a code artifact + ModelDialect: + type: string + enum: + - DIALECT_UNSPECIFIED + - DIALECT_DUCKDB + default: DIALECT_UNSPECIFIED + title: Dialects supported for models + NumericHistogramBinsBin: + type: object + properties: + bucket: + type: string + format: int64 + count: + type: string + format: int64 + high: + type: number + format: double + low: + type: number + format: double + NumericOutliersOutlier: + type: object + properties: + bucket: + type: string + format: int64 + high: + type: number + format: double + low: + type: number + format: double + present: + type: boolean + StructTypeField: + type: object + properties: + name: + type: string + type: + $ref: '#/definitions/runtimev1Type' + TimeRangeSummaryInterval: + type: object + properties: + days: + type: integer + format: int32 + micros: + type: string + format: int64 + months: + type: integer + format: int32 + TimeSeriesResponseTimeSeriesValues: + type: object + properties: + values: + type: array + items: + $ref: '#/definitions/v1TimeSeriesValue' + TopKTopKEntry: + type: object + properties: + count: + type: number + format: double + value: + type: string + description: value is optional so that null values from the database can be represented. + protobufAny: + type: object + properties: + '@type': + type: string + additionalProperties: {} + protobufNullValue: + type: string + enum: + - NULL_VALUE + default: NULL_VALUE + description: |- + `NullValue` is a singleton enumeration to represent the null value for the + `Value` type union. + + The JSON representation for `NullValue` is JSON `null`. + + - NULL_VALUE: Null value. + rpcStatus: + type: object + properties: + code: + type: integer + format: int32 + details: + type: array + items: + $ref: '#/definitions/protobufAny' + message: + type: string + runtimev1Type: + type: object + properties: + arrayElementType: + $ref: '#/definitions/runtimev1Type' + title: If code is CODE_ARRAY, array_element_type specifies the type of the array elements + code: + $ref: '#/definitions/v1TypeCode' + title: Code designates the type + mapType: + $ref: '#/definitions/v1MapType' + title: If code is CODE_MAP, map_type specifies the map's key and value types + nullable: + type: boolean + title: Nullable indicates whether null values are possible + structType: + $ref: '#/definitions/v1StructType' + title: If code is CODE_STRUCT, struct_type specifies the type of the struct's fields + title: Type represents a data type in a schema + v1BasicMeasureDefinition: + type: object + properties: + expression: + type: string + title: mandatory user defined metadata + id: + type: string + sqlName: + type: string + title: optional user defined metadata + v1CatalogObject: + type: object + properties: + createdOn: + type: string + format: date-time + metricsView: + $ref: '#/definitions/v1MetricsView' + model: + $ref: '#/definitions/v1Model' + name: + type: string + path: + type: string + refreshedOn: + type: string + format: date-time + source: + $ref: '#/definitions/v1Source' + table: + $ref: '#/definitions/v1Table' + type: + $ref: '#/definitions/v1CatalogObjectType' + updatedOn: + type: string + format: date-time + title: CatalogObject represents an object stored in the catalog + v1CatalogObjectType: + type: string + enum: + - TYPE_UNSPECIFIED + - TYPE_TABLE + - TYPE_SOURCE + - TYPE_MODEL + - TYPE_METRICS_VIEW + default: TYPE_UNSPECIFIED + v1CategoricalSummary: + type: object + properties: + cardinality: + type: string + format: int64 + topK: + $ref: '#/definitions/v1TopK' + description: Response for RuntimeService.GetTopK and RuntimeService.GetCardinalityOfColumn. Message will have either topK or cardinality set. + v1Connector: + type: object + properties: + description: + type: string + title: Human readable description of the connector + displayName: + type: string + title: Pretty display name for use in UIs + name: + type: string + title: Name is the name of the connector (e.g. "CREATE SOURCE foo WITH connector = 'name'") + properties: + type: array + items: + $ref: '#/definitions/ConnectorProperty' + title: Properties accepted by the connector + description: |- + Connector represents a connector available in the runtime. + It should not be confused with a source. + v1CreateInstanceRequest: + type: object + properties: + driver: + type: string + dsn: + type: string + embedCatalog: + type: boolean + exposed: + type: boolean + instanceId: + type: string + title: See message Instance for field descriptions + objectPrefix: + type: string + title: Request message for RuntimeService.CreateInstance + v1CreateInstanceResponse: + type: object + properties: + instance: + $ref: '#/definitions/v1Instance' + instanceId: + type: string + title: Temporary, for compatibility with local frontend + title: Response message for RuntimeService.CreateInstance + v1CreateRepoRequest: + type: object + properties: + driver: + type: string + dsn: + type: string + repoId: + type: string + title: Request message for RuntimeService.CreateRepo + v1CreateRepoResponse: + type: object + properties: + repo: + $ref: '#/definitions/v1Repo' + title: Response message for RuntimeService.CreateRepo + v1DeleteFileAndMigrateRequest: + type: object + properties: + dry: + type: boolean + description: If true, will save the file and validate it and related file artifacts, but not actually execute any migrations. + instanceId: + type: string + title: Instance to apply the migrations to + path: + type: string + title: Path to store the file at + repoId: + type: string + title: Repo to store the file in + strict: + type: boolean + title: |- + If true, will not execute any migrations if any artifact fails to validate. + Otherwise, it will execute a best-effort migration (including dropping objects with artifacts + that fail to validate.) + v1DeleteFileAndMigrateResponse: + type: object + properties: + affectedPaths: + type: array + items: + type: string + description: |- + affected_paths lists all the file paths that were considered while + executing the migration. For a PutFileAndMigrate, this includes the put file + as well as any file artifacts that rely on objects declared in it. + errors: + type: array + items: + $ref: '#/definitions/v1MigrationError' + description: |- + Errors encountered during the migration. If strict = false, any path in + affected_paths without an error can be assumed to have been migrated succesfully. + v1DeleteFileResponse: + type: object + title: Response message for RuntimeService.DeleteFile + v1DeleteInstanceResponse: + type: object + title: Response message for RuntimeService.DeleteInstance + v1DeleteRepoResponse: + type: object + title: Response message for RuntimeService.DeleteRepo + v1EstimateRollupIntervalResponse: + type: object + properties: + end: + type: string + format: date-time + interval: + $ref: '#/definitions/v1TimeGrain' + start: + type: string + format: date-time + v1EstimateSmallestTimeGrainResponse: + type: object + properties: + timeGrain: + $ref: '#/definitions/v1TimeGrain' + title: Response for RuntimeService.EstimateSmallestTimeGrain + v1GenerateTimeSeriesResponse: + type: object + properties: + rollup: + $ref: '#/definitions/v1TimeSeriesResponse' + v1GetCardinalityOfColumnResponse: + type: object + properties: + categoricalSummary: + $ref: '#/definitions/v1CategoricalSummary' + v1GetCatalogObjectResponse: + type: object + properties: + object: + $ref: '#/definitions/v1CatalogObject' + title: Response message for RuntimeService.GetCatalogObject + v1GetDescriptiveStatisticsResponse: + type: object + properties: + numericSummary: + $ref: '#/definitions/v1NumericSummary' + v1GetFileResponse: + type: object + properties: + blob: + type: string + updatedOn: + type: string + format: date-time + title: Reponse message for RuntimeService.GetFile + v1GetInstanceResponse: + type: object + properties: + instance: + $ref: '#/definitions/v1Instance' + title: Response message for RuntimeService.GetInstance + v1GetNullCountResponse: + type: object + properties: + count: + type: string + format: int64 + title: Response for RuntimeService.GetNullCount + v1GetNumericHistogramResponse: + type: object + properties: + numericSummary: + $ref: '#/definitions/v1NumericSummary' + v1GetRepoResponse: + type: object + properties: + repo: + $ref: '#/definitions/v1Repo' + title: Response message for RuntimeService.GetRepo + v1GetRugHistogramResponse: + type: object + properties: + numericSummary: + $ref: '#/definitions/v1NumericSummary' + v1GetTableCardinalityResponse: + type: object + properties: + cardinality: + type: string + format: int64 + v1GetTableRowsResponse: + type: object + properties: + data: + type: array + items: + type: object + v1GetTimeRangeSummaryResponse: + type: object + properties: + timeRangeSummary: + $ref: '#/definitions/v1TimeRangeSummary' + v1GetTopKResponse: + type: object + properties: + categoricalSummary: + $ref: '#/definitions/v1CategoricalSummary' + v1Instance: + type: object + properties: + driver: + type: string + title: Name of OLAP infra driver ("druid" or "duckdb") + dsn: + type: string + title: DSN for connection to the OLAP infra + embedCatalog: + type: boolean + description: |- + If true, the runtime will store the instance's catalog data (such as sources and metrics views) + in the instance's OLAP datastore instead of in the runtime's metadata store. This is currently + only supported for the duckdb driver. + exposed: + type: boolean + description: |- + Indicates that the underlying infra may be manipulated directly by users. + If true, the runtime will continuously poll the infra's information schema + to discover tables not created through the runtime. They will be added to the + catalog as UnmanagedTables. + instanceId: + type: string + title: Identifier (UUID) + objectPrefix: + type: string + description: |- + Prefix to add to all table names created through Rill SQL (such as sources, models, etc.) + Use it as an alternative to database schemas. + description: |- + Instance represents one connection to an OLAP datastore (such as DuckDB or Druid). + Migrations and queries are issued against a specific instance. The concept of + instances enables multiple data projects to be served by one runtime. + v1ListCatalogObjectsResponse: + type: object + properties: + objects: + type: array + items: + $ref: '#/definitions/v1CatalogObject' + title: Response message for RuntimeService.ListCatalogObjects + v1ListConnectorsResponse: + type: object + properties: + connectors: + type: array + items: + $ref: '#/definitions/v1Connector' + title: Response message for RuntimeService.ListConnectors + v1ListFilesResponse: + type: object + properties: + paths: + type: array + items: + type: string + title: Response message for RuntimeService.ListFiles + v1ListInstancesResponse: + type: object + properties: + instances: + type: array + items: + $ref: '#/definitions/v1Instance' + nextPageToken: + type: string + title: Response message for RuntimeService.ListInstances + v1ListReposResponse: + type: object + properties: + nextPageToken: + type: string + repos: + type: array + items: + $ref: '#/definitions/v1Repo' + title: Response message for RuntimeService.ListRepos + v1MapType: + type: object + properties: + keyType: + $ref: '#/definitions/runtimev1Type' + valueType: + $ref: '#/definitions/runtimev1Type' + title: MapType is a complex type for mapping keys to values + v1MetricsView: + type: object + properties: + dimensions: + type: array + items: + $ref: '#/definitions/MetricsViewDimension' + title: Dimensions in the metrics view + from: + type: string + title: Name of the source or model that the metrics view is based on + measures: + type: array + items: + $ref: '#/definitions/MetricsViewMeasure' + title: Measures in the metrics view + name: + type: string + title: Name of the metrics view + timeDimension: + type: string + title: Name of the primary time dimension, used for rendering time series + timeGrains: + type: array + items: + type: string + description: |- + Recommended granularities for rolling up the time dimension. + Should be a valid SQL INTERVAL value. + title: Metrics view is the internal representation of a metrics view definition + v1MetricsViewColumn: + type: object + properties: + name: + type: string + nullable: + type: boolean + type: + type: string + title: MetricsViewColumn represents a column in a metrics view + v1MetricsViewDimensionValue: + type: object + properties: + in: + type: array + items: {} + like: + $ref: '#/definitions/MetricsViewDimensionValueValues' + name: + type: string + v1MetricsViewFilter: + type: object + properties: + exclude: + type: array + items: + $ref: '#/definitions/MetricsViewFilterCond' + include: + type: array + items: + $ref: '#/definitions/MetricsViewFilterCond' + match: + type: array + items: + type: string + title: Filter clause for metrics view requests + v1MetricsViewRequestFilter: + type: object + properties: + exclude: + type: array + items: + $ref: '#/definitions/v1MetricsViewDimensionValue' + include: + type: array + items: + $ref: '#/definitions/v1MetricsViewDimensionValue' + v1MetricsViewSort: + type: object + properties: + ascending: + type: boolean + name: + type: string + title: Sort clause for metrics view requests + v1MetricsViewTimeSeriesResponse: + type: object + properties: + data: + type: array + items: + type: object + meta: + type: array + items: + $ref: '#/definitions/v1MetricsViewColumn' + title: Response message for RuntimeService.MetricsViewTimeSeries + v1MetricsViewToplistResponse: + type: object + properties: + data: + type: array + items: + type: object + meta: + type: array + items: + $ref: '#/definitions/v1MetricsViewColumn' + title: Response message for RuntimeService.MetricsViewToplist + v1MetricsViewTotalsResponse: + type: object + properties: + data: + type: object + meta: + type: array + items: + $ref: '#/definitions/v1MetricsViewColumn' + title: Response message for RuntimeService.MetricsViewTotals + v1MigrateDeleteResponse: + type: object + title: Response message for RuntimeService.MigrateDelete + v1MigrateResponse: + type: object + properties: + affectedPaths: + type: array + items: + type: string + description: |- + affected_paths lists all the file artifact paths that were considered while + executing the migration. If changed_paths was empty, this will include all + code artifacts in the repo. + errors: + type: array + items: + $ref: '#/definitions/v1MigrationError' + description: |- + Errors encountered during the migration. If strict = false, any path in + affected_paths without an error can be assumed to have been migrated succesfully. + title: Response message for RuntimeService.Migrate + v1MigrateSingleResponse: + type: object + title: Response message for RuntimeService.MigrateSingle + v1MigrationError: + type: object + properties: + code: + $ref: '#/definitions/v1MigrationErrorCode' + title: Code denotes the category of error + endLocation: + $ref: '#/definitions/MigrationErrorCharLocation' + description: |- + End location of the error in the code artifact (if any). + Only applicable if file_path and start_location is set. + filePath: + type: string + title: File path of the code artifact that this error relates to (if any) + message: + type: string + title: Message is a developer-friendly error message + propertyPath: + type: string + description: |- + Property path of the error in the code artifact (if any). + It's represented as a JS-style property path, e.g. "key0.key1[index2].key3". + It only applies to structured code artifacts (i.e. YAML). + Only applicable if file_path is set. + startLocation: + $ref: '#/definitions/MigrationErrorCharLocation' + description: |- + Start location of the error in the code artifact (if any). + Only applicable if file_path is set. + description: MigrationError represents an error encountered while running Migrate. + v1MigrationErrorCode: + type: string + enum: + - CODE_UNSPECIFIED + - CODE_SYNTAX + - CODE_VALIDATION + - CODE_DEPENDENCY + - CODE_OLAP + - CODE_SOURCE + default: CODE_UNSPECIFIED + description: |- + - CODE_UNSPECIFIED: Unspecified error + - CODE_SYNTAX: Code artifact failed to parse + - CODE_VALIDATION: Code artifact has internal validation errors + - CODE_DEPENDENCY: Code artifact is valid, but has invalid dependencies + - CODE_OLAP: Error returned from the OLAP database + - CODE_SOURCE: Error encountered during source inspection or ingestion + title: Code represents different categories of migration errors + v1Model: + type: object + properties: + dialect: + $ref: '#/definitions/ModelDialect' + title: Dialect of the SQL statement + name: + type: string + title: Name of the model + schema: + $ref: '#/definitions/v1StructType' + title: Detected schema of the model + sql: + type: string + title: SQL is a SELECT statement representing the model + title: Model is the internal representation of a model definition + v1NumericHistogramBins: + type: object + properties: + bins: + type: array + items: + $ref: '#/definitions/NumericHistogramBinsBin' + title: Response for RuntimeService.GetNumericHistogram + v1NumericOutliers: + type: object + properties: + outliers: + type: array + items: + $ref: '#/definitions/NumericOutliersOutlier' + v1NumericStatistics: + type: object + properties: + max: + type: number + format: double + mean: + type: number + format: double + min: + type: number + format: double + q25: + type: number + format: double + q50: + type: number + format: double + q75: + type: number + format: double + sd: + type: number + format: double + title: Response for RuntimeService.GetDescriptiveStatistics + v1NumericSummary: + type: object + properties: + numericHistogramBins: + $ref: '#/definitions/v1NumericHistogramBins' + numericOutliers: + $ref: '#/definitions/v1NumericOutliers' + numericStatistics: + $ref: '#/definitions/v1NumericStatistics' + description: |- + Response for RuntimeService.GetNumericHistogram, RuntimeService.GetDescriptiveStatistics and RuntimeService.GetCardinalityOfColumn. + Message will have either numericHistogramBins, numericStatistics or numericOutliers set. + v1PingResponse: + type: object + properties: + time: + type: string + format: date-time + title: Runtime server time + version: + type: string + title: Runtime version + title: Response message for RuntimeService.Ping + v1ProfileColumn: + type: object + properties: + largestStringLength: + type: integer + format: int32 + name: + type: string + type: + type: string + v1ProfileColumnsResponse: + type: object + properties: + profileColumns: + type: array + items: + $ref: '#/definitions/v1ProfileColumn' + v1PutFileAndMigrateRequest: + type: object + properties: + blob: + type: string + title: Contents to save to the file + create: + type: boolean + title: Create indicates whether to create the file if it doesn't already exist + createOnly: + type: boolean + description: |- + create_only will cause the operation to fail if a file already exists at path. + It should only be set when create = true. + dry: + type: boolean + description: If true, will save the file and validate it and related file artifacts, but not actually execute any migrations. + instanceId: + type: string + title: Instance to apply the migrations to + path: + type: string + title: Path to store the file at + repoId: + type: string + title: Repo to store the file in + strict: + type: boolean + title: |- + If true, will not execute any migrations if any artifact fails to validate. + Otherwise, it will execute a best-effort migration (including dropping objects with artifacts + that fail to validate.) + v1PutFileAndMigrateResponse: + type: object + properties: + affectedPaths: + type: array + items: + type: string + description: |- + affected_paths lists all the file paths that were considered while + executing the migration. For a PutFileAndMigrate, this includes the put file + as well as any file artifacts that rely on objects declared in it. + errors: + type: array + items: + $ref: '#/definitions/v1MigrationError' + description: |- + Errors encountered during the migration. If strict = false, any path in + affected_paths without an error can be assumed to have been migrated succesfully. + v1PutFileResponse: + type: object + properties: + filePath: + type: string + title: 'TODO: Redundant, should be removed (but frontend currently uses it)' + title: Response message for RuntimeService.PutFile + v1QueryDirectResponse: + type: object + properties: + data: + type: array + items: + type: object + title: Result data + meta: + $ref: '#/definitions/v1StructType' + title: Schema of result data + title: Response message for RuntimeService.QueryDirect + v1QueryResponse: + type: object + properties: + data: + type: array + items: + type: object + title: Result data + meta: + $ref: '#/definitions/v1StructType' + title: Schema of result data + title: Response message for RuntimeService.Query + v1RenameFileAndMigrateRequest: + type: object + properties: + dry: + type: boolean + description: If true, will save the file and validate it and related file artifacts, but not actually execute any migrations. + fromPath: + type: string + title: Current path of the file + instanceId: + type: string + title: Instance to apply the migrations to + repoId: + type: string + title: Repo to store the file in + strict: + type: boolean + title: |- + If true, will not execute any migrations if any artifact fails to validate. + Otherwise, it will execute a best-effort migration (including dropping objects with artifacts + that fail to validate.) + toPath: + type: string + title: New path of the file + v1RenameFileAndMigrateResponse: + type: object + properties: + affectedPaths: + type: array + items: + type: string + description: |- + affected_paths lists all the file paths that were considered while + executing the migration. For a PutFileAndMigrate, this includes the put file + as well as any file artifacts that rely on objects declared in it. + errors: + type: array + items: + $ref: '#/definitions/v1MigrationError' + description: |- + Errors encountered during the migration. If strict = false, any path in + affected_paths without an error can be assumed to have been migrated succesfully. + v1RenameFileResponse: + type: object + title: Response message for RuntimeService.RenameFile + v1Repo: + type: object + properties: + driver: + type: string + description: Driver for persisting artifacts. Supports "file" and "postgres". + dsn: + type: string + description: DSN for driver. If the driver is "file", this should be the path to the root directory. + repoId: + type: string + title: UUID identifier + description: |- + Repo represents a collection of file artifacts containing SQL statements. + It will usually by represented as a folder on disk, but may also be backed by a + database (for modelling in the cloud where no persistant file system is available). + v1Source: + type: object + properties: + connector: + type: string + title: Connector used by the source + name: + type: string + title: Name of the source + properties: + type: object + title: Connector properties assigned in the source + schema: + $ref: '#/definitions/v1StructType' + title: Detected schema of the source + sql: + type: string + title: |- + Used for the SQL statement for sources + TODO: Remove when frontend sources code has been refactored + title: Source is the internal representation of a source definition + v1StructType: + type: object + properties: + fields: + type: array + items: + $ref: '#/definitions/StructTypeField' + title: StructType is a type composed of ordered, named and typed sub-fields + v1Table: + type: object + properties: + managed: + type: boolean + description: |- + Managed is true if the table was created through a runtime migration, false if it was discovered in by + scanning the database's information schema. + name: + type: string + title: Table name + schema: + $ref: '#/definitions/v1StructType' + title: Table schema + description: |- + Table represents a table in the OLAP database. These include pre-existing tables discovered by periodically + scanning the database's information schema when the instance is created with exposed=true. Pre-existing tables + have managed = false. + v1TimeGrain: + type: string + enum: + - TIME_GRAIN_UNSPECIFIED + - TIME_GRAIN_MILLISECOND + - TIME_GRAIN_SECOND + - TIME_GRAIN_MINUTE + - TIME_GRAIN_HOUR + - TIME_GRAIN_DAY + - TIME_GRAIN_WEEK + - TIME_GRAIN_MONTH + - TIME_GRAIN_YEAR + default: TIME_GRAIN_UNSPECIFIED + v1TimeRangeSummary: + type: object + properties: + interval: + $ref: '#/definitions/TimeRangeSummaryInterval' + max: + type: string + format: date-time + min: + type: string + format: date-time + v1TimeSeriesResponse: + type: object + properties: + error: + type: string + id: + type: string + results: + type: array + items: + $ref: '#/definitions/v1TimeSeriesValue' + sampleSize: + type: integer + format: int32 + spark: + $ref: '#/definitions/TimeSeriesResponseTimeSeriesValues' + timeRange: + $ref: '#/definitions/v1TimeSeriesTimeRange' + v1TimeSeriesTimeRange: + type: object + properties: + end: + type: string + format: date-time + interval: + $ref: '#/definitions/v1TimeGrain' + start: + type: string + format: date-time + v1TimeSeriesValue: + type: object + properties: + bin: + type: number + format: double + records: + type: object + additionalProperties: + type: number + format: double + ts: + type: string + v1TopK: + type: object + properties: + entries: + type: array + items: + $ref: '#/definitions/TopKTopKEntry' + v1TriggerRefreshResponse: + type: object + title: Response message for RuntimeService.TriggerRefresh + v1TriggerSyncResponse: + type: object + properties: + objectsAddedCount: + type: integer + format: int64 + objectsCount: + type: integer + format: int64 + objectsRemovedCount: + type: integer + format: int64 + objectsUpdatedCount: + type: integer + format: int64 + title: Response message for RuntimeService.TriggerSync + v1TypeCode: + type: string + enum: + - CODE_UNSPECIFIED + - CODE_BOOL + - CODE_INT8 + - CODE_INT16 + - CODE_INT32 + - CODE_INT64 + - CODE_INT128 + - CODE_UINT8 + - CODE_UINT16 + - CODE_UINT32 + - CODE_UINT64 + - CODE_UINT128 + - CODE_FLOAT32 + - CODE_FLOAT64 + - CODE_TIMESTAMP + - CODE_DATE + - CODE_TIME + - CODE_STRING + - CODE_BYTES + - CODE_ARRAY + - CODE_STRUCT + - CODE_MAP + - CODE_DECIMAL + - CODE_JSON + - CODE_UUID + default: CODE_UNSPECIFIED + title: Code enumerates all the types that can be represented in a schema diff --git a/proto/gen/rill/runtime/v1/schema.pb.go b/proto/gen/rill/runtime/v1/schema.pb.go new file mode 100644 index 00000000000..cc6cf70152e --- /dev/null +++ b/proto/gen/rill/runtime/v1/schema.pb.go @@ -0,0 +1,574 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc (unknown) +// source: rill/runtime/v1/schema.proto + +package runtimev1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// Code enumerates all the types that can be represented in a schema +type Type_Code int32 + +const ( + Type_CODE_UNSPECIFIED Type_Code = 0 + Type_CODE_BOOL Type_Code = 1 + Type_CODE_INT8 Type_Code = 2 + Type_CODE_INT16 Type_Code = 3 + Type_CODE_INT32 Type_Code = 4 + Type_CODE_INT64 Type_Code = 5 + Type_CODE_INT128 Type_Code = 6 + Type_CODE_UINT8 Type_Code = 7 + Type_CODE_UINT16 Type_Code = 8 + Type_CODE_UINT32 Type_Code = 9 + Type_CODE_UINT64 Type_Code = 10 + Type_CODE_UINT128 Type_Code = 11 + Type_CODE_FLOAT32 Type_Code = 12 + Type_CODE_FLOAT64 Type_Code = 13 + Type_CODE_TIMESTAMP Type_Code = 14 + Type_CODE_DATE Type_Code = 15 + Type_CODE_TIME Type_Code = 16 + Type_CODE_STRING Type_Code = 17 + Type_CODE_BYTES Type_Code = 18 + Type_CODE_ARRAY Type_Code = 19 + Type_CODE_STRUCT Type_Code = 20 + Type_CODE_MAP Type_Code = 21 + Type_CODE_DECIMAL Type_Code = 22 + Type_CODE_JSON Type_Code = 23 + Type_CODE_UUID Type_Code = 24 +) + +// Enum value maps for Type_Code. +var ( + Type_Code_name = map[int32]string{ + 0: "CODE_UNSPECIFIED", + 1: "CODE_BOOL", + 2: "CODE_INT8", + 3: "CODE_INT16", + 4: "CODE_INT32", + 5: "CODE_INT64", + 6: "CODE_INT128", + 7: "CODE_UINT8", + 8: "CODE_UINT16", + 9: "CODE_UINT32", + 10: "CODE_UINT64", + 11: "CODE_UINT128", + 12: "CODE_FLOAT32", + 13: "CODE_FLOAT64", + 14: "CODE_TIMESTAMP", + 15: "CODE_DATE", + 16: "CODE_TIME", + 17: "CODE_STRING", + 18: "CODE_BYTES", + 19: "CODE_ARRAY", + 20: "CODE_STRUCT", + 21: "CODE_MAP", + 22: "CODE_DECIMAL", + 23: "CODE_JSON", + 24: "CODE_UUID", + } + Type_Code_value = map[string]int32{ + "CODE_UNSPECIFIED": 0, + "CODE_BOOL": 1, + "CODE_INT8": 2, + "CODE_INT16": 3, + "CODE_INT32": 4, + "CODE_INT64": 5, + "CODE_INT128": 6, + "CODE_UINT8": 7, + "CODE_UINT16": 8, + "CODE_UINT32": 9, + "CODE_UINT64": 10, + "CODE_UINT128": 11, + "CODE_FLOAT32": 12, + "CODE_FLOAT64": 13, + "CODE_TIMESTAMP": 14, + "CODE_DATE": 15, + "CODE_TIME": 16, + "CODE_STRING": 17, + "CODE_BYTES": 18, + "CODE_ARRAY": 19, + "CODE_STRUCT": 20, + "CODE_MAP": 21, + "CODE_DECIMAL": 22, + "CODE_JSON": 23, + "CODE_UUID": 24, + } +) + +func (x Type_Code) Enum() *Type_Code { + p := new(Type_Code) + *p = x + return p +} + +func (x Type_Code) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (Type_Code) Descriptor() protoreflect.EnumDescriptor { + return file_rill_runtime_v1_schema_proto_enumTypes[0].Descriptor() +} + +func (Type_Code) Type() protoreflect.EnumType { + return &file_rill_runtime_v1_schema_proto_enumTypes[0] +} + +func (x Type_Code) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use Type_Code.Descriptor instead. +func (Type_Code) EnumDescriptor() ([]byte, []int) { + return file_rill_runtime_v1_schema_proto_rawDescGZIP(), []int{0, 0} +} + +// Type represents a data type in a schema +type Type struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Code designates the type + Code Type_Code `protobuf:"varint,1,opt,name=code,proto3,enum=rill.runtime.v1.Type_Code" json:"code,omitempty"` + // Nullable indicates whether null values are possible + Nullable bool `protobuf:"varint,2,opt,name=nullable,proto3" json:"nullable,omitempty"` + // If code is CODE_ARRAY, array_element_type specifies the type of the array elements + ArrayElementType *Type `protobuf:"bytes,3,opt,name=array_element_type,json=arrayElementType,proto3" json:"array_element_type,omitempty"` + // If code is CODE_STRUCT, struct_type specifies the type of the struct's fields + StructType *StructType `protobuf:"bytes,4,opt,name=struct_type,json=structType,proto3" json:"struct_type,omitempty"` + // If code is CODE_MAP, map_type specifies the map's key and value types + MapType *MapType `protobuf:"bytes,5,opt,name=map_type,json=mapType,proto3" json:"map_type,omitempty"` +} + +func (x *Type) Reset() { + *x = Type{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_runtime_v1_schema_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Type) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Type) ProtoMessage() {} + +func (x *Type) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_schema_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Type.ProtoReflect.Descriptor instead. +func (*Type) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_schema_proto_rawDescGZIP(), []int{0} +} + +func (x *Type) GetCode() Type_Code { + if x != nil { + return x.Code + } + return Type_CODE_UNSPECIFIED +} + +func (x *Type) GetNullable() bool { + if x != nil { + return x.Nullable + } + return false +} + +func (x *Type) GetArrayElementType() *Type { + if x != nil { + return x.ArrayElementType + } + return nil +} + +func (x *Type) GetStructType() *StructType { + if x != nil { + return x.StructType + } + return nil +} + +func (x *Type) GetMapType() *MapType { + if x != nil { + return x.MapType + } + return nil +} + +// StructType is a type composed of ordered, named and typed sub-fields +type StructType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Fields []*StructType_Field `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"` +} + +func (x *StructType) Reset() { + *x = StructType{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_runtime_v1_schema_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StructType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StructType) ProtoMessage() {} + +func (x *StructType) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_schema_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StructType.ProtoReflect.Descriptor instead. +func (*StructType) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_schema_proto_rawDescGZIP(), []int{1} +} + +func (x *StructType) GetFields() []*StructType_Field { + if x != nil { + return x.Fields + } + return nil +} + +// MapType is a complex type for mapping keys to values +type MapType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + KeyType *Type `protobuf:"bytes,1,opt,name=key_type,json=keyType,proto3" json:"key_type,omitempty"` + ValueType *Type `protobuf:"bytes,2,opt,name=value_type,json=valueType,proto3" json:"value_type,omitempty"` +} + +func (x *MapType) Reset() { + *x = MapType{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_runtime_v1_schema_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MapType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MapType) ProtoMessage() {} + +func (x *MapType) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_schema_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MapType.ProtoReflect.Descriptor instead. +func (*MapType) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_schema_proto_rawDescGZIP(), []int{2} +} + +func (x *MapType) GetKeyType() *Type { + if x != nil { + return x.KeyType + } + return nil +} + +func (x *MapType) GetValueType() *Type { + if x != nil { + return x.ValueType + } + return nil +} + +type StructType_Field struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Type *Type `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` +} + +func (x *StructType_Field) Reset() { + *x = StructType_Field{} + if protoimpl.UnsafeEnabled { + mi := &file_rill_runtime_v1_schema_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StructType_Field) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StructType_Field) ProtoMessage() {} + +func (x *StructType_Field) ProtoReflect() protoreflect.Message { + mi := &file_rill_runtime_v1_schema_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StructType_Field.ProtoReflect.Descriptor instead. +func (*StructType_Field) Descriptor() ([]byte, []int) { + return file_rill_runtime_v1_schema_proto_rawDescGZIP(), []int{1, 0} +} + +func (x *StructType_Field) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *StructType_Field) GetType() *Type { + if x != nil { + return x.Type + } + return nil +} + +var File_rill_runtime_v1_schema_proto protoreflect.FileDescriptor + +var file_rill_runtime_v1_schema_proto_rawDesc = []byte{ + 0x0a, 0x1c, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x76, + 0x31, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, + 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x22, + 0xb3, 0x05, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2e, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, + 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x2e, 0x43, 0x6f, + 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x75, 0x6c, 0x6c, + 0x61, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6e, 0x75, 0x6c, 0x6c, + 0x61, 0x62, 0x6c, 0x65, 0x12, 0x43, 0x0a, 0x12, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x65, 0x6c, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x10, 0x61, 0x72, 0x72, 0x61, 0x79, 0x45, 0x6c, + 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x0b, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, + 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0a, 0x73, 0x74, 0x72, + 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x61, 0x70, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x72, 0x69, 0x6c, 0x6c, + 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x61, 0x70, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x07, 0x6d, 0x61, 0x70, 0x54, 0x79, 0x70, 0x65, 0x22, 0xa6, 0x03, 0x0a, + 0x04, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x43, + 0x4f, 0x44, 0x45, 0x5f, 0x42, 0x4f, 0x4f, 0x4c, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, + 0x44, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x38, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, 0x44, + 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x31, 0x36, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, 0x44, + 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x04, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, 0x44, + 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x4f, 0x44, + 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x31, 0x32, 0x38, 0x10, 0x06, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, + 0x44, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x38, 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x4f, + 0x44, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x31, 0x36, 0x10, 0x08, 0x12, 0x0f, 0x0a, 0x0b, 0x43, + 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x33, 0x32, 0x10, 0x09, 0x12, 0x0f, 0x0a, 0x0b, + 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x36, 0x34, 0x10, 0x0a, 0x12, 0x10, 0x0a, + 0x0c, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x49, 0x4e, 0x54, 0x31, 0x32, 0x38, 0x10, 0x0b, 0x12, + 0x10, 0x0a, 0x0c, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x33, 0x32, 0x10, + 0x0c, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x46, 0x4c, 0x4f, 0x41, 0x54, 0x36, + 0x34, 0x10, 0x0d, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x49, 0x4d, 0x45, + 0x53, 0x54, 0x41, 0x4d, 0x50, 0x10, 0x0e, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x44, 0x45, 0x5f, + 0x44, 0x41, 0x54, 0x45, 0x10, 0x0f, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x54, + 0x49, 0x4d, 0x45, 0x10, 0x10, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x54, + 0x52, 0x49, 0x4e, 0x47, 0x10, 0x11, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x42, + 0x59, 0x54, 0x45, 0x53, 0x10, 0x12, 0x12, 0x0e, 0x0a, 0x0a, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x41, + 0x52, 0x52, 0x41, 0x59, 0x10, 0x13, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, + 0x54, 0x52, 0x55, 0x43, 0x54, 0x10, 0x14, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x4f, 0x44, 0x45, 0x5f, + 0x4d, 0x41, 0x50, 0x10, 0x15, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x44, 0x45, + 0x43, 0x49, 0x4d, 0x41, 0x4c, 0x10, 0x16, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x44, 0x45, 0x5f, + 0x4a, 0x53, 0x4f, 0x4e, 0x10, 0x17, 0x12, 0x0d, 0x0a, 0x09, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, + 0x55, 0x49, 0x44, 0x10, 0x18, 0x22, 0x8f, 0x01, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x39, 0x0a, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x52, 0x06, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x1a, + 0x46, 0x0a, 0x05, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x69, 0x6c, + 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x71, 0x0a, 0x07, 0x4d, 0x61, 0x70, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x30, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x07, 0x6b, 0x65, 0x79, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, + 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, + 0x09, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0xb4, 0x01, 0x0a, 0x13, 0x63, + 0x6f, 0x6d, 0x2e, 0x72, 0x69, 0x6c, 0x6c, 0x2e, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, + 0x76, 0x31, 0x42, 0x0b, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, + 0x01, 0x5a, 0x32, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x69, + 0x6c, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2f, 0x72, 0x69, 0x6c, 0x6c, 0x2f, 0x72, 0x69, 0x6c, 0x6c, + 0x2f, 0x72, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x72, 0x75, 0x6e, 0x74, + 0x69, 0x6d, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x52, 0x52, 0x58, 0xaa, 0x02, 0x0f, 0x52, 0x69, + 0x6c, 0x6c, 0x2e, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0f, + 0x52, 0x69, 0x6c, 0x6c, 0x5c, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5c, 0x56, 0x31, 0xe2, + 0x02, 0x1b, 0x52, 0x69, 0x6c, 0x6c, 0x5c, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x5c, 0x56, + 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x11, + 0x52, 0x69, 0x6c, 0x6c, 0x3a, 0x3a, 0x52, 0x75, 0x6e, 0x74, 0x69, 0x6d, 0x65, 0x3a, 0x3a, 0x56, + 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_rill_runtime_v1_schema_proto_rawDescOnce sync.Once + file_rill_runtime_v1_schema_proto_rawDescData = file_rill_runtime_v1_schema_proto_rawDesc +) + +func file_rill_runtime_v1_schema_proto_rawDescGZIP() []byte { + file_rill_runtime_v1_schema_proto_rawDescOnce.Do(func() { + file_rill_runtime_v1_schema_proto_rawDescData = protoimpl.X.CompressGZIP(file_rill_runtime_v1_schema_proto_rawDescData) + }) + return file_rill_runtime_v1_schema_proto_rawDescData +} + +var file_rill_runtime_v1_schema_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_rill_runtime_v1_schema_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_rill_runtime_v1_schema_proto_goTypes = []interface{}{ + (Type_Code)(0), // 0: rill.runtime.v1.Type.Code + (*Type)(nil), // 1: rill.runtime.v1.Type + (*StructType)(nil), // 2: rill.runtime.v1.StructType + (*MapType)(nil), // 3: rill.runtime.v1.MapType + (*StructType_Field)(nil), // 4: rill.runtime.v1.StructType.Field +} +var file_rill_runtime_v1_schema_proto_depIdxs = []int32{ + 0, // 0: rill.runtime.v1.Type.code:type_name -> rill.runtime.v1.Type.Code + 1, // 1: rill.runtime.v1.Type.array_element_type:type_name -> rill.runtime.v1.Type + 2, // 2: rill.runtime.v1.Type.struct_type:type_name -> rill.runtime.v1.StructType + 3, // 3: rill.runtime.v1.Type.map_type:type_name -> rill.runtime.v1.MapType + 4, // 4: rill.runtime.v1.StructType.fields:type_name -> rill.runtime.v1.StructType.Field + 1, // 5: rill.runtime.v1.MapType.key_type:type_name -> rill.runtime.v1.Type + 1, // 6: rill.runtime.v1.MapType.value_type:type_name -> rill.runtime.v1.Type + 1, // 7: rill.runtime.v1.StructType.Field.type:type_name -> rill.runtime.v1.Type + 8, // [8:8] is the sub-list for method output_type + 8, // [8:8] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name +} + +func init() { file_rill_runtime_v1_schema_proto_init() } +func file_rill_runtime_v1_schema_proto_init() { + if File_rill_runtime_v1_schema_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_rill_runtime_v1_schema_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Type); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_runtime_v1_schema_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StructType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_runtime_v1_schema_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MapType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_rill_runtime_v1_schema_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StructType_Field); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_rill_runtime_v1_schema_proto_rawDesc, + NumEnums: 1, + NumMessages: 4, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_rill_runtime_v1_schema_proto_goTypes, + DependencyIndexes: file_rill_runtime_v1_schema_proto_depIdxs, + EnumInfos: file_rill_runtime_v1_schema_proto_enumTypes, + MessageInfos: file_rill_runtime_v1_schema_proto_msgTypes, + }.Build() + File_rill_runtime_v1_schema_proto = out.File + file_rill_runtime_v1_schema_proto_rawDesc = nil + file_rill_runtime_v1_schema_proto_goTypes = nil + file_rill_runtime_v1_schema_proto_depIdxs = nil +} diff --git a/runtime/api/runtime.proto b/proto/rill/runtime/v1/api.proto similarity index 89% rename from runtime/api/runtime.proto rename to proto/rill/runtime/v1/api.proto index 47d2f0a37db..b181f448136 100644 --- a/runtime/api/runtime.proto +++ b/proto/rill/runtime/v1/api.proto @@ -1,12 +1,11 @@ syntax = "proto3"; - package rill.runtime.v1; import "google/api/annotations.proto"; import "google/protobuf/struct.proto"; import "google/protobuf/timestamp.proto"; - -option go_package = "github.com/rilldata/rill/runtime/api;api"; +import "rill/runtime/v1/catalog.proto"; +import "rill/runtime/v1/schema.proto"; // RuntimeService is a data infrastructure proxy and orchestrator based on Rill SQL. // It has a concept of instances, which are fully isolated data projects, enabling optional multi-tenancy. @@ -231,14 +230,6 @@ service RuntimeService { // Explore APIs - // MetricsViewMeta returns metadata about a metrics view. - // It's comparable to calling GetCatalogObject and will be deprecated in the future. - rpc MetricsViewMeta(MetricsViewMetaRequest) returns (MetricsViewMetaResponse) { - option (google.api.http) = { - post: "/v1/instances/{instance_id}/metrics-views/{metrics_view_name}/meta" - }; - } - // MetricsViewToplist returns the top dimension values of a metrics view sorted by one or more measures. // It's a convenience API for querying a metrics view. rpc MetricsViewToplist(MetricsViewToplistRequest) returns (MetricsViewToplistResponse) { @@ -605,84 +596,6 @@ message CatalogObject { google.protobuf.Timestamp refreshed_on = 10; } -// Table represents a table in the OLAP database. These include pre-existing tables discovered by periodically -// scanning the database's information schema when the instance is created with exposed=true. Pre-existing tables -// have managed = false. -message Table { - // Table name - string name = 1; - // Table schema - StructType schema = 2; - // Managed is true if the table was created through a runtime migration, false if it was discovered in by - // scanning the database's information schema. - bool managed = 3; -} - -// Source is the internal representation of a source definition -message Source { - // Name of the source - string name = 1; - // Connector used by the source - string connector = 2; - // Connector properties assigned in the source - google.protobuf.Struct properties = 3; - // Detected schema of the source - StructType schema = 5; - // Used for the SQL statement for sources - // TODO: Remove when frontend sources code has been refactored - string sql = 20; -} - -// Model is the internal representation of a model definition -message Model { - // Dialects supported for models - enum Dialect { - DIALECT_UNSPECIFIED = 0; - DIALECT_DUCKDB = 1; - } - // Name of the model - string name = 1; - // SQL is a SELECT statement representing the model - string sql = 2; - // Dialect of the SQL statement - Dialect dialect = 3; - // Detected schema of the model - StructType schema = 4; -} - -// Metrics view is the internal representation of a metrics view definition -message MetricsView { - // Dimensions are columns to filter and group by - message Dimension { - string name = 1; - string label = 2; - string description = 3; - string enabled = 4; - } - // Measures are aggregated computed values - message Measure { - string name = 1; - string label = 2; - string expression = 3; - string description = 4; - string format = 5; - string enabled = 6; - } - // Name of the metrics view - string name = 1; - // Name of the source or model that the metrics view is based on - string from = 2; - // Name of the primary time dimension, used for rendering time series - string time_dimension = 3; - // Recommended granularities for rolling up the time dimension. - // Should be a valid SQL INTERVAL value. - repeated string time_grains = 4; - // Dimensions in the metrics view - repeated Dimension dimensions = 5; - // Measures in the metrics view - repeated Measure measures = 6; -} - // Request message for RuntimeService.ListCatalogObjects message ListCatalogObjectsRequest { string instance_id = 1; @@ -966,20 +879,6 @@ message QueryDirectResponse { // Explore APIs // ********** -// Request message for RuntimeService.MetricsViewMeta -message MetricsViewMetaRequest { - string instance_id = 1; - string metrics_view_name = 2; -} - -// Response message for RuntimeService.MetricsViewMeta -message MetricsViewMetaResponse { - string metrics_view_name = 1; - string from_object = 2; - repeated MetricsView.Dimension dimensions = 3; - repeated MetricsView.Measure measures = 4; -} - // Request message for RuntimeService.MetricsViewToplist message MetricsViewToplistRequest { string instance_id = 1; @@ -1442,64 +1341,3 @@ message ListConnectorsRequest {} message ListConnectorsResponse { repeated Connector connectors = 1; } - -// ********** -// Common messages -// ********** - -// Type represents a data type in a schema -message Type { - // Code enumerates all the types that can be represented in a schema - enum Code { - CODE_UNSPECIFIED = 0; - CODE_BOOL = 1; - CODE_INT8 = 2; - CODE_INT16 = 3; - CODE_INT32 = 4; - CODE_INT64 = 5; - CODE_INT128 = 6; - CODE_UINT8 = 7; - CODE_UINT16 = 8; - CODE_UINT32 = 9; - CODE_UINT64 = 10; - CODE_UINT128 = 11; - CODE_FLOAT32 = 12; - CODE_FLOAT64 = 13; - CODE_TIMESTAMP = 14; - CODE_DATE = 15; - CODE_TIME = 16; - CODE_STRING = 17; - CODE_BYTES = 18; - CODE_ARRAY = 19; - CODE_STRUCT = 20; - CODE_MAP = 21; - CODE_DECIMAL = 22; - CODE_JSON = 23; - CODE_UUID = 24; - } - // Code designates the type - Code code = 1; - // Nullable indicates whether null values are possible - bool nullable = 2; - // If code is CODE_ARRAY, array_element_type specifies the type of the array elements - Type array_element_type = 3; - // If code is CODE_STRUCT, struct_type specifies the type of the struct's fields - StructType struct_type = 4; - // If code is CODE_MAP, map_type specifies the map's key and value types - MapType map_type = 5; -} - -// StructType is a type composed of ordered, named and typed sub-fields -message StructType { - message Field { - string name = 1; - Type type = 2; - } - repeated Field fields = 1; -} - -// MapType is a complex type for mapping keys to values -message MapType { - Type key_type = 1; - Type value_type = 2; -} diff --git a/proto/rill/runtime/v1/catalog.proto b/proto/rill/runtime/v1/catalog.proto new file mode 100644 index 00000000000..e81e2d828fe --- /dev/null +++ b/proto/rill/runtime/v1/catalog.proto @@ -0,0 +1,83 @@ +syntax = "proto3"; +package rill.runtime.v1; + +import "google/protobuf/struct.proto"; +import "rill/runtime/v1/schema.proto"; + +// Table represents a table in the OLAP database. These include pre-existing tables discovered by periodically +// scanning the database's information schema when the instance is created with exposed=true. Pre-existing tables +// have managed = false. +message Table { + // Table name + string name = 1; + // Table schema + StructType schema = 2; + // Managed is true if the table was created through a runtime migration, false if it was discovered in by + // scanning the database's information schema. + bool managed = 3; +} + +// Source is the internal representation of a source definition +message Source { + // Name of the source + string name = 1; + // Connector used by the source + string connector = 2; + // Connector properties assigned in the source + google.protobuf.Struct properties = 3; + // Detected schema of the source + StructType schema = 5; + // Used for the SQL statement for sources + // TODO: Remove when frontend sources code has been refactored + string sql = 20; +} + +// Model is the internal representation of a model definition +message Model { + // Dialects supported for models + enum Dialect { + DIALECT_UNSPECIFIED = 0; + DIALECT_DUCKDB = 1; + } + // Name of the model + string name = 1; + // SQL is a SELECT statement representing the model + string sql = 2; + // Dialect of the SQL statement + Dialect dialect = 3; + // Detected schema of the model + StructType schema = 4; +} + +// Metrics view is the internal representation of a metrics view definition +message MetricsView { + // Dimensions are columns to filter and group by + message Dimension { + string name = 1; + string label = 2; + string description = 3; + string enabled = 4; + } + // Measures are aggregated computed values + message Measure { + string name = 1; + string label = 2; + string expression = 3; + string description = 4; + string format = 5; + string enabled = 6; + } + // Name of the metrics view + string name = 1; + // Name of the source or model that the metrics view is based on + string from = 2; + // Name of the primary time dimension, used for rendering time series + string time_dimension = 3; + // Recommended granularities for rolling up the time dimension. + // Should be a valid SQL INTERVAL value. + repeated string time_grains = 4; + // Dimensions in the metrics view + repeated Dimension dimensions = 5; + // Measures in the metrics view + repeated Measure measures = 6; +} \ No newline at end of file diff --git a/proto/rill/runtime/v1/schema.proto b/proto/rill/runtime/v1/schema.proto new file mode 100644 index 00000000000..30a3ae998f4 --- /dev/null +++ b/proto/rill/runtime/v1/schema.proto @@ -0,0 +1,59 @@ +syntax = "proto3"; +package rill.runtime.v1; + +// Type represents a data type in a schema +message Type { + // Code enumerates all the types that can be represented in a schema + enum Code { + CODE_UNSPECIFIED = 0; + CODE_BOOL = 1; + CODE_INT8 = 2; + CODE_INT16 = 3; + CODE_INT32 = 4; + CODE_INT64 = 5; + CODE_INT128 = 6; + CODE_UINT8 = 7; + CODE_UINT16 = 8; + CODE_UINT32 = 9; + CODE_UINT64 = 10; + CODE_UINT128 = 11; + CODE_FLOAT32 = 12; + CODE_FLOAT64 = 13; + CODE_TIMESTAMP = 14; + CODE_DATE = 15; + CODE_TIME = 16; + CODE_STRING = 17; + CODE_BYTES = 18; + CODE_ARRAY = 19; + CODE_STRUCT = 20; + CODE_MAP = 21; + CODE_DECIMAL = 22; + CODE_JSON = 23; + CODE_UUID = 24; + } + // Code designates the type + Code code = 1; + // Nullable indicates whether null values are possible + bool nullable = 2; + // If code is CODE_ARRAY, array_element_type specifies the type of the array elements + Type array_element_type = 3; + // If code is CODE_STRUCT, struct_type specifies the type of the struct's fields + StructType struct_type = 4; + // If code is CODE_MAP, map_type specifies the map's key and value types + MapType map_type = 5; +} + +// StructType is a type composed of ordered, named and typed sub-fields +message StructType { + message Field { + string name = 1; + Type type = 2; + } + repeated Field fields = 1; +} + +// MapType is a complex type for mapping keys to values +message MapType { + Type key_type = 1; + Type value_type = 2; +} diff --git a/runtime/Makefile b/runtime/Makefile index 794f2c33d61..425a3239844 100644 --- a/runtime/Makefile +++ b/runtime/Makefile @@ -19,19 +19,6 @@ clean: rm -f main rm -rf release -generate.proto.api: - go install \ - "google.golang.org/protobuf/cmd/protoc-gen-go" \ - "google.golang.org/grpc/cmd/protoc-gen-go-grpc" \ - "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway" \ - "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2" - protoc --proto_path=api \ - --go_out=api --go_opt=paths=source_relative \ - --go-grpc_out=api --go-grpc_opt=paths=source_relative \ - --grpc-gateway_out=api --grpc-gateway_opt=logtostderr=true --grpc-gateway_opt=paths=source_relative --grpc-gateway_opt=generate_unbound_methods=true \ - --openapiv2_out=api --openapiv2_opt=logtostderr=true \ - runtime.proto - generate.proto.sql.ast: go install "google.golang.org/protobuf/cmd/protoc-gen-go" protoc --proto_path=.. \ diff --git a/runtime/README.md b/runtime/README.md index eca9d5fed2b..c7579c5df68 100644 --- a/runtime/README.md +++ b/runtime/README.md @@ -1,12 +1,11 @@ -# runtime +# `runtime` -The runtime is our data plane. It connects to data infrastructure and is will be responsible for transpiling queries, applying migrations, implementing connectors, enforcing row-based access policies, scheduling tasks, triggering alerts, and much more. +The runtime is our data plane. It connects to data infrastructure and will be responsible for transpiling queries, applying migrations, implementing connectors, enforcing row-based access policies, scheduling tasks, triggering alerts, and much more. It's designed as a stand-alone component that can be embedded in local applications (as it is into Rill Developer) or deployed in a cloud environment. ## Code structure -- `api` describes the runtime's API using Protocol Buffers (see `runtime.proto`) and generates gRPC and OpenAPI interfaces for it. - `cmd` contains a `main.go` file that starts the runtime as a standalone server. - `connectors` contains connector implementations. - `drivers` contains interfaces and drivers for all the data infrastructure (and other persistant stores) we support. @@ -16,18 +15,13 @@ It's designed as a stand-alone component that can be embedded in local applicati ## How to test and run -The runtime relies on the SQL native library being present in `runtime/sql/deps`. We don't check that into the repo, so you must manually download it by running: -```bash -go generate ./runtime/sql -``` - -Now, you can run and test the runtime as any other Go application. Start the server using: +You can run and test the runtime as any other Go application. Start the server using: ```bash go run ./runtime/cmd ``` Or run all tests using: ```bash -go test ./... +go test ./runtime/... ``` ## Configuration @@ -45,11 +39,13 @@ RILL_RUNTIME_DATABASE_URL=":memory:" ## Adding a new endpoint +We define our APIs using gRPC and use [gRPC-Gateway](https://grpc-ecosystem.github.io/grpc-gateway/) to map the RPCs to a RESTful API. See `proto/README.md` for details. + To add a new endpoint: -1. Describe the endpoint in `runtime/api/runtime.proto` -2. Re-generate gRPC and OpenAPI interfaces by running `go generate ./runtime/api` -3. Copy the new handler signature from the `RuntimeServiceServer` interface in `runtime/api/runtime_grpc_pb.go` -4. Paste the handler signature and implement it in a file in `./runtime/server` +1. Describe the endpoint in `proto/rill/runtime/v1/api.proto` +2. Re-generate gRPC and OpenAPI interfaces by running `make proto.generate` +3. Copy the new handler signature from the `RuntimeServiceServer` interface in `proto/gen/rill/runtime/v1/api_grpc_pb.go` +4. Paste the handler signature and implement it in a file in `runtime/server/` ## Example: Creating an instance and ingesting a source diff --git a/runtime/api/README.md b/runtime/api/README.md deleted file mode 100644 index 9b345b6d4d2..00000000000 --- a/runtime/api/README.md +++ /dev/null @@ -1,23 +0,0 @@ -# `runtime/api/` - -This directory contains gRPC (protocol buffer) definitions for the Runtime's external APIs. They're defined in `runtime.proto`, which generates the other files in this directory. The actual handlers are implemented in `runtime/server/`. - -We use [gRPC-Gateway](https://grpc-ecosystem.github.io/grpc-gateway/) to map the gRPC definitions to a RESTful API. The mappings are done inline in the `proto` file, using `google.api.http` annotations ([docs here](https://github.com/googleapis/googleapis/blob/master/google/api/http.proto#L44)). - -Using protocol buffers to define dual RPC and REST interfaces is a technique widely used at Google. We suggest taking a look at their excellent [API design guide](https://cloud.google.com/apis/design/resources), which describes this pattern (notice it's multiple pages). - -## Generating - -After changing the `.proto` file, you can re-generate the bindings by running (from the repo root): - -```bash -go generate ./runtime/api -``` - -We also have a generated TypeScript client for the runtime in `web-common/src/runtime-client`. If relevant, you can re-generate it by running: - -```bash -npm run generate:runtime-client -w web-common -``` - -(This is not automated as the frontend may be pinned to an older version of the runtime.) diff --git a/runtime/api/generate.go b/runtime/api/generate.go deleted file mode 100644 index 10184e7876c..00000000000 --- a/runtime/api/generate.go +++ /dev/null @@ -1,3 +0,0 @@ -package api - -//go:generate make -C .. generate.proto.api diff --git a/runtime/api/google/api/annotations.proto b/runtime/api/google/api/annotations.proto deleted file mode 100644 index efdab3db6ca..00000000000 --- a/runtime/api/google/api/annotations.proto +++ /dev/null @@ -1,31 +0,0 @@ -// Copyright 2015 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -import "google/api/http.proto"; -import "google/protobuf/descriptor.proto"; - -option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; -option java_multiple_files = true; -option java_outer_classname = "AnnotationsProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - -extend google.protobuf.MethodOptions { - // See `HttpRule`. - HttpRule http = 72295728; -} diff --git a/runtime/api/google/api/field_behavior.proto b/runtime/api/google/api/field_behavior.proto deleted file mode 100644 index c4abe3b670f..00000000000 --- a/runtime/api/google/api/field_behavior.proto +++ /dev/null @@ -1,90 +0,0 @@ -// Copyright 2018 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -import "google/protobuf/descriptor.proto"; - -option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; -option java_multiple_files = true; -option java_outer_classname = "FieldBehaviorProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - -extend google.protobuf.FieldOptions { - // A designation of a specific field behavior (required, output only, etc.) - // in protobuf messages. - // - // Examples: - // - // string name = 1 [(google.api.field_behavior) = REQUIRED]; - // State state = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; - // google.protobuf.Duration ttl = 1 - // [(google.api.field_behavior) = INPUT_ONLY]; - // google.protobuf.Timestamp expire_time = 1 - // [(google.api.field_behavior) = OUTPUT_ONLY, - // (google.api.field_behavior) = IMMUTABLE]; - repeated google.api.FieldBehavior field_behavior = 1052; -} - -// An indicator of the behavior of a given field (for example, that a field -// is required in requests, or given as output but ignored as input). -// This **does not** change the behavior in protocol buffers itself; it only -// denotes the behavior and may affect how API tooling handles the field. -// -// Note: This enum **may** receive new values in the future. -enum FieldBehavior { - // Conventional default for enums. Do not use this. - FIELD_BEHAVIOR_UNSPECIFIED = 0; - - // Specifically denotes a field as optional. - // While all fields in protocol buffers are optional, this may be specified - // for emphasis if appropriate. - OPTIONAL = 1; - - // Denotes a field as required. - // This indicates that the field **must** be provided as part of the request, - // and failure to do so will cause an error (usually `INVALID_ARGUMENT`). - REQUIRED = 2; - - // Denotes a field as output only. - // This indicates that the field is provided in responses, but including the - // field in a request does nothing (the server *must* ignore it and - // *must not* throw an error as a result of the field's presence). - OUTPUT_ONLY = 3; - - // Denotes a field as input only. - // This indicates that the field is provided in requests, and the - // corresponding field is not included in output. - INPUT_ONLY = 4; - - // Denotes a field as immutable. - // This indicates that the field may be set once in a request to create a - // resource, but may not be changed thereafter. - IMMUTABLE = 5; - - // Denotes that a (repeated) field is an unordered list. - // This indicates that the service may provide the elements of the list - // in any arbitrary order, rather than the order the user originally - // provided. Additionally, the list's order may or may not be stable. - UNORDERED_LIST = 6; - - // Denotes that this field returns a non-empty default value if not set. - // This indicates that if the user provides the empty value in a request, - // a non-empty value will be returned. The user will not be aware of what - // non-empty value to expect. - NON_EMPTY_DEFAULT = 7; -} diff --git a/runtime/api/google/api/http.proto b/runtime/api/google/api/http.proto deleted file mode 100644 index 113fa936a09..00000000000 --- a/runtime/api/google/api/http.proto +++ /dev/null @@ -1,375 +0,0 @@ -// Copyright 2015 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -option cc_enable_arenas = true; -option go_package = "google.golang.org/genproto/googleapis/api/annotations;annotations"; -option java_multiple_files = true; -option java_outer_classname = "HttpProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - -// Defines the HTTP configuration for an API service. It contains a list of -// [HttpRule][google.api.HttpRule], each specifying the mapping of an RPC method -// to one or more HTTP REST API methods. -message Http { - // A list of HTTP configuration rules that apply to individual API methods. - // - // **NOTE:** All service configuration rules follow "last one wins" order. - repeated HttpRule rules = 1; - - // When set to true, URL path parameters will be fully URI-decoded except in - // cases of single segment matches in reserved expansion, where "%2F" will be - // left encoded. - // - // The default behavior is to not decode RFC 6570 reserved characters in multi - // segment matches. - bool fully_decode_reserved_expansion = 2; -} - -// # gRPC Transcoding -// -// gRPC Transcoding is a feature for mapping between a gRPC method and one or -// more HTTP REST endpoints. It allows developers to build a single API service -// that supports both gRPC APIs and REST APIs. Many systems, including [Google -// APIs](https://github.com/googleapis/googleapis), -// [Cloud Endpoints](https://cloud.google.com/endpoints), [gRPC -// Gateway](https://github.com/grpc-ecosystem/grpc-gateway), -// and [Envoy](https://github.com/envoyproxy/envoy) proxy support this feature -// and use it for large scale production services. -// -// `HttpRule` defines the schema of the gRPC/REST mapping. The mapping specifies -// how different portions of the gRPC request message are mapped to the URL -// path, URL query parameters, and HTTP request body. It also controls how the -// gRPC response message is mapped to the HTTP response body. `HttpRule` is -// typically specified as an `google.api.http` annotation on the gRPC method. -// -// Each mapping specifies a URL path template and an HTTP method. The path -// template may refer to one or more fields in the gRPC request message, as long -// as each field is a non-repeated field with a primitive (non-message) type. -// The path template controls how fields of the request message are mapped to -// the URL path. -// -// Example: -// -// service Messaging { -// rpc GetMessage(GetMessageRequest) returns (Message) { -// option (google.api.http) = { -// get: "/v1/{name=messages/*}" -// }; -// } -// } -// message GetMessageRequest { -// string name = 1; // Mapped to URL path. -// } -// message Message { -// string text = 1; // The resource content. -// } -// -// This enables an HTTP REST to gRPC mapping as below: -// -// HTTP | gRPC -// -----|----- -// `GET /v1/messages/123456` | `GetMessage(name: "messages/123456")` -// -// Any fields in the request message which are not bound by the path template -// automatically become HTTP query parameters if there is no HTTP request body. -// For example: -// -// service Messaging { -// rpc GetMessage(GetMessageRequest) returns (Message) { -// option (google.api.http) = { -// get:"/v1/messages/{message_id}" -// }; -// } -// } -// message GetMessageRequest { -// message SubMessage { -// string subfield = 1; -// } -// string message_id = 1; // Mapped to URL path. -// int64 revision = 2; // Mapped to URL query parameter `revision`. -// SubMessage sub = 3; // Mapped to URL query parameter `sub.subfield`. -// } -// -// This enables a HTTP JSON to RPC mapping as below: -// -// HTTP | gRPC -// -----|----- -// `GET /v1/messages/123456?revision=2&sub.subfield=foo` | -// `GetMessage(message_id: "123456" revision: 2 sub: SubMessage(subfield: -// "foo"))` -// -// Note that fields which are mapped to URL query parameters must have a -// primitive type or a repeated primitive type or a non-repeated message type. -// In the case of a repeated type, the parameter can be repeated in the URL -// as `...?param=A¶m=B`. In the case of a message type, each field of the -// message is mapped to a separate parameter, such as -// `...?foo.a=A&foo.b=B&foo.c=C`. -// -// For HTTP methods that allow a request body, the `body` field -// specifies the mapping. Consider a REST update method on the -// message resource collection: -// -// service Messaging { -// rpc UpdateMessage(UpdateMessageRequest) returns (Message) { -// option (google.api.http) = { -// patch: "/v1/messages/{message_id}" -// body: "message" -// }; -// } -// } -// message UpdateMessageRequest { -// string message_id = 1; // mapped to the URL -// Message message = 2; // mapped to the body -// } -// -// The following HTTP JSON to RPC mapping is enabled, where the -// representation of the JSON in the request body is determined by -// protos JSON encoding: -// -// HTTP | gRPC -// -----|----- -// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: -// "123456" message { text: "Hi!" })` -// -// The special name `*` can be used in the body mapping to define that -// every field not bound by the path template should be mapped to the -// request body. This enables the following alternative definition of -// the update method: -// -// service Messaging { -// rpc UpdateMessage(Message) returns (Message) { -// option (google.api.http) = { -// patch: "/v1/messages/{message_id}" -// body: "*" -// }; -// } -// } -// message Message { -// string message_id = 1; -// string text = 2; -// } -// -// -// The following HTTP JSON to RPC mapping is enabled: -// -// HTTP | gRPC -// -----|----- -// `PATCH /v1/messages/123456 { "text": "Hi!" }` | `UpdateMessage(message_id: -// "123456" text: "Hi!")` -// -// Note that when using `*` in the body mapping, it is not possible to -// have HTTP parameters, as all fields not bound by the path end in -// the body. This makes this option more rarely used in practice when -// defining REST APIs. The common usage of `*` is in custom methods -// which don't use the URL at all for transferring data. -// -// It is possible to define multiple HTTP methods for one RPC by using -// the `additional_bindings` option. Example: -// -// service Messaging { -// rpc GetMessage(GetMessageRequest) returns (Message) { -// option (google.api.http) = { -// get: "/v1/messages/{message_id}" -// additional_bindings { -// get: "/v1/users/{user_id}/messages/{message_id}" -// } -// }; -// } -// } -// message GetMessageRequest { -// string message_id = 1; -// string user_id = 2; -// } -// -// This enables the following two alternative HTTP JSON to RPC mappings: -// -// HTTP | gRPC -// -----|----- -// `GET /v1/messages/123456` | `GetMessage(message_id: "123456")` -// `GET /v1/users/me/messages/123456` | `GetMessage(user_id: "me" message_id: -// "123456")` -// -// ## Rules for HTTP mapping -// -// 1. Leaf request fields (recursive expansion nested messages in the request -// message) are classified into three categories: -// - Fields referred by the path template. They are passed via the URL path. -// - Fields referred by the [HttpRule.body][google.api.HttpRule.body]. They are passed via the HTTP -// request body. -// - All other fields are passed via the URL query parameters, and the -// parameter name is the field path in the request message. A repeated -// field can be represented as multiple query parameters under the same -// name. -// 2. If [HttpRule.body][google.api.HttpRule.body] is "*", there is no URL query parameter, all fields -// are passed via URL path and HTTP request body. -// 3. If [HttpRule.body][google.api.HttpRule.body] is omitted, there is no HTTP request body, all -// fields are passed via URL path and URL query parameters. -// -// ### Path template syntax -// -// Template = "/" Segments [ Verb ] ; -// Segments = Segment { "/" Segment } ; -// Segment = "*" | "**" | LITERAL | Variable ; -// Variable = "{" FieldPath [ "=" Segments ] "}" ; -// FieldPath = IDENT { "." IDENT } ; -// Verb = ":" LITERAL ; -// -// The syntax `*` matches a single URL path segment. The syntax `**` matches -// zero or more URL path segments, which must be the last part of the URL path -// except the `Verb`. -// -// The syntax `Variable` matches part of the URL path as specified by its -// template. A variable template must not contain other variables. If a variable -// matches a single path segment, its template may be omitted, e.g. `{var}` -// is equivalent to `{var=*}`. -// -// The syntax `LITERAL` matches literal text in the URL path. If the `LITERAL` -// contains any reserved character, such characters should be percent-encoded -// before the matching. -// -// If a variable contains exactly one path segment, such as `"{var}"` or -// `"{var=*}"`, when such a variable is expanded into a URL path on the client -// side, all characters except `[-_.~0-9a-zA-Z]` are percent-encoded. The -// server side does the reverse decoding. Such variables show up in the -// [Discovery -// Document](https://developers.google.com/discovery/v1/reference/apis) as -// `{var}`. -// -// If a variable contains multiple path segments, such as `"{var=foo/*}"` -// or `"{var=**}"`, when such a variable is expanded into a URL path on the -// client side, all characters except `[-_.~/0-9a-zA-Z]` are percent-encoded. -// The server side does the reverse decoding, except "%2F" and "%2f" are left -// unchanged. Such variables show up in the -// [Discovery -// Document](https://developers.google.com/discovery/v1/reference/apis) as -// `{+var}`. -// -// ## Using gRPC API Service Configuration -// -// gRPC API Service Configuration (service config) is a configuration language -// for configuring a gRPC service to become a user-facing product. The -// service config is simply the YAML representation of the `google.api.Service` -// proto message. -// -// As an alternative to annotating your proto file, you can configure gRPC -// transcoding in your service config YAML files. You do this by specifying a -// `HttpRule` that maps the gRPC method to a REST endpoint, achieving the same -// effect as the proto annotation. This can be particularly useful if you -// have a proto that is reused in multiple services. Note that any transcoding -// specified in the service config will override any matching transcoding -// configuration in the proto. -// -// Example: -// -// http: -// rules: -// # Selects a gRPC method and applies HttpRule to it. -// - selector: example.v1.Messaging.GetMessage -// get: /v1/messages/{message_id}/{sub.subfield} -// -// ## Special notes -// -// When gRPC Transcoding is used to map a gRPC to JSON REST endpoints, the -// proto to JSON conversion must follow the [proto3 -// specification](https://developers.google.com/protocol-buffers/docs/proto3#json). -// -// While the single segment variable follows the semantics of -// [RFC 6570](https://tools.ietf.org/html/rfc6570) Section 3.2.2 Simple String -// Expansion, the multi segment variable **does not** follow RFC 6570 Section -// 3.2.3 Reserved Expansion. The reason is that the Reserved Expansion -// does not expand special characters like `?` and `#`, which would lead -// to invalid URLs. As the result, gRPC Transcoding uses a custom encoding -// for multi segment variables. -// -// The path variables **must not** refer to any repeated or mapped field, -// because client libraries are not capable of handling such variable expansion. -// -// The path variables **must not** capture the leading "/" character. The reason -// is that the most common use case "{var}" does not capture the leading "/" -// character. For consistency, all path variables must share the same behavior. -// -// Repeated message fields must not be mapped to URL query parameters, because -// no client library can support such complicated mapping. -// -// If an API needs to use a JSON array for request or response body, it can map -// the request or response body to a repeated field. However, some gRPC -// Transcoding implementations may not support this feature. -message HttpRule { - // Selects a method to which this rule applies. - // - // Refer to [selector][google.api.DocumentationRule.selector] for syntax details. - string selector = 1; - - // Determines the URL pattern is matched by this rules. This pattern can be - // used with any of the {get|put|post|delete|patch} methods. A custom method - // can be defined using the 'custom' field. - oneof pattern { - // Maps to HTTP GET. Used for listing and getting information about - // resources. - string get = 2; - - // Maps to HTTP PUT. Used for replacing a resource. - string put = 3; - - // Maps to HTTP POST. Used for creating a resource or performing an action. - string post = 4; - - // Maps to HTTP DELETE. Used for deleting a resource. - string delete = 5; - - // Maps to HTTP PATCH. Used for updating a resource. - string patch = 6; - - // The custom pattern is used for specifying an HTTP method that is not - // included in the `pattern` field, such as HEAD, or "*" to leave the - // HTTP method unspecified for this rule. The wild-card rule is useful - // for services that provide content to Web (HTML) clients. - CustomHttpPattern custom = 8; - } - - // The name of the request field whose value is mapped to the HTTP request - // body, or `*` for mapping all request fields not captured by the path - // pattern to the HTTP body, or omitted for not having any HTTP request body. - // - // NOTE: the referred field must be present at the top-level of the request - // message type. - string body = 7; - - // Optional. The name of the response field whose value is mapped to the HTTP - // response body. When omitted, the entire response message will be used - // as the HTTP response body. - // - // NOTE: The referred field must be present at the top-level of the response - // message type. - string response_body = 12; - - // Additional HTTP bindings for the selector. Nested bindings must - // not contain an `additional_bindings` field themselves (that is, - // the nesting may only be one level deep). - repeated HttpRule additional_bindings = 11; -} - -// A custom pattern is used for defining custom HTTP verb. -message CustomHttpPattern { - // The name of this custom HTTP verb. - string kind = 1; - - // The path matched by this custom verb. - string path = 2; -} diff --git a/runtime/api/google/api/httpbody.proto b/runtime/api/google/api/httpbody.proto deleted file mode 100644 index 00c80aba9d7..00000000000 --- a/runtime/api/google/api/httpbody.proto +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright 2015 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -syntax = "proto3"; - -package google.api; - -import "google/protobuf/any.proto"; - -option cc_enable_arenas = true; -option go_package = "google.golang.org/genproto/googleapis/api/httpbody;httpbody"; -option java_multiple_files = true; -option java_outer_classname = "HttpBodyProto"; -option java_package = "com.google.api"; -option objc_class_prefix = "GAPI"; - -// Message that represents an arbitrary HTTP body. It should only be used for -// payload formats that can't be represented as JSON, such as raw binary or -// an HTML page. -// -// -// This message can be used both in streaming and non-streaming API methods in -// the request as well as the response. -// -// It can be used as a top-level request field, which is convenient if one -// wants to extract parameters from either the URL or HTTP template into the -// request fields and also want access to the raw HTTP body. -// -// Example: -// -// message GetResourceRequest { -// // A unique request id. -// string request_id = 1; -// -// // The raw HTTP body is bound to this field. -// google.api.HttpBody http_body = 2; -// -// } -// -// service ResourceService { -// rpc GetResource(GetResourceRequest) -// returns (google.api.HttpBody); -// rpc UpdateResource(google.api.HttpBody) -// returns (google.protobuf.Empty); -// -// } -// -// Example with streaming methods: -// -// service CaldavService { -// rpc GetCalendar(stream google.api.HttpBody) -// returns (stream google.api.HttpBody); -// rpc UpdateCalendar(stream google.api.HttpBody) -// returns (stream google.api.HttpBody); -// -// } -// -// Use of this type only changes how the request and response bodies are -// handled, all other features will continue to work unchanged. -message HttpBody { - // The HTTP Content-Type header value specifying the content type of the body. - string content_type = 1; - - // The HTTP request/response body as raw binary. - bytes data = 2; - - // Application specific response metadata. Must be set in the first response - // for streaming APIs. - repeated google.protobuf.Any extensions = 3; -} diff --git a/runtime/api/runtime.swagger.json b/runtime/api/runtime.swagger.json deleted file mode 100644 index 8894b0a0c18..00000000000 --- a/runtime/api/runtime.swagger.json +++ /dev/null @@ -1,3507 +0,0 @@ -{ - "swagger": "2.0", - "info": { - "title": "runtime.proto", - "version": "version not set" - }, - "tags": [ - { - "name": "RuntimeService" - } - ], - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], - "paths": { - "/v1/connectors/meta": { - "get": { - "summary": "ListConnectors returns a description of all the connectors implemented in the runtime,\nincluding their schema and validation rules", - "operationId": "RuntimeService_ListConnectors", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1ListConnectorsResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/delete-and-migrate": { - "post": { - "summary": "DeleteFileAndMigrate combines RenameFile and Migrate in a single endpoint to reduce latency.", - "operationId": "RuntimeService_DeleteFileAndMigrate", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1DeleteFileAndMigrateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1DeleteFileAndMigrateRequest" - } - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances": { - "get": { - "summary": "ListInstances lists all the instances currently managed by the runtime", - "operationId": "RuntimeService_ListInstances", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1ListInstancesResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "pageSize", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - }, - { - "name": "pageToken", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "RuntimeService" - ] - }, - "post": { - "summary": "CreateInstance creates a new instance", - "operationId": "RuntimeService_CreateInstance", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1CreateInstanceResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1CreateInstanceRequest" - } - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}": { - "get": { - "summary": "GetInstance returns information about a specific instance", - "operationId": "RuntimeService_GetInstance", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetInstanceResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "RuntimeService" - ] - }, - "delete": { - "summary": "DeleteInstance deletes an instance", - "operationId": "RuntimeService_DeleteInstance", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1DeleteInstanceResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/cardinality-of-column/{tableName}/{columnName}": { - "get": { - "summary": "Get cardinality for a column", - "operationId": "RuntimeService_GetCardinalityOfColumn", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetCardinalityOfColumnResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "tableName", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "columnName", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/catalog": { - "get": { - "summary": "ListCatalogObjects lists all the objects (like tables, sources or metrics views) registered in an instance's catalog", - "operationId": "RuntimeService_ListCatalogObjects", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1ListCatalogObjectsResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "type", - "in": "query", - "required": false, - "type": "string", - "enum": [ - "TYPE_UNSPECIFIED", - "TYPE_TABLE", - "TYPE_SOURCE", - "TYPE_MODEL", - "TYPE_METRICS_VIEW" - ], - "default": "TYPE_UNSPECIFIED" - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/catalog/{name}": { - "get": { - "summary": "GetCatalogObject returns information about a specific object in the catalog", - "operationId": "RuntimeService_GetCatalogObject", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetCatalogObjectResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "name", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/catalog/{name}/refresh": { - "post": { - "summary": "TriggerRefresh triggers a refresh of a refreshable catalog object.\nIt currently only supports sources (which will be re-ingested), but will also support materialized models in the future.\nIt does not respond until the refresh has completed (will move to async jobs when the task scheduler is in place).", - "operationId": "RuntimeService_TriggerRefresh", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1TriggerRefreshResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "name", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/descriptive-statistics/{tableName}/{columnName}": { - "get": { - "summary": "Get basic stats for a numeric column like min, max, mean, stddev, etc", - "operationId": "RuntimeService_GetDescriptiveStatistics", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetDescriptiveStatisticsResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "tableName", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "columnName", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/estimate-rollup-interval/{tableName}": { - "post": { - "summary": "EstimateRollupInterval (TODO: add description)", - "operationId": "RuntimeService_EstimateRollupInterval", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1EstimateRollupIntervalResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "tableName", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "columnName": { - "type": "string" - } - } - } - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/estimate-smallest-time-grain/{tableName}/{columnName}": { - "get": { - "summary": "Estimates the smallest time grain present in the column", - "operationId": "RuntimeService_EstimateSmallestTimeGrain", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1EstimateSmallestTimeGrainResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "tableName", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "columnName", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/generate-timeseries": { - "post": { - "summary": "Generate time series", - "operationId": "RuntimeService_GenerateTimeSeries", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GenerateTimeSeriesResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "tableName": { - "type": "string" - }, - "measures": { - "$ref": "#/definitions/GenerateTimeSeriesRequestBasicMeasures" - }, - "timestampColumnName": { - "type": "string" - }, - "timeRange": { - "$ref": "#/definitions/v1TimeSeriesTimeRange" - }, - "filters": { - "$ref": "#/definitions/v1MetricsViewRequestFilter" - }, - "pixels": { - "type": "string", - "format": "int64" - }, - "sampleSize": { - "type": "integer", - "format": "int32" - } - } - } - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/metrics-views/{metricsViewName}/meta": { - "post": { - "summary": "MetricsViewMeta returns metadata about a metrics view.\nIt's comparable to calling GetCatalogObject and will be deprecated in the future.", - "operationId": "RuntimeService_MetricsViewMeta", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1MetricsViewMetaResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "metricsViewName", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/metrics-views/{metricsViewName}/timeseries": { - "post": { - "summary": "MetricsViewTimeSeries returns time series for the measures in the metrics view.\nIt's a convenience API for querying a metrics view.", - "operationId": "RuntimeService_MetricsViewTimeSeries", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1MetricsViewTimeSeriesResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "metricsViewName", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "measureNames": { - "type": "array", - "items": { - "type": "string" - } - }, - "timeStart": { - "type": "string", - "format": "date-time" - }, - "timeEnd": { - "type": "string", - "format": "date-time" - }, - "timeGranularity": { - "type": "string" - }, - "filter": { - "$ref": "#/definitions/v1MetricsViewFilter" - } - }, - "title": "Request message for RuntimeService.MetricsViewTimeSeries" - } - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/metrics-views/{metricsViewName}/toplist/{dimensionName}": { - "post": { - "summary": "MetricsViewToplist returns the top dimension values of a metrics view sorted by one or more measures.\nIt's a convenience API for querying a metrics view.", - "operationId": "RuntimeService_MetricsViewToplist", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1MetricsViewToplistResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "metricsViewName", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "dimensionName", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "measureNames": { - "type": "array", - "items": { - "type": "string" - } - }, - "timeStart": { - "type": "string", - "format": "date-time" - }, - "timeEnd": { - "type": "string", - "format": "date-time" - }, - "limit": { - "type": "string", - "format": "int64" - }, - "offset": { - "type": "string", - "format": "int64" - }, - "sort": { - "type": "array", - "items": { - "$ref": "#/definitions/v1MetricsViewSort" - } - }, - "filter": { - "$ref": "#/definitions/v1MetricsViewFilter" - } - }, - "title": "Request message for RuntimeService.MetricsViewToplist" - } - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/metrics-views/{metricsViewName}/totals": { - "post": { - "summary": "MetricsViewTotals returns totals over a time period for the measures in a metrics view.\nIt's a convenience API for querying a metrics view.", - "operationId": "RuntimeService_MetricsViewTotals", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1MetricsViewTotalsResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "metricsViewName", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "measureNames": { - "type": "array", - "items": { - "type": "string" - } - }, - "timeStart": { - "type": "string", - "format": "date-time" - }, - "timeEnd": { - "type": "string", - "format": "date-time" - }, - "filter": { - "$ref": "#/definitions/v1MetricsViewFilter" - } - }, - "title": "Request message for RuntimeService.MetricsViewTotals" - } - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/migrate": { - "post": { - "summary": "Migrate applies a full set of artifacts from a repo to the catalog and infra.\nIt attempts to infer a minimal number of migrations to apply to reconcile the current state with\nthe desired state expressed in the artifacts. Any existing objects not described in the submitted\nartifacts will be deleted.", - "operationId": "RuntimeService_Migrate", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1MigrateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "description": "Instance to migrate", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "repoId": { - "type": "string", - "title": "Contents of files containing one or more SQL DDL statements" - }, - "changedPaths": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Changed paths provides a way to \"hint\" what files have changed in the repo, enabling\nmigrations to execute faster by not scanning all code artifacts for changes." - }, - "dry": { - "type": "boolean", - "title": "If true, will validate the file artifacts, but not actually execute any migrations" - }, - "strict": { - "type": "boolean", - "title": "If true, will not execute any migrations if any artifact fails to validate.\nOtherwise, it will execute a best-effort migration (including dropping objects with artifacts\nthat fail to validate.)" - } - }, - "title": "Request message for RuntimeService.Migrate" - } - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/migrate/single": { - "post": { - "summary": "DEPRECATED: MigrateSingle applies a single `CREATE` statement.\nIt bypasses the reconciling migrations described in Migrate.\nWe aim to deprecate this function once reconciling migrations are mature and adopted in the modeller.", - "operationId": "RuntimeService_MigrateSingle", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1MigrateSingleResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "description": "Instance to migrate", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "sql": { - "type": "string", - "title": "A CREATE statement" - }, - "dryRun": { - "type": "boolean", - "title": "If true, will validate the SQL, but not actually execute the migrations" - }, - "createOrReplace": { - "type": "boolean", - "title": "If true, will replace existing definitions with the same name" - }, - "renameFrom": { - "type": "string", - "description": "If provided, will attempt to rename an existing object and only recompute if necessary.\nNOTE: very questionable semantics here." - } - }, - "title": "Request message for RuntimeService.MigrateSingle" - } - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/migrate/single/delete": { - "post": { - "summary": "DEPRECATED: MigrateDelete deletes a single object.\nIt bypasses the reconciling migrations described in Migrate.\nWe aim to deprecate this function once reconciling migrations are mature and adopted in the modeller.", - "operationId": "RuntimeService_MigrateDelete", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1MigrateDeleteResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "description": "Instance to migrate", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name of object to drop" - } - }, - "title": "Request message for RuntimeService.MigrateDelete" - } - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/null-count/{tableName}/{columnName}": { - "get": { - "summary": "Get the number of nulls in a column", - "operationId": "RuntimeService_GetNullCount", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetNullCountResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "tableName", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "columnName", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/numeric-histogram/{tableName}/{columnName}": { - "get": { - "summary": "Get the histogram for values in a column", - "operationId": "RuntimeService_GetNumericHistogram", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetNumericHistogramResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "tableName", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "columnName", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/queries/cardinality/tables/{tableName}": { - "get": { - "summary": "TableCardinality (TODO: add description)", - "operationId": "RuntimeService_GetTableCardinality", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetTableCardinalityResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "tableName", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/query": { - "post": { - "summary": "Query runs a SQL query against the instance's OLAP datastore.", - "operationId": "RuntimeService_Query", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1QueryResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "description": "Instance to query", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "sql": { - "type": "string", - "title": "SELECT statement" - }, - "args": { - "type": "array", - "items": {}, - "title": "Args to interpolate into the statement" - }, - "priority": { - "type": "string", - "format": "int64", - "title": "Query priority (not supported by all backends)" - }, - "dryRun": { - "type": "boolean", - "title": "If true, will only validate the query, not execute it" - } - }, - "title": "Request message for RuntimeService.Query" - } - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/query/direct": { - "post": { - "summary": "DEPRECATED: QueryDirect runs a SQL query by directly executing it against the instance's OLAP datastore.", - "operationId": "RuntimeService_QueryDirect", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1QueryDirectResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "description": "Instance to query", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "sql": { - "type": "string", - "title": "SELECT statement" - }, - "args": { - "type": "array", - "items": {}, - "title": "Args to interpolate into the statement" - }, - "priority": { - "type": "string", - "format": "int64", - "title": "Query priority (not supported by all backends)" - }, - "dryRun": { - "type": "boolean", - "title": "If true, will only validate the query, not execute it" - } - }, - "title": "Request message for RuntimeService.QueryDirect" - } - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/rug-histogram/{tableName}/{columnName}": { - "get": { - "summary": "Get outliers for a numeric column", - "operationId": "RuntimeService_GetRugHistogram", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetRugHistogramResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "tableName", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "columnName", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/sync": { - "post": { - "summary": "TriggerSync syncronizes the instance's catalog with the underlying OLAP's information schema.\nIf the instance has exposed=true, tables found in the information schema will be added to the catalog.", - "operationId": "RuntimeService_TriggerSync", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1TriggerSyncResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/tables/{tableName}/profile-columns": { - "post": { - "summary": "ProfileColumns (TODO: add description)", - "operationId": "RuntimeService_ProfileColumns", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1ProfileColumnsResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "tableName", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/tables/{tableName}/rows": { - "get": { - "summary": "TableRows (TODO: add description)", - "operationId": "RuntimeService_GetTableRows", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetTableRowsResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "tableName", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "limit", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/time-range-summary/{tableName}/{columnName}": { - "get": { - "summary": "Get the time range summaries (min, max) for a column", - "operationId": "RuntimeService_GetTimeRangeSummary", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetTimeRangeSummaryResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "tableName", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "columnName", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/instances/{instanceId}/topk/{tableName}/{columnName}": { - "post": { - "summary": "Get TopK elements from a table for a column given an agg function\nagg function and k are optional, defaults are count(*) and 50 respectively", - "operationId": "RuntimeService_GetTopK", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetTopKResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "instanceId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "tableName", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "columnName", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "agg": { - "type": "string" - }, - "k": { - "type": "integer", - "format": "int32" - } - }, - "description": "Request for RuntimeService.GetTopK. Returns the top K values for a given column using agg function for table table_name." - } - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/ping": { - "get": { - "summary": "Ping returns information about the runtime", - "operationId": "RuntimeService_Ping", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1PingResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/put-and-migrate": { - "post": { - "summary": "PutFileAndMigrate combines PutFile and Migrate in a single endpoint to reduce latency.\nIt is equivalent to calling the two RPCs sequentially.", - "operationId": "RuntimeService_PutFileAndMigrate", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1PutFileAndMigrateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1PutFileAndMigrateRequest" - } - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/rename-and-migrate": { - "post": { - "summary": "RenameFileAndMigrate combines RenameFile and Migrate in a single endpoint to reduce latency.", - "operationId": "RuntimeService_RenameFileAndMigrate", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1RenameFileAndMigrateResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1RenameFileAndMigrateRequest" - } - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/repos": { - "get": { - "summary": "ListRepos lists all the repos currently managed by the runtime", - "operationId": "RuntimeService_ListRepos", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1ListReposResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "pageSize", - "in": "query", - "required": false, - "type": "integer", - "format": "int32" - }, - { - "name": "pageToken", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "RuntimeService" - ] - }, - "post": { - "summary": "CreateRepo creates a new repo. See the Repo message for an explanation of repos.", - "operationId": "RuntimeService_CreateRepo", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1CreateRepoResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "$ref": "#/definitions/v1CreateRepoRequest" - } - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/repos/{repoId}": { - "get": { - "summary": "GetRepo returns info about a specific repo", - "operationId": "RuntimeService_GetRepo", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetRepoResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "repoId", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "RuntimeService" - ] - }, - "delete": { - "summary": "DeleteRepo deletes a repo", - "operationId": "RuntimeService_DeleteRepo", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1DeleteRepoResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "repoId", - "in": "path", - "required": true, - "type": "string" - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/repos/{repoId}/files": { - "get": { - "summary": "ListFiles lists all the files matching a glob in a repo.\nThe files are sorted by their full path.", - "operationId": "RuntimeService_ListFiles", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1ListFilesResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "repoId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "glob", - "in": "query", - "required": false, - "type": "string" - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/repos/{repoId}/files/-/{path}": { - "get": { - "summary": "GetFile returns the contents of a specific file in a repo.", - "operationId": "RuntimeService_GetFile", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1GetFileResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "repoId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "path", - "in": "path", - "required": true, - "type": "string", - "pattern": ".+" - } - ], - "tags": [ - "RuntimeService" - ] - }, - "delete": { - "summary": "DeleteFile deletes a file from a repo", - "operationId": "RuntimeService_DeleteFile", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1DeleteFileResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "repoId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "path", - "in": "path", - "required": true, - "type": "string", - "pattern": ".+" - } - ], - "tags": [ - "RuntimeService" - ] - }, - "post": { - "summary": "PutFile creates or updates a file in a repo", - "operationId": "RuntimeService_PutFile", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1PutFileResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "repoId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "path", - "in": "path", - "required": true, - "type": "string", - "pattern": ".+" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "blob": { - "type": "string" - }, - "create": { - "type": "boolean", - "title": "Create indicates whether to create the file if it doesn't already exist" - }, - "createOnly": { - "type": "boolean", - "description": "Will cause the operation to fail if the file already exists.\nIt should only be set when create = true." - } - }, - "title": "Request message for RuntimeService.PutFile" - } - } - ], - "tags": [ - "RuntimeService" - ] - } - }, - "/v1/repos/{repoId}/files/rename": { - "post": { - "summary": "RenameFile renames a file in a repo", - "operationId": "RuntimeService_RenameFile", - "responses": { - "200": { - "description": "A successful response.", - "schema": { - "$ref": "#/definitions/v1RenameFileResponse" - } - }, - "default": { - "description": "An unexpected error response.", - "schema": { - "$ref": "#/definitions/rpcStatus" - } - } - }, - "parameters": [ - { - "name": "repoId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "body", - "in": "body", - "required": true, - "schema": { - "type": "object", - "properties": { - "fromPath": { - "type": "string" - }, - "toPath": { - "type": "string" - } - }, - "title": "Request message for RuntimeService.RenameFile" - } - } - ], - "tags": [ - "RuntimeService" - ] - } - } - }, - "definitions": { - "ConnectorProperty": { - "type": "object", - "properties": { - "key": { - "type": "string", - "title": "The property key" - }, - "displayName": { - "type": "string", - "title": "Pretty name for the property" - }, - "description": { - "type": "string", - "title": "Human readable description of the field" - }, - "placeholder": { - "type": "string", - "title": "Placeholder value for use in UIs" - }, - "type": { - "$ref": "#/definitions/ConnectorPropertyType", - "title": "The type expected for this property" - }, - "nullable": { - "type": "boolean", - "title": "Nullable is true if the field is optional" - }, - "hint": { - "type": "string", - "title": "Additional textual explanation for use in UIs" - }, - "href": { - "type": "string", - "title": "Link to documentation for this property" - } - }, - "title": "Property represents one of the connector's config properties" - }, - "ConnectorPropertyType": { - "type": "string", - "enum": [ - "TYPE_UNSPECIFIED", - "TYPE_STRING", - "TYPE_NUMBER", - "TYPE_BOOLEAN", - "TYPE_INFORMATIONAL" - ], - "default": "TYPE_UNSPECIFIED", - "title": "Type represents the field type" - }, - "GenerateTimeSeriesRequestBasicMeasures": { - "type": "object", - "properties": { - "basicMeasures": { - "type": "array", - "items": { - "$ref": "#/definitions/v1BasicMeasureDefinition" - } - } - } - }, - "MetricsViewDimension": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "label": { - "type": "string" - }, - "description": { - "type": "string" - }, - "enabled": { - "type": "string" - } - }, - "title": "Dimensions are columns to filter and group by" - }, - "MetricsViewDimensionValueValues": { - "type": "object", - "properties": { - "values": { - "type": "array", - "items": {} - } - } - }, - "MetricsViewFilterCond": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "in": { - "type": "array", - "items": {} - }, - "like": { - "type": "array", - "items": {} - } - } - }, - "MetricsViewMeasure": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "label": { - "type": "string" - }, - "expression": { - "type": "string" - }, - "description": { - "type": "string" - }, - "format": { - "type": "string" - }, - "enabled": { - "type": "string" - } - }, - "title": "Measures are aggregated computed values" - }, - "MigrationErrorCharLocation": { - "type": "object", - "properties": { - "line": { - "type": "integer", - "format": "int64" - }, - "column": { - "type": "integer", - "format": "int64" - } - }, - "title": "CharLocation is a line and column in a code artifact" - }, - "ModelDialect": { - "type": "string", - "enum": [ - "DIALECT_UNSPECIFIED", - "DIALECT_DUCKDB" - ], - "default": "DIALECT_UNSPECIFIED", - "title": "Dialects supported for models" - }, - "NumericHistogramBinsBin": { - "type": "object", - "properties": { - "bucket": { - "type": "string", - "format": "int64" - }, - "low": { - "type": "number", - "format": "double" - }, - "high": { - "type": "number", - "format": "double" - }, - "count": { - "type": "string", - "format": "int64" - } - } - }, - "NumericOutliersOutlier": { - "type": "object", - "properties": { - "bucket": { - "type": "string", - "format": "int64" - }, - "low": { - "type": "number", - "format": "double" - }, - "high": { - "type": "number", - "format": "double" - }, - "present": { - "type": "boolean" - } - } - }, - "StructTypeField": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "type": { - "$ref": "#/definitions/runtimev1Type" - } - } - }, - "TimeRangeSummaryInterval": { - "type": "object", - "properties": { - "months": { - "type": "integer", - "format": "int32" - }, - "days": { - "type": "integer", - "format": "int32" - }, - "micros": { - "type": "string", - "format": "int64" - } - } - }, - "TimeSeriesResponseTimeSeriesValues": { - "type": "object", - "properties": { - "values": { - "type": "array", - "items": { - "$ref": "#/definitions/v1TimeSeriesValue" - } - } - } - }, - "TopKTopKEntry": { - "type": "object", - "properties": { - "value": { - "type": "string", - "description": "value is optional so that null values from the database can be represented." - }, - "count": { - "type": "number", - "format": "double" - } - } - }, - "protobufAny": { - "type": "object", - "properties": { - "@type": { - "type": "string" - } - }, - "additionalProperties": {} - }, - "protobufNullValue": { - "type": "string", - "enum": [ - "NULL_VALUE" - ], - "default": "NULL_VALUE", - "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\n The JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value." - }, - "rpcStatus": { - "type": "object", - "properties": { - "code": { - "type": "integer", - "format": "int32" - }, - "message": { - "type": "string" - }, - "details": { - "type": "array", - "items": { - "$ref": "#/definitions/protobufAny" - } - } - } - }, - "runtimev1Type": { - "type": "object", - "properties": { - "code": { - "$ref": "#/definitions/v1TypeCode", - "title": "Code designates the type" - }, - "nullable": { - "type": "boolean", - "title": "Nullable indicates whether null values are possible" - }, - "arrayElementType": { - "$ref": "#/definitions/runtimev1Type", - "title": "If code is CODE_ARRAY, array_element_type specifies the type of the array elements" - }, - "structType": { - "$ref": "#/definitions/v1StructType", - "title": "If code is CODE_STRUCT, struct_type specifies the type of the struct's fields" - }, - "mapType": { - "$ref": "#/definitions/v1MapType", - "title": "If code is CODE_MAP, map_type specifies the map's key and value types" - } - }, - "title": "Type represents a data type in a schema" - }, - "v1BasicMeasureDefinition": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "expression": { - "type": "string", - "title": "mandatory user defined metadata" - }, - "sqlName": { - "type": "string", - "title": "optional user defined metadata" - } - } - }, - "v1CatalogObject": { - "type": "object", - "properties": { - "type": { - "$ref": "#/definitions/v1CatalogObjectType" - }, - "table": { - "$ref": "#/definitions/v1Table" - }, - "source": { - "$ref": "#/definitions/v1Source" - }, - "model": { - "$ref": "#/definitions/v1Model" - }, - "metricsView": { - "$ref": "#/definitions/v1MetricsView" - }, - "name": { - "type": "string" - }, - "path": { - "type": "string" - }, - "createdOn": { - "type": "string", - "format": "date-time" - }, - "updatedOn": { - "type": "string", - "format": "date-time" - }, - "refreshedOn": { - "type": "string", - "format": "date-time" - } - }, - "title": "CatalogObject represents an object stored in the catalog" - }, - "v1CatalogObjectType": { - "type": "string", - "enum": [ - "TYPE_UNSPECIFIED", - "TYPE_TABLE", - "TYPE_SOURCE", - "TYPE_MODEL", - "TYPE_METRICS_VIEW" - ], - "default": "TYPE_UNSPECIFIED" - }, - "v1CategoricalSummary": { - "type": "object", - "properties": { - "topK": { - "$ref": "#/definitions/v1TopK" - }, - "cardinality": { - "type": "string", - "format": "int64" - } - }, - "description": "Response for RuntimeService.GetTopK and RuntimeService.GetCardinalityOfColumn. Message will have either topK or cardinality set." - }, - "v1Connector": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name is the name of the connector (e.g. \"CREATE SOURCE foo WITH connector = 'name'\")" - }, - "displayName": { - "type": "string", - "title": "Pretty display name for use in UIs" - }, - "description": { - "type": "string", - "title": "Human readable description of the connector" - }, - "properties": { - "type": "array", - "items": { - "$ref": "#/definitions/ConnectorProperty" - }, - "title": "Properties accepted by the connector" - } - }, - "description": "Connector represents a connector available in the runtime.\nIt should not be confused with a source." - }, - "v1CreateInstanceRequest": { - "type": "object", - "properties": { - "instanceId": { - "type": "string", - "title": "See message Instance for field descriptions" - }, - "driver": { - "type": "string" - }, - "dsn": { - "type": "string" - }, - "objectPrefix": { - "type": "string" - }, - "exposed": { - "type": "boolean" - }, - "embedCatalog": { - "type": "boolean" - } - }, - "title": "Request message for RuntimeService.CreateInstance" - }, - "v1CreateInstanceResponse": { - "type": "object", - "properties": { - "instanceId": { - "type": "string" - }, - "instance": { - "$ref": "#/definitions/v1Instance" - } - }, - "title": "Response message for RuntimeService.CreateInstance" - }, - "v1CreateRepoRequest": { - "type": "object", - "properties": { - "repoId": { - "type": "string" - }, - "driver": { - "type": "string" - }, - "dsn": { - "type": "string" - } - }, - "title": "Request message for RuntimeService.CreateRepo" - }, - "v1CreateRepoResponse": { - "type": "object", - "properties": { - "repo": { - "$ref": "#/definitions/v1Repo" - } - }, - "title": "Response message for RuntimeService.CreateRepo" - }, - "v1DeleteFileAndMigrateRequest": { - "type": "object", - "properties": { - "repoId": { - "type": "string", - "title": "Repo to store the file in" - }, - "instanceId": { - "type": "string", - "title": "Instance to apply the migrations to" - }, - "path": { - "type": "string", - "title": "Path to store the file at" - }, - "dry": { - "type": "boolean", - "description": "If true, will save the file and validate it and related file artifacts, but not actually execute any migrations." - }, - "strict": { - "type": "boolean", - "title": "If true, will not execute any migrations if any artifact fails to validate.\nOtherwise, it will execute a best-effort migration (including dropping objects with artifacts\nthat fail to validate.)" - } - } - }, - "v1DeleteFileAndMigrateResponse": { - "type": "object", - "properties": { - "errors": { - "type": "array", - "items": { - "$ref": "#/definitions/v1MigrationError" - }, - "description": "Errors encountered during the migration. If strict = false, any path in\naffected_paths without an error can be assumed to have been migrated succesfully." - }, - "affectedPaths": { - "type": "array", - "items": { - "type": "string" - }, - "description": "affected_paths lists all the file paths that were considered while\nexecuting the migration. For a PutFileAndMigrate, this includes the put file\nas well as any file artifacts that rely on objects declared in it." - } - } - }, - "v1DeleteFileResponse": { - "type": "object", - "title": "Response message for RuntimeService.DeleteFile" - }, - "v1DeleteInstanceResponse": { - "type": "object", - "title": "Response message for RuntimeService.DeleteInstance" - }, - "v1DeleteRepoResponse": { - "type": "object", - "title": "Response message for RuntimeService.DeleteRepo" - }, - "v1EstimateRollupIntervalResponse": { - "type": "object", - "properties": { - "start": { - "type": "string", - "format": "date-time" - }, - "end": { - "type": "string", - "format": "date-time" - }, - "interval": { - "$ref": "#/definitions/v1TimeGrain" - } - } - }, - "v1EstimateSmallestTimeGrainResponse": { - "type": "object", - "properties": { - "timeGrain": { - "$ref": "#/definitions/v1TimeGrain" - } - }, - "title": "Response for RuntimeService.EstimateSmallestTimeGrain" - }, - "v1GenerateTimeSeriesResponse": { - "type": "object", - "properties": { - "rollup": { - "$ref": "#/definitions/v1TimeSeriesResponse" - } - } - }, - "v1GetCardinalityOfColumnResponse": { - "type": "object", - "properties": { - "categoricalSummary": { - "$ref": "#/definitions/v1CategoricalSummary" - } - } - }, - "v1GetCatalogObjectResponse": { - "type": "object", - "properties": { - "object": { - "$ref": "#/definitions/v1CatalogObject" - } - }, - "title": "Response message for RuntimeService.GetCatalogObject" - }, - "v1GetDescriptiveStatisticsResponse": { - "type": "object", - "properties": { - "numericSummary": { - "$ref": "#/definitions/v1NumericSummary" - } - } - }, - "v1GetFileResponse": { - "type": "object", - "properties": { - "blob": { - "type": "string" - }, - "updatedOn": { - "type": "string", - "format": "date-time" - } - }, - "title": "Reponse message for RuntimeService.GetFile" - }, - "v1GetInstanceResponse": { - "type": "object", - "properties": { - "instance": { - "$ref": "#/definitions/v1Instance" - } - }, - "title": "Response message for RuntimeService.GetInstance" - }, - "v1GetNullCountResponse": { - "type": "object", - "properties": { - "count": { - "type": "string", - "format": "int64" - } - }, - "title": "Response for RuntimeService.GetNullCount" - }, - "v1GetNumericHistogramResponse": { - "type": "object", - "properties": { - "numericSummary": { - "$ref": "#/definitions/v1NumericSummary" - } - } - }, - "v1GetRepoResponse": { - "type": "object", - "properties": { - "repo": { - "$ref": "#/definitions/v1Repo" - } - }, - "title": "Response message for RuntimeService.GetRepo" - }, - "v1GetRugHistogramResponse": { - "type": "object", - "properties": { - "numericSummary": { - "$ref": "#/definitions/v1NumericSummary" - } - } - }, - "v1GetTableCardinalityResponse": { - "type": "object", - "properties": { - "cardinality": { - "type": "string", - "format": "int64" - } - } - }, - "v1GetTableRowsResponse": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object" - } - } - } - }, - "v1GetTimeRangeSummaryResponse": { - "type": "object", - "properties": { - "timeRangeSummary": { - "$ref": "#/definitions/v1TimeRangeSummary" - } - } - }, - "v1GetTopKResponse": { - "type": "object", - "properties": { - "categoricalSummary": { - "$ref": "#/definitions/v1CategoricalSummary" - } - } - }, - "v1Instance": { - "type": "object", - "properties": { - "instanceId": { - "type": "string", - "title": "Identifier (UUID)" - }, - "driver": { - "type": "string", - "title": "Name of OLAP infra driver (\"druid\" or \"duckdb\")" - }, - "dsn": { - "type": "string", - "title": "DSN for connection to the OLAP infra" - }, - "objectPrefix": { - "type": "string", - "description": "Prefix to add to all table names created through Rill SQL (such as sources, models, etc.)\nUse it as an alternative to database schemas." - }, - "exposed": { - "type": "boolean", - "description": "Indicates that the underlying infra may be manipulated directly by users.\nIf true, the runtime will continuously poll the infra's information schema\nto discover tables not created through the runtime. They will be added to the\ncatalog as UnmanagedTables." - }, - "embedCatalog": { - "type": "boolean", - "description": "If true, the runtime will store the instance's catalog data (such as sources and metrics views)\nin the instance's OLAP datastore instead of in the runtime's metadata store. This is currently\nonly supported for the duckdb driver." - } - }, - "description": "Instance represents one connection to an OLAP datastore (such as DuckDB or Druid).\nMigrations and queries are issued against a specific instance. The concept of\ninstances enables multiple data projects to be served by one runtime." - }, - "v1ListCatalogObjectsResponse": { - "type": "object", - "properties": { - "objects": { - "type": "array", - "items": { - "$ref": "#/definitions/v1CatalogObject" - } - } - }, - "title": "Response message for RuntimeService.ListCatalogObjects" - }, - "v1ListConnectorsResponse": { - "type": "object", - "properties": { - "connectors": { - "type": "array", - "items": { - "$ref": "#/definitions/v1Connector" - } - } - }, - "title": "Response message for RuntimeService.ListConnectors" - }, - "v1ListFilesResponse": { - "type": "object", - "properties": { - "paths": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "title": "Response message for RuntimeService.ListFiles" - }, - "v1ListInstancesResponse": { - "type": "object", - "properties": { - "instances": { - "type": "array", - "items": { - "$ref": "#/definitions/v1Instance" - } - }, - "nextPageToken": { - "type": "string" - } - }, - "title": "Response message for RuntimeService.ListInstances" - }, - "v1ListReposResponse": { - "type": "object", - "properties": { - "repos": { - "type": "array", - "items": { - "$ref": "#/definitions/v1Repo" - } - }, - "nextPageToken": { - "type": "string" - } - }, - "title": "Response message for RuntimeService.ListRepos" - }, - "v1MapType": { - "type": "object", - "properties": { - "keyType": { - "$ref": "#/definitions/runtimev1Type" - }, - "valueType": { - "$ref": "#/definitions/runtimev1Type" - } - }, - "title": "MapType is a complex type for mapping keys to values" - }, - "v1MetricsView": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name of the metrics view" - }, - "from": { - "type": "string", - "title": "Name of the source or model that the metrics view is based on" - }, - "timeDimension": { - "type": "string", - "title": "Name of the primary time dimension, used for rendering time series" - }, - "timeGrains": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Recommended granularities for rolling up the time dimension.\nShould be a valid SQL INTERVAL value." - }, - "dimensions": { - "type": "array", - "items": { - "$ref": "#/definitions/MetricsViewDimension" - }, - "title": "Dimensions in the metrics view" - }, - "measures": { - "type": "array", - "items": { - "$ref": "#/definitions/MetricsViewMeasure" - }, - "title": "Measures in the metrics view" - } - }, - "title": "Metrics view is the internal representation of a metrics view definition" - }, - "v1MetricsViewColumn": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "nullable": { - "type": "boolean" - } - }, - "title": "MetricsViewColumn represents a column in a metrics view" - }, - "v1MetricsViewDimensionValue": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "in": { - "type": "array", - "items": {} - }, - "like": { - "$ref": "#/definitions/MetricsViewDimensionValueValues" - } - } - }, - "v1MetricsViewFilter": { - "type": "object", - "properties": { - "match": { - "type": "array", - "items": { - "type": "string" - } - }, - "include": { - "type": "array", - "items": { - "$ref": "#/definitions/MetricsViewFilterCond" - } - }, - "exclude": { - "type": "array", - "items": { - "$ref": "#/definitions/MetricsViewFilterCond" - } - } - }, - "title": "Filter clause for metrics view requests" - }, - "v1MetricsViewMetaResponse": { - "type": "object", - "properties": { - "metricsViewName": { - "type": "string" - }, - "fromObject": { - "type": "string" - }, - "dimensions": { - "type": "array", - "items": { - "$ref": "#/definitions/MetricsViewDimension" - } - }, - "measures": { - "type": "array", - "items": { - "$ref": "#/definitions/MetricsViewMeasure" - } - } - }, - "title": "Response message for RuntimeService.MetricsViewMeta" - }, - "v1MetricsViewRequestFilter": { - "type": "object", - "properties": { - "include": { - "type": "array", - "items": { - "$ref": "#/definitions/v1MetricsViewDimensionValue" - } - }, - "exclude": { - "type": "array", - "items": { - "$ref": "#/definitions/v1MetricsViewDimensionValue" - } - } - } - }, - "v1MetricsViewSort": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "ascending": { - "type": "boolean" - } - }, - "title": "Sort clause for metrics view requests" - }, - "v1MetricsViewTimeSeriesResponse": { - "type": "object", - "properties": { - "meta": { - "type": "array", - "items": { - "$ref": "#/definitions/v1MetricsViewColumn" - } - }, - "data": { - "type": "array", - "items": { - "type": "object" - } - } - }, - "title": "Response message for RuntimeService.MetricsViewTimeSeries" - }, - "v1MetricsViewToplistResponse": { - "type": "object", - "properties": { - "meta": { - "type": "array", - "items": { - "$ref": "#/definitions/v1MetricsViewColumn" - } - }, - "data": { - "type": "array", - "items": { - "type": "object" - } - } - }, - "title": "Response message for RuntimeService.MetricsViewToplist" - }, - "v1MetricsViewTotalsResponse": { - "type": "object", - "properties": { - "meta": { - "type": "array", - "items": { - "$ref": "#/definitions/v1MetricsViewColumn" - } - }, - "data": { - "type": "object" - } - }, - "title": "Response message for RuntimeService.MetricsViewTotals" - }, - "v1MigrateDeleteResponse": { - "type": "object", - "title": "Response message for RuntimeService.MigrateDelete" - }, - "v1MigrateResponse": { - "type": "object", - "properties": { - "errors": { - "type": "array", - "items": { - "$ref": "#/definitions/v1MigrationError" - }, - "description": "Errors encountered during the migration. If strict = false, any path in\naffected_paths without an error can be assumed to have been migrated succesfully." - }, - "affectedPaths": { - "type": "array", - "items": { - "type": "string" - }, - "description": "affected_paths lists all the file artifact paths that were considered while\nexecuting the migration. If changed_paths was empty, this will include all\ncode artifacts in the repo." - } - }, - "title": "Response message for RuntimeService.Migrate" - }, - "v1MigrateSingleResponse": { - "type": "object", - "title": "Response message for RuntimeService.MigrateSingle" - }, - "v1MigrationError": { - "type": "object", - "properties": { - "code": { - "$ref": "#/definitions/v1MigrationErrorCode", - "title": "Code denotes the category of error" - }, - "message": { - "type": "string", - "title": "Message is a developer-friendly error message" - }, - "filePath": { - "type": "string", - "title": "File path of the code artifact that this error relates to (if any)" - }, - "propertyPath": { - "type": "string", - "description": "Property path of the error in the code artifact (if any).\nIt's represented as a JS-style property path, e.g. \"key0.key1[index2].key3\".\nIt only applies to structured code artifacts (i.e. YAML).\nOnly applicable if file_path is set." - }, - "startLocation": { - "$ref": "#/definitions/MigrationErrorCharLocation", - "description": "Start location of the error in the code artifact (if any).\nOnly applicable if file_path is set." - }, - "endLocation": { - "$ref": "#/definitions/MigrationErrorCharLocation", - "description": "End location of the error in the code artifact (if any).\nOnly applicable if file_path and start_location is set." - } - }, - "description": "MigrationError represents an error encountered while running Migrate." - }, - "v1MigrationErrorCode": { - "type": "string", - "enum": [ - "CODE_UNSPECIFIED", - "CODE_SYNTAX", - "CODE_VALIDATION", - "CODE_DEPENDENCY", - "CODE_OLAP", - "CODE_SOURCE" - ], - "default": "CODE_UNSPECIFIED", - "description": "- CODE_UNSPECIFIED: Unspecified error\n - CODE_SYNTAX: Code artifact failed to parse\n - CODE_VALIDATION: Code artifact has internal validation errors\n - CODE_DEPENDENCY: Code artifact is valid, but has invalid dependencies\n - CODE_OLAP: Error returned from the OLAP database\n - CODE_SOURCE: Error encountered during source inspection or ingestion", - "title": "Code represents different categories of migration errors" - }, - "v1Model": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name of the model" - }, - "sql": { - "type": "string", - "title": "SQL is a SELECT statement representing the model" - }, - "dialect": { - "$ref": "#/definitions/ModelDialect", - "title": "Dialect of the SQL statement" - }, - "schema": { - "$ref": "#/definitions/v1StructType", - "title": "Detected schema of the model" - } - }, - "title": "Model is the internal representation of a model definition" - }, - "v1NumericHistogramBins": { - "type": "object", - "properties": { - "bins": { - "type": "array", - "items": { - "$ref": "#/definitions/NumericHistogramBinsBin" - } - } - }, - "title": "Response for RuntimeService.GetNumericHistogram" - }, - "v1NumericOutliers": { - "type": "object", - "properties": { - "outliers": { - "type": "array", - "items": { - "$ref": "#/definitions/NumericOutliersOutlier" - } - } - } - }, - "v1NumericStatistics": { - "type": "object", - "properties": { - "min": { - "type": "number", - "format": "double" - }, - "max": { - "type": "number", - "format": "double" - }, - "mean": { - "type": "number", - "format": "double" - }, - "q25": { - "type": "number", - "format": "double" - }, - "q50": { - "type": "number", - "format": "double" - }, - "q75": { - "type": "number", - "format": "double" - }, - "sd": { - "type": "number", - "format": "double" - } - }, - "title": "Response for RuntimeService.GetDescriptiveStatistics" - }, - "v1NumericSummary": { - "type": "object", - "properties": { - "numericHistogramBins": { - "$ref": "#/definitions/v1NumericHistogramBins" - }, - "numericStatistics": { - "$ref": "#/definitions/v1NumericStatistics" - }, - "numericOutliers": { - "$ref": "#/definitions/v1NumericOutliers" - } - }, - "description": "Response for RuntimeService.GetNumericHistogram, RuntimeService.GetDescriptiveStatistics and RuntimeService.GetCardinalityOfColumn.\nMessage will have either numericHistogramBins, numericStatistics or numericOutliers set." - }, - "v1PingResponse": { - "type": "object", - "properties": { - "version": { - "type": "string", - "title": "Runtime version" - }, - "time": { - "type": "string", - "format": "date-time", - "title": "Runtime server time" - } - }, - "title": "Response message for RuntimeService.Ping" - }, - "v1ProfileColumn": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string" - }, - "largestStringLength": { - "type": "integer", - "format": "int32" - } - } - }, - "v1ProfileColumnsResponse": { - "type": "object", - "properties": { - "profileColumns": { - "type": "array", - "items": { - "$ref": "#/definitions/v1ProfileColumn" - } - } - } - }, - "v1PutFileAndMigrateRequest": { - "type": "object", - "properties": { - "repoId": { - "type": "string", - "title": "Repo to store the file in" - }, - "instanceId": { - "type": "string", - "title": "Instance to apply the migrations to" - }, - "path": { - "type": "string", - "title": "Path to store the file at" - }, - "blob": { - "type": "string", - "title": "Contents to save to the file" - }, - "create": { - "type": "boolean", - "title": "Create indicates whether to create the file if it doesn't already exist" - }, - "createOnly": { - "type": "boolean", - "description": "create_only will cause the operation to fail if a file already exists at path.\nIt should only be set when create = true." - }, - "dry": { - "type": "boolean", - "description": "If true, will save the file and validate it and related file artifacts, but not actually execute any migrations." - }, - "strict": { - "type": "boolean", - "title": "If true, will not execute any migrations if any artifact fails to validate.\nOtherwise, it will execute a best-effort migration (including dropping objects with artifacts\nthat fail to validate.)" - } - } - }, - "v1PutFileAndMigrateResponse": { - "type": "object", - "properties": { - "errors": { - "type": "array", - "items": { - "$ref": "#/definitions/v1MigrationError" - }, - "description": "Errors encountered during the migration. If strict = false, any path in\naffected_paths without an error can be assumed to have been migrated succesfully." - }, - "affectedPaths": { - "type": "array", - "items": { - "type": "string" - }, - "description": "affected_paths lists all the file paths that were considered while\nexecuting the migration. For a PutFileAndMigrate, this includes the put file\nas well as any file artifacts that rely on objects declared in it." - } - } - }, - "v1PutFileResponse": { - "type": "object", - "properties": { - "filePath": { - "type": "string" - } - }, - "title": "Response message for RuntimeService.PutFile" - }, - "v1QueryDirectResponse": { - "type": "object", - "properties": { - "meta": { - "$ref": "#/definitions/v1StructType", - "title": "Schema of result data" - }, - "data": { - "type": "array", - "items": { - "type": "object" - }, - "title": "Result data" - } - }, - "title": "Response message for RuntimeService.QueryDirect" - }, - "v1QueryResponse": { - "type": "object", - "properties": { - "meta": { - "$ref": "#/definitions/v1StructType", - "title": "Schema of result data" - }, - "data": { - "type": "array", - "items": { - "type": "object" - }, - "title": "Result data" - } - }, - "title": "Response message for RuntimeService.Query" - }, - "v1RenameFileAndMigrateRequest": { - "type": "object", - "properties": { - "repoId": { - "type": "string", - "title": "Repo to store the file in" - }, - "instanceId": { - "type": "string", - "title": "Instance to apply the migrations to" - }, - "fromPath": { - "type": "string", - "title": "Current path of the file" - }, - "toPath": { - "type": "string", - "title": "New path of the file" - }, - "dry": { - "type": "boolean", - "description": "If true, will save the file and validate it and related file artifacts, but not actually execute any migrations." - }, - "strict": { - "type": "boolean", - "title": "If true, will not execute any migrations if any artifact fails to validate.\nOtherwise, it will execute a best-effort migration (including dropping objects with artifacts\nthat fail to validate.)" - } - } - }, - "v1RenameFileAndMigrateResponse": { - "type": "object", - "properties": { - "errors": { - "type": "array", - "items": { - "$ref": "#/definitions/v1MigrationError" - }, - "description": "Errors encountered during the migration. If strict = false, any path in\naffected_paths without an error can be assumed to have been migrated succesfully." - }, - "affectedPaths": { - "type": "array", - "items": { - "type": "string" - }, - "description": "affected_paths lists all the file paths that were considered while\nexecuting the migration. For a PutFileAndMigrate, this includes the put file\nas well as any file artifacts that rely on objects declared in it." - } - } - }, - "v1RenameFileResponse": { - "type": "object", - "title": "Response message for RuntimeService.RenameFile" - }, - "v1Repo": { - "type": "object", - "properties": { - "repoId": { - "type": "string", - "title": "UUID identifier" - }, - "driver": { - "type": "string", - "description": "Driver for persisting artifacts. Supports \"file\" and \"postgres\"." - }, - "dsn": { - "type": "string", - "description": "DSN for driver. If the driver is \"file\", this should be the path to the root directory." - } - }, - "description": "Repo represents a collection of file artifacts containing SQL statements.\nIt will usually by represented as a folder on disk, but may also be backed by a\ndatabase (for modelling in the cloud where no persistant file system is available)." - }, - "v1Source": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Name of the source" - }, - "connector": { - "type": "string", - "title": "Connector used by the source" - }, - "properties": { - "type": "object", - "title": "Connector properties assigned in the source" - }, - "schema": { - "$ref": "#/definitions/v1StructType", - "title": "Detected schema of the source" - }, - "sql": { - "type": "string", - "title": "Used for the SQL statement for sources\nTODO: Remove when frontend sources code has been refactored" - } - }, - "title": "Source is the internal representation of a source definition" - }, - "v1StructType": { - "type": "object", - "properties": { - "fields": { - "type": "array", - "items": { - "$ref": "#/definitions/StructTypeField" - } - } - }, - "title": "StructType is a type composed of ordered, named and typed sub-fields" - }, - "v1Table": { - "type": "object", - "properties": { - "name": { - "type": "string", - "title": "Table name" - }, - "schema": { - "$ref": "#/definitions/v1StructType", - "title": "Table schema" - }, - "managed": { - "type": "boolean", - "description": "Managed is true if the table was created through a runtime migration, false if it was discovered in by\nscanning the database's information schema." - } - }, - "description": "Table represents a table in the OLAP database. These include pre-existing tables discovered by periodically\nscanning the database's information schema when the instance is created with exposed=true. Pre-existing tables\nhave managed = false." - }, - "v1TimeGrain": { - "type": "string", - "enum": [ - "TIME_GRAIN_UNSPECIFIED", - "TIME_GRAIN_MILLISECOND", - "TIME_GRAIN_SECOND", - "TIME_GRAIN_MINUTE", - "TIME_GRAIN_HOUR", - "TIME_GRAIN_DAY", - "TIME_GRAIN_WEEK", - "TIME_GRAIN_MONTH", - "TIME_GRAIN_YEAR" - ], - "default": "TIME_GRAIN_UNSPECIFIED" - }, - "v1TimeRangeSummary": { - "type": "object", - "properties": { - "min": { - "type": "string", - "format": "date-time" - }, - "max": { - "type": "string", - "format": "date-time" - }, - "interval": { - "$ref": "#/definitions/TimeRangeSummaryInterval" - } - } - }, - "v1TimeSeriesResponse": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "results": { - "type": "array", - "items": { - "$ref": "#/definitions/v1TimeSeriesValue" - } - }, - "spark": { - "$ref": "#/definitions/TimeSeriesResponseTimeSeriesValues" - }, - "timeRange": { - "$ref": "#/definitions/v1TimeSeriesTimeRange" - }, - "sampleSize": { - "type": "integer", - "format": "int32" - }, - "error": { - "type": "string" - } - } - }, - "v1TimeSeriesTimeRange": { - "type": "object", - "properties": { - "start": { - "type": "string", - "format": "date-time" - }, - "end": { - "type": "string", - "format": "date-time" - }, - "interval": { - "$ref": "#/definitions/v1TimeGrain" - } - } - }, - "v1TimeSeriesValue": { - "type": "object", - "properties": { - "ts": { - "type": "string" - }, - "bin": { - "type": "number", - "format": "double" - }, - "records": { - "type": "object", - "additionalProperties": { - "type": "number", - "format": "double" - } - } - } - }, - "v1TopK": { - "type": "object", - "properties": { - "entries": { - "type": "array", - "items": { - "$ref": "#/definitions/TopKTopKEntry" - } - } - } - }, - "v1TriggerRefreshResponse": { - "type": "object", - "title": "Response message for RuntimeService.TriggerRefresh" - }, - "v1TriggerSyncResponse": { - "type": "object", - "properties": { - "objectsCount": { - "type": "integer", - "format": "int64" - }, - "objectsAddedCount": { - "type": "integer", - "format": "int64" - }, - "objectsUpdatedCount": { - "type": "integer", - "format": "int64" - }, - "objectsRemovedCount": { - "type": "integer", - "format": "int64" - } - }, - "title": "Response message for RuntimeService.TriggerSync" - }, - "v1TypeCode": { - "type": "string", - "enum": [ - "CODE_UNSPECIFIED", - "CODE_BOOL", - "CODE_INT8", - "CODE_INT16", - "CODE_INT32", - "CODE_INT64", - "CODE_INT128", - "CODE_UINT8", - "CODE_UINT16", - "CODE_UINT32", - "CODE_UINT64", - "CODE_UINT128", - "CODE_FLOAT32", - "CODE_FLOAT64", - "CODE_TIMESTAMP", - "CODE_DATE", - "CODE_TIME", - "CODE_STRING", - "CODE_BYTES", - "CODE_ARRAY", - "CODE_STRUCT", - "CODE_MAP", - "CODE_DECIMAL", - "CODE_JSON", - "CODE_UUID" - ], - "default": "CODE_UNSPECIFIED", - "title": "Code enumerates all the types that can be represented in a schema" - } - } -} diff --git a/runtime/drivers/catalog.go b/runtime/drivers/catalog.go index 21a30eabf70..705b481ea0e 100644 --- a/runtime/drivers/catalog.go +++ b/runtime/drivers/catalog.go @@ -4,7 +4,7 @@ import ( "context" "time" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" ) // CatalogStore is implemented by drivers capable of storing catalog info for a specific instance @@ -22,7 +22,7 @@ type CatalogObject struct { Name string Type CatalogObjectType SQL string - Schema *api.StructType + Schema *runtimev1.StructType Managed bool // artifact fields diff --git a/runtime/drivers/catalog_test.go b/runtime/drivers/catalog_test.go index a0a45c860d4..ac186b3a6d2 100644 --- a/runtime/drivers/catalog_test.go +++ b/runtime/drivers/catalog_test.go @@ -7,7 +7,7 @@ import ( "time" "github.com/google/uuid" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" "github.com/stretchr/testify/require" "google.golang.org/protobuf/proto" @@ -24,7 +24,7 @@ func testCatalog(t *testing.T, catalog drivers.CatalogStore) { Name: "bar", Type: drivers.CatalogObjectTypeSource, SQL: "CREATE SOURCE foo WITH connector = 'file', path = '/path/to/file.csv'", - Schema: &api.StructType{Fields: []*api.StructType_Field{{Name: "a", Type: &api.Type{Code: api.Type_CODE_INT64}}}}, + Schema: &runtimev1.StructType{Fields: []*runtimev1.StructType_Field{{Name: "a", Type: &runtimev1.Type{Code: runtimev1.Type_CODE_INT64}}}}, Managed: true, } @@ -32,7 +32,7 @@ func testCatalog(t *testing.T, catalog drivers.CatalogStore) { Name: "baz", Type: drivers.CatalogObjectTypeSource, SQL: "CREATE SOURCE foo WITH connector = 'file', path = '/path/to/file.csv'", - Schema: &api.StructType{Fields: []*api.StructType_Field{{Name: "a", Type: &api.Type{Code: api.Type_CODE_INT64}}}}, + Schema: &runtimev1.StructType{Fields: []*runtimev1.StructType_Field{{Name: "a", Type: &runtimev1.Type{Code: runtimev1.Type_CODE_INT64}}}}, Managed: true, } @@ -40,7 +40,7 @@ func testCatalog(t *testing.T, catalog drivers.CatalogStore) { Name: "foo", Type: drivers.CatalogObjectTypeTable, SQL: "", - Schema: &api.StructType{Fields: []*api.StructType_Field{{Name: "a", Type: &api.Type{Code: api.Type_CODE_INT64}}}}, + Schema: &runtimev1.StructType{Fields: []*runtimev1.StructType_Field{{Name: "a", Type: &runtimev1.Type{Code: runtimev1.Type_CODE_INT64}}}}, Managed: false, } diff --git a/runtime/drivers/druid/druid_test.go b/runtime/drivers/druid/druid_test.go index 0628ef7b675..445d700fd6e 100644 --- a/runtime/drivers/druid/druid_test.go +++ b/runtime/drivers/druid/druid_test.go @@ -8,12 +8,11 @@ import ( "testing" "time" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" + "github.com/rilldata/rill/runtime/drivers" "github.com/stretchr/testify/require" "github.com/testcontainers/testcontainers-go" "github.com/testcontainers/testcontainers-go/wait" - - "github.com/rilldata/rill/runtime/api" - "github.com/rilldata/rill/runtime/drivers" ) const testTable = "test_data" @@ -165,19 +164,19 @@ func testSchemaAll(t *testing.T, olap drivers.OLAPStore) { require.Equal(t, testTable, tables[0].Name) require.Equal(t, "__time", tables[0].Schema.Fields[0].Name) - require.Equal(t, api.Type_CODE_TIMESTAMP, tables[0].Schema.Fields[0].Type.Code) + require.Equal(t, runtimev1.Type_CODE_TIMESTAMP, tables[0].Schema.Fields[0].Type.Code) require.Equal(t, false, tables[0].Schema.Fields[0].Type.Nullable) require.Equal(t, "bid_price", tables[0].Schema.Fields[1].Name) - require.Equal(t, api.Type_CODE_FLOAT64, tables[0].Schema.Fields[1].Type.Code) + require.Equal(t, runtimev1.Type_CODE_FLOAT64, tables[0].Schema.Fields[1].Type.Code) require.Equal(t, false, tables[0].Schema.Fields[1].Type.Nullable) require.Equal(t, "domain", tables[0].Schema.Fields[2].Name) - require.Equal(t, api.Type_CODE_STRING, tables[0].Schema.Fields[2].Type.Code) + require.Equal(t, runtimev1.Type_CODE_STRING, tables[0].Schema.Fields[2].Type.Code) require.Equal(t, true, tables[0].Schema.Fields[2].Type.Nullable) require.Equal(t, "id", tables[0].Schema.Fields[3].Name) - require.Equal(t, api.Type_CODE_INT64, tables[0].Schema.Fields[3].Type.Code) + require.Equal(t, runtimev1.Type_CODE_INT64, tables[0].Schema.Fields[3].Type.Code) require.Equal(t, false, tables[0].Schema.Fields[3].Type.Nullable) require.Equal(t, "publisher", tables[0].Schema.Fields[4].Name) - require.Equal(t, api.Type_CODE_STRING, tables[0].Schema.Fields[4].Type.Code) + require.Equal(t, runtimev1.Type_CODE_STRING, tables[0].Schema.Fields[4].Type.Code) require.Equal(t, true, tables[0].Schema.Fields[4].Type.Nullable) } diff --git a/runtime/drivers/druid/olap.go b/runtime/drivers/druid/olap.go index 2989617b3f1..2763b34bc8a 100644 --- a/runtime/drivers/druid/olap.go +++ b/runtime/drivers/druid/olap.go @@ -4,7 +4,7 @@ import ( "context" "github.com/jmoiron/sqlx" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/connectors" "github.com/rilldata/rill/runtime/drivers" ) @@ -37,7 +37,7 @@ func (c *connection) Execute(ctx context.Context, stmt *drivers.Statement) (*dri return &drivers.Result{Rows: rows, Schema: schema}, nil } -func rowsToSchema(r *sqlx.Rows) (*api.StructType, error) { +func rowsToSchema(r *sqlx.Rows) (*runtimev1.StructType, error) { if r == nil { return nil, nil } @@ -47,7 +47,7 @@ func rowsToSchema(r *sqlx.Rows) (*api.StructType, error) { return nil, err } - fields := make([]*api.StructType_Field, len(cts)) + fields := make([]*runtimev1.StructType_Field, len(cts)) for i, ct := range cts { nullable, ok := ct.Nullable() if !ok { @@ -59,13 +59,13 @@ func rowsToSchema(r *sqlx.Rows) (*api.StructType, error) { return nil, err } - fields[i] = &api.StructType_Field{ + fields[i] = &runtimev1.StructType_Field{ Name: ct.Name(), Type: t, } } - return &api.StructType{Fields: fields}, nil + return &runtimev1.StructType{Fields: fields}, nil } type informationSchema struct { @@ -170,7 +170,7 @@ func (i informationSchema) scanTables(rows *sqlx.Rows) ([]*drivers.Table, error) Database: database, DatabaseSchema: schema, Name: name, - Schema: &api.StructType{}, + Schema: &runtimev1.StructType{}, } res = append(res, t) } @@ -182,7 +182,7 @@ func (i informationSchema) scanTables(rows *sqlx.Rows) ([]*drivers.Table, error) } // append column - t.Schema.Fields = append(t.Schema.Fields, &api.StructType_Field{ + t.Schema.Fields = append(t.Schema.Fields, &runtimev1.StructType_Field{ Name: columnName, Type: colType, }) @@ -195,37 +195,37 @@ func (i informationSchema) scanTables(rows *sqlx.Rows) ([]*drivers.Table, error) return res, nil } -func databaseTypeToPB(dbt string, nullable bool) (*api.Type, error) { - t := &api.Type{Nullable: nullable} +func databaseTypeToPB(dbt string, nullable bool) (*runtimev1.Type, error) { + t := &runtimev1.Type{Nullable: nullable} switch dbt { case "BOOLEAN": - t.Code = api.Type_CODE_BOOL + t.Code = runtimev1.Type_CODE_BOOL case "TINYINT": - t.Code = api.Type_CODE_INT8 + t.Code = runtimev1.Type_CODE_INT8 case "SMALLINT": - t.Code = api.Type_CODE_INT16 + t.Code = runtimev1.Type_CODE_INT16 case "INTEGER": - t.Code = api.Type_CODE_INT32 + t.Code = runtimev1.Type_CODE_INT32 case "BIGINT": - t.Code = api.Type_CODE_INT64 + t.Code = runtimev1.Type_CODE_INT64 case "FLOAT": - t.Code = api.Type_CODE_FLOAT32 + t.Code = runtimev1.Type_CODE_FLOAT32 case "DOUBLE": - t.Code = api.Type_CODE_FLOAT64 + t.Code = runtimev1.Type_CODE_FLOAT64 case "REAL": - t.Code = api.Type_CODE_FLOAT64 + t.Code = runtimev1.Type_CODE_FLOAT64 case "DECIMAL": - t.Code = api.Type_CODE_FLOAT64 + t.Code = runtimev1.Type_CODE_FLOAT64 case "CHAR": - t.Code = api.Type_CODE_STRING + t.Code = runtimev1.Type_CODE_STRING case "VARCHAR": - t.Code = api.Type_CODE_STRING + t.Code = runtimev1.Type_CODE_STRING case "TIMESTAMP": - t.Code = api.Type_CODE_TIMESTAMP + t.Code = runtimev1.Type_CODE_TIMESTAMP case "DATE": - t.Code = api.Type_CODE_TIMESTAMP + t.Code = runtimev1.Type_CODE_TIMESTAMP case "OTHER": - t.Code = api.Type_CODE_JSON + t.Code = runtimev1.Type_CODE_JSON } return t, nil diff --git a/runtime/drivers/duckdb/catalog.go b/runtime/drivers/duckdb/catalog.go index 9333c6edd2f..10e9e29d758 100644 --- a/runtime/drivers/duckdb/catalog.go +++ b/runtime/drivers/duckdb/catalog.go @@ -6,7 +6,7 @@ import ( "strings" "time" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" "google.golang.org/protobuf/proto" ) @@ -50,7 +50,7 @@ func (c *connection) findObjects(ctx context.Context, whereClause string, args . // Parse schema protobuf if schemaBlob != nil { - obj.Schema = &api.StructType{} + obj.Schema = &runtimev1.StructType{} err = proto.Unmarshal(schemaBlob, obj.Schema) if err != nil { panic(err) diff --git a/runtime/drivers/duckdb/information_schema.go b/runtime/drivers/duckdb/information_schema.go index 931b27355bd..326ccb61693 100644 --- a/runtime/drivers/duckdb/information_schema.go +++ b/runtime/drivers/duckdb/information_schema.go @@ -6,7 +6,7 @@ import ( "strings" "github.com/jmoiron/sqlx" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" ) @@ -105,7 +105,7 @@ func (i informationSchema) scanTables(rows *sqlx.Rows) ([]*drivers.Table, error) Database: database, DatabaseSchema: schema, Name: name, - Schema: &api.StructType{}, + Schema: &runtimev1.StructType{}, } // should NEVER happen, but just to be safe @@ -121,7 +121,7 @@ func (i informationSchema) scanTables(rows *sqlx.Rows) ([]*drivers.Table, error) return nil, err } - t.Schema.Fields = append(t.Schema.Fields, &api.StructType_Field{ + t.Schema.Fields = append(t.Schema.Fields, &runtimev1.StructType_Field{ Name: colName.(string), Type: colType, }) @@ -137,66 +137,66 @@ func (i informationSchema) scanTables(rows *sqlx.Rows) ([]*drivers.Table, error) return res, nil } -func databaseTypeToPB(dbt string, nullable bool) (*api.Type, error) { - t := &api.Type{Nullable: nullable} +func databaseTypeToPB(dbt string, nullable bool) (*runtimev1.Type, error) { + t := &runtimev1.Type{Nullable: nullable} match := true switch dbt { case "INVALID": return nil, fmt.Errorf("encountered invalid duckdb type") case "BOOLEAN": - t.Code = api.Type_CODE_BOOL + t.Code = runtimev1.Type_CODE_BOOL case "TINYINT": - t.Code = api.Type_CODE_INT8 + t.Code = runtimev1.Type_CODE_INT8 case "SMALLINT": - t.Code = api.Type_CODE_INT16 + t.Code = runtimev1.Type_CODE_INT16 case "INTEGER": - t.Code = api.Type_CODE_INT32 + t.Code = runtimev1.Type_CODE_INT32 case "BIGINT": - t.Code = api.Type_CODE_INT64 + t.Code = runtimev1.Type_CODE_INT64 case "UTINYINT": - t.Code = api.Type_CODE_UINT8 + t.Code = runtimev1.Type_CODE_UINT8 case "USMALLINT": - t.Code = api.Type_CODE_UINT16 + t.Code = runtimev1.Type_CODE_UINT16 case "UINTEGER": - t.Code = api.Type_CODE_UINT32 + t.Code = runtimev1.Type_CODE_UINT32 case "UBIGINT": - t.Code = api.Type_CODE_UINT64 + t.Code = runtimev1.Type_CODE_UINT64 case "FLOAT": - t.Code = api.Type_CODE_FLOAT32 + t.Code = runtimev1.Type_CODE_FLOAT32 case "DOUBLE": - t.Code = api.Type_CODE_FLOAT64 + t.Code = runtimev1.Type_CODE_FLOAT64 case "TIMESTAMP": - t.Code = api.Type_CODE_TIMESTAMP + t.Code = runtimev1.Type_CODE_TIMESTAMP case "DATE": - t.Code = api.Type_CODE_DATE + t.Code = runtimev1.Type_CODE_DATE case "TIME": - t.Code = api.Type_CODE_TIME + t.Code = runtimev1.Type_CODE_TIME case "INTERVAL": - t.Code = api.Type_CODE_UNSPECIFIED // TODO + t.Code = runtimev1.Type_CODE_UNSPECIFIED // TODO case "HUGEINT": - t.Code = api.Type_CODE_INT128 + t.Code = runtimev1.Type_CODE_INT128 case "VARCHAR": - t.Code = api.Type_CODE_STRING + t.Code = runtimev1.Type_CODE_STRING case "BLOB": - t.Code = api.Type_CODE_BYTES + t.Code = runtimev1.Type_CODE_BYTES case "TIMESTAMP_S": - t.Code = api.Type_CODE_TIMESTAMP + t.Code = runtimev1.Type_CODE_TIMESTAMP case "TIMESTAMP_MS": - t.Code = api.Type_CODE_TIMESTAMP + t.Code = runtimev1.Type_CODE_TIMESTAMP case "TIMESTAMP_NS": - t.Code = api.Type_CODE_TIMESTAMP + t.Code = runtimev1.Type_CODE_TIMESTAMP case "ENUM": - t.Code = api.Type_CODE_UNSPECIFIED // TODO + t.Code = runtimev1.Type_CODE_UNSPECIFIED // TODO case "UUID": - t.Code = api.Type_CODE_UUID + t.Code = runtimev1.Type_CODE_UUID case "JSON": - t.Code = api.Type_CODE_JSON + t.Code = runtimev1.Type_CODE_JSON case "CHAR": - t.Code = api.Type_CODE_STRING + t.Code = runtimev1.Type_CODE_STRING case "TIMESTAMP WITH TIME ZONE": - t.Code = api.Type_CODE_TIMESTAMP + t.Code = runtimev1.Type_CODE_TIMESTAMP case "TIME WITH TIME ZONE": - t.Code = api.Type_CODE_TIME + t.Code = runtimev1.Type_CODE_TIME default: match = false } @@ -214,7 +214,7 @@ func databaseTypeToPB(dbt string, nullable bool) (*api.Type, error) { return nil, err } - t.Code = api.Type_CODE_ARRAY + t.Code = runtimev1.Type_CODE_ARRAY t.ArrayElementType = at return t, nil } @@ -228,11 +228,11 @@ func databaseTypeToPB(dbt string, nullable bool) (*api.Type, error) { switch base { // Example: DECIMAL(10,20) case "DECIMAL": - t.Code = api.Type_CODE_DECIMAL + t.Code = runtimev1.Type_CODE_DECIMAL // Example: STRUCT(a INT, b INT) case "STRUCT": - t.Code = api.Type_CODE_STRUCT - t.StructType = &api.StructType{} + t.Code = runtimev1.Type_CODE_STRUCT + t.StructType = &runtimev1.StructType{} fieldStrs := splitCommasUnlessNestedInParens(args) for _, fieldStr := range fieldStrs { @@ -249,7 +249,7 @@ func databaseTypeToPB(dbt string, nullable bool) (*api.Type, error) { } // Add to fields - t.StructType.Fields = append(t.StructType.Fields, &api.StructType_Field{ + t.StructType.Fields = append(t.StructType.Fields, &runtimev1.StructType_Field{ Name: fieldName, Type: fieldType, }) @@ -271,8 +271,8 @@ func databaseTypeToPB(dbt string, nullable bool) (*api.Type, error) { return nil, err } - t.Code = api.Type_CODE_MAP - t.MapType = &api.MapType{ + t.Code = runtimev1.Type_CODE_MAP + t.MapType = &runtimev1.MapType{ KeyType: keyType, ValueType: valType, } diff --git a/runtime/drivers/duckdb/information_schema_test.go b/runtime/drivers/duckdb/information_schema_test.go index 344f6419663..9760790d0c6 100644 --- a/runtime/drivers/duckdb/information_schema_test.go +++ b/runtime/drivers/duckdb/information_schema_test.go @@ -4,7 +4,7 @@ import ( "context" "testing" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" "github.com/stretchr/testify/require" ) @@ -29,9 +29,9 @@ func TestInformationSchemaAll(t *testing.T) { require.Equal(t, 2, len(tables[1].Schema.Fields)) require.Equal(t, "bar", tables[1].Schema.Fields[0].Name) - require.Equal(t, api.Type_CODE_STRING, tables[1].Schema.Fields[0].Type.Code) + require.Equal(t, runtimev1.Type_CODE_STRING, tables[1].Schema.Fields[0].Type.Code) require.Equal(t, "baz", tables[1].Schema.Fields[1].Name) - require.Equal(t, api.Type_CODE_INT32, tables[1].Schema.Fields[1].Type.Code) + require.Equal(t, runtimev1.Type_CODE_INT32, tables[1].Schema.Fields[1].Type.Code) } func TestInformationSchemaLookup(t *testing.T) { @@ -60,24 +60,24 @@ func TestInformationSchemaLookup(t *testing.T) { func TestDatabaseTypeToPB(t *testing.T) { tests := []struct { input string - output *api.Type + output *runtimev1.Type }{ { input: "DECIMAL(10,20)", - output: &api.Type{Code: api.Type_CODE_DECIMAL, Nullable: true}, + output: &runtimev1.Type{Code: runtimev1.Type_CODE_DECIMAL, Nullable: true}, }, { input: "STRUCT(foo HUGEINT, bar STRUCT(a INTEGER, b MAP(INTEGER, BOOLEAN)), baz VARCHAR[])", - output: &api.Type{Code: api.Type_CODE_STRUCT, Nullable: true, StructType: &api.StructType{Fields: []*api.StructType_Field{ - {Name: "foo", Type: &api.Type{Code: api.Type_CODE_INT128, Nullable: true}}, - {Name: "bar", Type: &api.Type{Code: api.Type_CODE_STRUCT, Nullable: true, StructType: &api.StructType{Fields: []*api.StructType_Field{ - {Name: "a", Type: &api.Type{Code: api.Type_CODE_INT32, Nullable: true}}, - {Name: "b", Type: &api.Type{Code: api.Type_CODE_MAP, Nullable: true, MapType: &api.MapType{ - KeyType: &api.Type{Code: api.Type_CODE_INT32, Nullable: true}, - ValueType: &api.Type{Code: api.Type_CODE_BOOL, Nullable: true}, + output: &runtimev1.Type{Code: runtimev1.Type_CODE_STRUCT, Nullable: true, StructType: &runtimev1.StructType{Fields: []*runtimev1.StructType_Field{ + {Name: "foo", Type: &runtimev1.Type{Code: runtimev1.Type_CODE_INT128, Nullable: true}}, + {Name: "bar", Type: &runtimev1.Type{Code: runtimev1.Type_CODE_STRUCT, Nullable: true, StructType: &runtimev1.StructType{Fields: []*runtimev1.StructType_Field{ + {Name: "a", Type: &runtimev1.Type{Code: runtimev1.Type_CODE_INT32, Nullable: true}}, + {Name: "b", Type: &runtimev1.Type{Code: runtimev1.Type_CODE_MAP, Nullable: true, MapType: &runtimev1.MapType{ + KeyType: &runtimev1.Type{Code: runtimev1.Type_CODE_INT32, Nullable: true}, + ValueType: &runtimev1.Type{Code: runtimev1.Type_CODE_BOOL, Nullable: true}, }}}, }}}}, - {Name: "baz", Type: &api.Type{Code: api.Type_CODE_ARRAY, Nullable: true, ArrayElementType: &api.Type{Code: api.Type_CODE_STRING, Nullable: true}}}, + {Name: "baz", Type: &runtimev1.Type{Code: runtimev1.Type_CODE_ARRAY, Nullable: true, ArrayElementType: &runtimev1.Type{Code: runtimev1.Type_CODE_STRING, Nullable: true}}}, }}}, }, } diff --git a/runtime/drivers/duckdb/olap.go b/runtime/drivers/duckdb/olap.go index c3b25a937bc..9c0a96393a8 100644 --- a/runtime/drivers/duckdb/olap.go +++ b/runtime/drivers/duckdb/olap.go @@ -4,7 +4,7 @@ import ( "context" "github.com/jmoiron/sqlx" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" "github.com/rilldata/rill/runtime/pkg/priorityworker" ) @@ -51,7 +51,7 @@ func (c *connection) executeQuery(ctx context.Context, j *job) error { return err } -func rowsToSchema(r *sqlx.Rows) (*api.StructType, error) { +func rowsToSchema(r *sqlx.Rows) (*runtimev1.StructType, error) { if r == nil { return nil, nil } @@ -61,7 +61,7 @@ func rowsToSchema(r *sqlx.Rows) (*api.StructType, error) { return nil, err } - fields := make([]*api.StructType_Field, len(cts)) + fields := make([]*runtimev1.StructType_Field, len(cts)) for i, ct := range cts { nullable, ok := ct.Nullable() if !ok { @@ -73,11 +73,11 @@ func rowsToSchema(r *sqlx.Rows) (*api.StructType, error) { return nil, err } - fields[i] = &api.StructType_Field{ + fields[i] = &runtimev1.StructType_Field{ Name: ct.Name(), Type: t, } } - return &api.StructType{Fields: fields}, nil + return &runtimev1.StructType{Fields: fields}, nil } diff --git a/runtime/drivers/olap.go b/runtime/drivers/olap.go index bb410f6b5eb..93137782cf6 100644 --- a/runtime/drivers/olap.go +++ b/runtime/drivers/olap.go @@ -5,7 +5,7 @@ import ( "errors" "github.com/jmoiron/sqlx" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/connectors" ) @@ -30,7 +30,7 @@ type Statement struct { // Result wraps the results of query type Result struct { *sqlx.Rows - Schema *api.StructType + Schema *runtimev1.StructType } // InformationSchema contains information about existing tables in an OLAP driver @@ -44,5 +44,5 @@ type Table struct { Database string DatabaseSchema string Name string - Schema *api.StructType + Schema *runtimev1.StructType } diff --git a/runtime/drivers/sqlite/catalog.go b/runtime/drivers/sqlite/catalog.go index abb9943bda9..72b2bd8d94a 100644 --- a/runtime/drivers/sqlite/catalog.go +++ b/runtime/drivers/sqlite/catalog.go @@ -5,7 +5,7 @@ import ( "fmt" "time" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" "google.golang.org/protobuf/proto" ) @@ -48,7 +48,7 @@ func (c *connection) findObjects(ctx context.Context, whereClause string, args . // Parse schema protobuf if schemaBlob != nil { - obj.Schema = &api.StructType{} + obj.Schema = &runtimev1.StructType{} err = proto.Unmarshal(schemaBlob, obj.Schema) if err != nil { panic(err) diff --git a/runtime/server/catalog.go b/runtime/server/catalog.go index ac20e6b839e..4d594d14ae6 100644 --- a/runtime/server/catalog.go +++ b/runtime/server/catalog.go @@ -5,7 +5,7 @@ import ( "fmt" "time" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/connectors" "github.com/rilldata/rill/runtime/drivers" "github.com/rilldata/rill/runtime/services/catalog/migrator/sources" @@ -15,7 +15,7 @@ import ( ) // ListCatalogObjects implements RuntimeService -func (s *Server) ListCatalogObjects(ctx context.Context, req *api.ListCatalogObjectsRequest) (*api.ListCatalogObjectsResponse, error) { +func (s *Server) ListCatalogObjects(ctx context.Context, req *runtimev1.ListCatalogObjectsRequest) (*runtimev1.ListCatalogObjectsResponse, error) { service, err := s.serviceCache.createCatalogService(ctx, s, req.InstanceId, "") // TODO: Remove repo ID if err != nil { return nil, status.Error(codes.InvalidArgument, err.Error()) @@ -26,11 +26,11 @@ func (s *Server) ListCatalogObjects(ctx context.Context, req *api.ListCatalogObj return nil, status.Error(codes.InvalidArgument, err.Error()) } - return &api.ListCatalogObjectsResponse{Objects: pbs}, nil + return &runtimev1.ListCatalogObjectsResponse{Objects: pbs}, nil } // GetCatalogObject implements RuntimeService -func (s *Server) GetCatalogObject(ctx context.Context, req *api.GetCatalogObjectRequest) (*api.GetCatalogObjectResponse, error) { +func (s *Server) GetCatalogObject(ctx context.Context, req *runtimev1.GetCatalogObjectRequest) (*runtimev1.GetCatalogObjectResponse, error) { service, err := s.serviceCache.createCatalogService(ctx, s, req.InstanceId, "") // TODO: Remove repo ID if err != nil { return nil, status.Error(codes.InvalidArgument, err.Error()) @@ -41,11 +41,11 @@ func (s *Server) GetCatalogObject(ctx context.Context, req *api.GetCatalogObject return nil, status.Error(codes.InvalidArgument, err.Error()) } - return &api.GetCatalogObjectResponse{Object: pb}, nil + return &runtimev1.GetCatalogObjectResponse{Object: pb}, nil } // TriggerRefresh implements RuntimeService -func (s *Server) TriggerRefresh(ctx context.Context, req *api.TriggerRefreshRequest) (*api.TriggerRefreshResponse, error) { +func (s *Server) TriggerRefresh(ctx context.Context, req *runtimev1.TriggerRefreshRequest) (*runtimev1.TriggerRefreshResponse, error) { registry, _ := s.metastore.RegistryStore() inst, found := registry.FindInstance(ctx, req.InstanceId) if !found { @@ -103,11 +103,11 @@ func (s *Server) TriggerRefresh(ctx context.Context, req *api.TriggerRefreshRequ return nil, status.Error(codes.Unknown, err.Error()) } - return &api.TriggerRefreshResponse{}, nil + return &runtimev1.TriggerRefreshResponse{}, nil } // TriggerSync implements RuntimeService -func (s *Server) TriggerSync(ctx context.Context, req *api.TriggerSyncRequest) (*api.TriggerSyncResponse, error) { +func (s *Server) TriggerSync(ctx context.Context, req *runtimev1.TriggerSyncRequest) (*runtimev1.TriggerSyncResponse, error) { // TODO: move to using migrate // Get instance registry, _ := s.metastore.RegistryStore() @@ -198,7 +198,7 @@ func (s *Server) TriggerSync(ctx context.Context, req *api.TriggerSyncRequest) ( } // Done - return &api.TriggerSyncResponse{ + return &runtimev1.TriggerSyncResponse{ ObjectsCount: uint32(len(tables)), ObjectsAddedCount: uint32(added), ObjectsUpdatedCount: uint32(updated), diff --git a/runtime/server/catalog_test.go b/runtime/server/catalog_test.go index f7e8f1955ca..d2f50a4a121 100644 --- a/runtime/server/catalog_test.go +++ b/runtime/server/catalog_test.go @@ -5,7 +5,7 @@ import ( "path/filepath" "testing" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" _ "github.com/rilldata/rill/runtime/drivers/duckdb" _ "github.com/rilldata/rill/runtime/drivers/file" _ "github.com/rilldata/rill/runtime/drivers/sqlite" @@ -54,7 +54,7 @@ func TestServer_InitCatalogService(t *testing.T) { } func createInstanceAndRepo(t *testing.T, server *Server, ctx context.Context, dir string) (string, string) { - instResp, err := server.CreateInstance(ctx, &api.CreateInstanceRequest{ + instResp, err := server.CreateInstance(ctx, &runtimev1.CreateInstanceRequest{ Driver: "duckdb", // use persistent file to test fresh load Dsn: filepath.Join(dir, "stage.db"), @@ -63,7 +63,7 @@ func createInstanceAndRepo(t *testing.T, server *Server, ctx context.Context, di }) require.NoError(t, err) - repoResp, err := server.CreateRepo(ctx, &api.CreateRepoRequest{ + repoResp, err := server.CreateRepo(ctx, &runtimev1.CreateRepoRequest{ Driver: "file", Dsn: dir, }) diff --git a/runtime/server/column_api.go b/runtime/server/column_api.go index 7871b8b476b..23c3e7e8255 100644 --- a/runtime/server/column_api.go +++ b/runtime/server/column_api.go @@ -7,7 +7,7 @@ import ( "time" "github.com/marcboeker/go-duckdb" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -17,7 +17,7 @@ import ( const defaultK = 50 const defaultAgg = "count(*)" -func (s *Server) GetTopK(ctx context.Context, topKRequest *api.GetTopKRequest) (*api.GetTopKResponse, error) { +func (s *Server) GetTopK(ctx context.Context, topKRequest *runtimev1.GetTopKRequest) (*runtimev1.GetTopKResponse, error) { agg := defaultAgg k := int32(defaultK) if topKRequest.Agg != nil { @@ -41,27 +41,28 @@ func (s *Server) GetTopK(ctx context.Context, topKRequest *api.GetTopKRequest) ( } defer rows.Close() - topKResponse := api.TopK{ - Entries: make([]*api.TopK_TopKEntry, 0), + topKResponse := runtimev1.TopK{ + Entries: make([]*runtimev1.TopK_TopKEntry, 0), } for rows.Next() { - var topKEntry api.TopK_TopKEntry + var topKEntry runtimev1.TopK_TopKEntry err = rows.Scan(&topKEntry.Value, &topKEntry.Count) if err != nil { return nil, status.Error(codes.Internal, err.Error()) } topKResponse.Entries = append(topKResponse.Entries, &topKEntry) } - return &api.GetTopKResponse{ - CategoricalSummary: &api.CategoricalSummary{ - Case: &api.CategoricalSummary_TopK{ + + return &runtimev1.GetTopKResponse{ + CategoricalSummary: &runtimev1.CategoricalSummary{ + Case: &runtimev1.CategoricalSummary_TopK{ TopK: &topKResponse, }, }, }, nil } -func (s *Server) GetNullCount(ctx context.Context, nullCountRequest *api.GetNullCountRequest) (*api.GetNullCountResponse, error) { +func (s *Server) GetNullCount(ctx context.Context, nullCountRequest *runtimev1.GetNullCountRequest) (*runtimev1.GetNullCountResponse, error) { nullCountSql := fmt.Sprintf("SELECT count(*) as count from %s WHERE %s IS NULL", nullCountRequest.TableName, quoteName(nullCountRequest.ColumnName), @@ -82,12 +83,12 @@ func (s *Server) GetNullCount(ctx context.Context, nullCountRequest *api.GetNull } } - return &api.GetNullCountResponse{ + return &runtimev1.GetNullCountResponse{ Count: count, }, nil } -func (s *Server) GetDescriptiveStatistics(ctx context.Context, request *api.GetDescriptiveStatisticsRequest) (*api.GetDescriptiveStatisticsResponse, error) { +func (s *Server) GetDescriptiveStatistics(ctx context.Context, request *runtimev1.GetDescriptiveStatisticsRequest) (*runtimev1.GetDescriptiveStatisticsResponse, error) { sanitizedColumnName := quoteName(request.ColumnName) descriptiveStatisticsSql := fmt.Sprintf("SELECT "+ "min(%s) as min, "+ @@ -107,19 +108,19 @@ func (s *Server) GetDescriptiveStatistics(ctx context.Context, request *api.GetD } defer rows.Close() - stats := new(api.NumericStatistics) + stats := new(runtimev1.NumericStatistics) for rows.Next() { err = rows.Scan(&stats.Min, &stats.Q25, &stats.Q50, &stats.Q75, &stats.Max, &stats.Mean, &stats.Sd) if err != nil { return nil, status.Error(codes.Internal, err.Error()) } } - resp := &api.NumericSummary{ - Case: &api.NumericSummary_NumericStatistics{ + resp := &runtimev1.NumericSummary{ + Case: &runtimev1.NumericSummary_NumericStatistics{ NumericStatistics: stats, }, } - return &api.GetDescriptiveStatisticsResponse{ + return &runtimev1.GetDescriptiveStatisticsResponse{ NumericSummary: resp, }, nil } @@ -150,7 +151,7 @@ func (s *Server) GetDescriptiveStatistics(ctx context.Context, request *api.GetD * we've thrown at it. */ -func (s *Server) EstimateSmallestTimeGrain(ctx context.Context, request *api.EstimateSmallestTimeGrainRequest) (*api.EstimateSmallestTimeGrainResponse, error) { +func (s *Server) EstimateSmallestTimeGrain(ctx context.Context, request *runtimev1.EstimateSmallestTimeGrainRequest) (*runtimev1.EstimateSmallestTimeGrainResponse, error) { sampleSize := int64(500000) rows, err := s.query(ctx, request.InstanceId, &drivers.Statement{ Query: fmt.Sprintf("SELECT count(*) as c FROM %s", request.TableName), @@ -225,45 +226,45 @@ func (s *Server) EstimateSmallestTimeGrain(ctx context.Context, request *api.Est return nil, status.Error(codes.Internal, err.Error()) } } - var timeGrain *api.EstimateSmallestTimeGrainResponse + var timeGrain *runtimev1.EstimateSmallestTimeGrainResponse switch timeGrainString { case "milliseconds": - timeGrain = &api.EstimateSmallestTimeGrainResponse{ - TimeGrain: api.TimeGrain_TIME_GRAIN_MILLISECOND, + timeGrain = &runtimev1.EstimateSmallestTimeGrainResponse{ + TimeGrain: runtimev1.TimeGrain_TIME_GRAIN_MILLISECOND, } case "seconds": - timeGrain = &api.EstimateSmallestTimeGrainResponse{ - TimeGrain: api.TimeGrain_TIME_GRAIN_SECOND, + timeGrain = &runtimev1.EstimateSmallestTimeGrainResponse{ + TimeGrain: runtimev1.TimeGrain_TIME_GRAIN_SECOND, } case "minutes": - timeGrain = &api.EstimateSmallestTimeGrainResponse{ - TimeGrain: api.TimeGrain_TIME_GRAIN_MINUTE, + timeGrain = &runtimev1.EstimateSmallestTimeGrainResponse{ + TimeGrain: runtimev1.TimeGrain_TIME_GRAIN_MINUTE, } case "hours": - timeGrain = &api.EstimateSmallestTimeGrainResponse{ - TimeGrain: api.TimeGrain_TIME_GRAIN_HOUR, + timeGrain = &runtimev1.EstimateSmallestTimeGrainResponse{ + TimeGrain: runtimev1.TimeGrain_TIME_GRAIN_HOUR, } case "days": - timeGrain = &api.EstimateSmallestTimeGrainResponse{ - TimeGrain: api.TimeGrain_TIME_GRAIN_DAY, + timeGrain = &runtimev1.EstimateSmallestTimeGrainResponse{ + TimeGrain: runtimev1.TimeGrain_TIME_GRAIN_DAY, } case "weeks": - timeGrain = &api.EstimateSmallestTimeGrainResponse{ - TimeGrain: api.TimeGrain_TIME_GRAIN_WEEK, + timeGrain = &runtimev1.EstimateSmallestTimeGrainResponse{ + TimeGrain: runtimev1.TimeGrain_TIME_GRAIN_WEEK, } case "months": - timeGrain = &api.EstimateSmallestTimeGrainResponse{ - TimeGrain: api.TimeGrain_TIME_GRAIN_MONTH, + timeGrain = &runtimev1.EstimateSmallestTimeGrainResponse{ + TimeGrain: runtimev1.TimeGrain_TIME_GRAIN_MONTH, } case "years": - timeGrain = &api.EstimateSmallestTimeGrainResponse{ - TimeGrain: api.TimeGrain_TIME_GRAIN_YEAR, + timeGrain = &runtimev1.EstimateSmallestTimeGrainResponse{ + TimeGrain: runtimev1.TimeGrain_TIME_GRAIN_YEAR, } } return timeGrain, nil } -func (s *Server) GetNumericHistogram(ctx context.Context, request *api.GetNumericHistogramRequest) (*api.GetNumericHistogramResponse, error) { +func (s *Server) GetNumericHistogram(ctx context.Context, request *runtimev1.GetNumericHistogramRequest) (*runtimev1.GetNumericHistogramResponse, error) { sanitizedColumnName := quoteName(request.ColumnName) sql := fmt.Sprintf("SELECT approx_quantile(%s, 0.75)-approx_quantile(%s, 0.25) as IQR, approx_count_distinct(%s) as count, max(%s) - min(%s) as range FROM %s", sanitizedColumnName, sanitizedColumnName, sanitizedColumnName, sanitizedColumnName, sanitizedColumnName, request.TableName) @@ -352,19 +353,19 @@ func (s *Server) GetNumericHistogram(ctx context.Context, request *api.GetNumeri return nil, status.Error(codes.Internal, err.Error()) } defer histogramRows.Close() - histogramBins := make([]*api.NumericHistogramBins_Bin, 0) + histogramBins := make([]*runtimev1.NumericHistogramBins_Bin, 0) for histogramRows.Next() { - bin := &api.NumericHistogramBins_Bin{} + bin := &runtimev1.NumericHistogramBins_Bin{} err = histogramRows.Scan(&bin.Bucket, &bin.Low, &bin.High, &bin.Count) if err != nil { return nil, status.Error(codes.Internal, err.Error()) } histogramBins = append(histogramBins, bin) } - return &api.GetNumericHistogramResponse{ - NumericSummary: &api.NumericSummary{ - Case: &api.NumericSummary_NumericHistogramBins{ - NumericHistogramBins: &api.NumericHistogramBins{ + return &runtimev1.GetNumericHistogramResponse{ + NumericSummary: &runtimev1.NumericSummary{ + Case: &runtimev1.NumericSummary_NumericHistogramBins{ + NumericHistogramBins: &runtimev1.NumericHistogramBins{ Bins: histogramBins, }, }, @@ -372,7 +373,7 @@ func (s *Server) GetNumericHistogram(ctx context.Context, request *api.GetNumeri }, nil } -func (s *Server) GetRugHistogram(ctx context.Context, request *api.GetRugHistogramRequest) (*api.GetRugHistogramResponse, error) { +func (s *Server) GetRugHistogram(ctx context.Context, request *runtimev1.GetRugHistogramRequest) (*runtimev1.GetRugHistogramResponse, error) { sanitizedColumnName := quoteName(request.ColumnName) outlierPseudoBucketSize := 500 selectColumn := fmt.Sprintf("%s::DOUBLE", sanitizedColumnName) @@ -445,9 +446,9 @@ func (s *Server) GetRugHistogram(ctx context.Context, request *api.GetRugHistogr } defer outlierResults.Close() - outlierBins := make([]*api.NumericOutliers_Outlier, 0) + outlierBins := make([]*runtimev1.NumericOutliers_Outlier, 0) for outlierResults.Next() { - outlier := &api.NumericOutliers_Outlier{} + outlier := &runtimev1.NumericOutliers_Outlier{} err = outlierResults.Scan(&outlier.Bucket, &outlier.Low, &outlier.High, &outlier.Present) if err != nil { return nil, status.Error(codes.Internal, err.Error()) @@ -455,10 +456,10 @@ func (s *Server) GetRugHistogram(ctx context.Context, request *api.GetRugHistogr outlierBins = append(outlierBins, outlier) } - return &api.GetRugHistogramResponse{ - NumericSummary: &api.NumericSummary{ - Case: &api.NumericSummary_NumericOutliers{ - NumericOutliers: &api.NumericOutliers{ + return &runtimev1.GetRugHistogramResponse{ + NumericSummary: &runtimev1.NumericSummary{ + Case: &runtimev1.NumericSummary_NumericOutliers{ + NumericOutliers: &runtimev1.NumericOutliers{ Outliers: outlierBins, }, }, @@ -466,7 +467,7 @@ func (s *Server) GetRugHistogram(ctx context.Context, request *api.GetRugHistogr }, nil } -func (s *Server) GetTimeRangeSummary(ctx context.Context, request *api.GetTimeRangeSummaryRequest) (*api.GetTimeRangeSummaryResponse, error) { +func (s *Server) GetTimeRangeSummary(ctx context.Context, request *runtimev1.GetTimeRangeSummaryRequest) (*runtimev1.GetTimeRangeSummaryResponse, error) { sanitizedColumnName := quoteName(request.ColumnName) rows, err := s.query(ctx, request.InstanceId, &drivers.Statement{ Query: fmt.Sprintf("SELECT min(%[1]s) as min, max(%[1]s) as max, max(%[1]s) - min(%[1]s) as interval FROM %[2]s", @@ -477,7 +478,7 @@ func (s *Server) GetTimeRangeSummary(ctx context.Context, request *api.GetTimeRa } defer rows.Close() if rows.Next() { - summary := &api.TimeRangeSummary{} + summary := &runtimev1.TimeRangeSummary{} rowMap := make(map[string]any) err = rows.MapScan(rowMap) if err != nil { @@ -486,19 +487,19 @@ func (s *Server) GetTimeRangeSummary(ctx context.Context, request *api.GetTimeRa summary.Min = timestamppb.New(rowMap["min"].(time.Time)) summary.Max = timestamppb.New(rowMap["max"].(time.Time)) interval := rowMap["interval"].(duckdb.Interval) - summary.Interval = new(api.TimeRangeSummary_Interval) + summary.Interval = new(runtimev1.TimeRangeSummary_Interval) summary.Interval.Days = interval.Days summary.Interval.Months = interval.Months summary.Interval.Micros = interval.Micros - return &api.GetTimeRangeSummaryResponse{ + return &runtimev1.GetTimeRangeSummaryResponse{ TimeRangeSummary: summary, }, nil } return nil, status.Error(codes.Internal, "no rows returned") } -func (s *Server) GetCardinalityOfColumn(ctx context.Context, request *api.GetCardinalityOfColumnRequest) (*api.GetCardinalityOfColumnResponse, error) { +func (s *Server) GetCardinalityOfColumn(ctx context.Context, request *runtimev1.GetCardinalityOfColumnRequest) (*runtimev1.GetCardinalityOfColumnResponse, error) { sanitizedColumnName := quoteName(request.ColumnName) rows, err := s.query(ctx, request.InstanceId, &drivers.Statement{ Query: fmt.Sprintf("SELECT approx_count_distinct(%s) as count from %s", sanitizedColumnName, request.TableName), @@ -513,9 +514,9 @@ func (s *Server) GetCardinalityOfColumn(ctx context.Context, request *api.GetCar if err != nil { return nil, status.Error(codes.Internal, err.Error()) } - return &api.GetCardinalityOfColumnResponse{ - CategoricalSummary: &api.CategoricalSummary{ - Case: &api.CategoricalSummary_Cardinality{ + return &runtimev1.GetCardinalityOfColumnResponse{ + CategoricalSummary: &runtimev1.CategoricalSummary{ + Case: &runtimev1.CategoricalSummary_Cardinality{ Cardinality: count, }, }, diff --git a/runtime/server/column_api_test.go b/runtime/server/column_api_test.go index c283fa4eefe..706635c01dd 100644 --- a/runtime/server/column_api_test.go +++ b/runtime/server/column_api_test.go @@ -3,10 +3,9 @@ package server import ( "context" "testing" - "time" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" _ "github.com/rilldata/rill/runtime/drivers/duckdb" "github.com/stretchr/testify/require" timestamppb "google.golang.org/protobuf/types/known/timestamppb" @@ -15,7 +14,7 @@ import ( func TestServer_GetTopK(t *testing.T) { server, instanceId := getTestServerWithData(t) - res, err := server.GetTopK(context.Background(), &api.GetTopKRequest{InstanceId: instanceId, TableName: "test", ColumnName: "col"}) + res, err := server.GetTopK(context.Background(), &runtimev1.GetTopKRequest{InstanceId: instanceId, TableName: "test", ColumnName: "col"}) require.NoError(t, err) require.NotEmpty(t, res) topk := res.CategoricalSummary.GetTopK() @@ -28,7 +27,7 @@ func TestServer_GetTopK(t *testing.T) { require.Equal(t, 1, int(topk.Entries[2].Count)) agg := "sum(val)" - res, err = server.GetTopK(context.Background(), &api.GetTopKRequest{InstanceId: instanceId, TableName: "test", ColumnName: "col", Agg: &agg}) + res, err = server.GetTopK(context.Background(), &runtimev1.GetTopKRequest{InstanceId: instanceId, TableName: "test", ColumnName: "col", Agg: &agg}) require.NoError(t, err) require.NotEmpty(t, res) require.Equal(t, 3, len(res.CategoricalSummary.GetTopK().Entries)) @@ -40,7 +39,7 @@ func TestServer_GetTopK(t *testing.T) { require.Equal(t, 1, int(res.CategoricalSummary.GetTopK().Entries[2].Count)) k := int32(1) - res, err = server.GetTopK(context.Background(), &api.GetTopKRequest{InstanceId: instanceId, TableName: "test", ColumnName: "col", K: &k}) + res, err = server.GetTopK(context.Background(), &runtimev1.GetTopKRequest{InstanceId: instanceId, TableName: "test", ColumnName: "col", K: &k}) require.NoError(t, err) require.NotEmpty(t, res) require.Equal(t, 1, len(res.CategoricalSummary.GetTopK().Entries)) @@ -51,12 +50,12 @@ func TestServer_GetTopK(t *testing.T) { func TestServer_GetNullCount(t *testing.T) { server, instanceId := getTestServerWithData(t) - res, err := server.GetNullCount(context.Background(), &api.GetNullCountRequest{InstanceId: instanceId, TableName: "test", ColumnName: "col"}) + res, err := server.GetNullCount(context.Background(), &runtimev1.GetNullCountRequest{InstanceId: instanceId, TableName: "test", ColumnName: "col"}) require.NoError(t, err) require.NotEmpty(t, res) require.Equal(t, int64(1), res.Count) - res, err = server.GetNullCount(context.Background(), &api.GetNullCountRequest{InstanceId: instanceId, TableName: "test", ColumnName: "times"}) + res, err = server.GetNullCount(context.Background(), &runtimev1.GetNullCountRequest{InstanceId: instanceId, TableName: "test", ColumnName: "times"}) require.NoError(t, err) require.NotNil(t, res) require.Equal(t, int64(0), res.Count) @@ -65,13 +64,13 @@ func TestServer_GetNullCount(t *testing.T) { func TestServer_GetDescriptiveStatistics(t *testing.T) { server, instanceId := getTestServerWithData(t) - _, err := server.GetDescriptiveStatistics(context.Background(), &api.GetDescriptiveStatisticsRequest{InstanceId: instanceId, TableName: "test", ColumnName: "col"}) + _, err := server.GetDescriptiveStatistics(context.Background(), &runtimev1.GetDescriptiveStatisticsRequest{InstanceId: instanceId, TableName: "test", ColumnName: "col"}) if err != nil { // "col" is a varchar column, so this should fail require.ErrorContains(t, err, "No function matches the given name and argument types 'approx_quantile(VARCHAR, DECIMAL(3,2))'") } - res, err := server.GetDescriptiveStatistics(context.Background(), &api.GetDescriptiveStatisticsRequest{InstanceId: instanceId, TableName: "test", ColumnName: "val"}) + res, err := server.GetDescriptiveStatistics(context.Background(), &runtimev1.GetDescriptiveStatisticsRequest{InstanceId: instanceId, TableName: "test", ColumnName: "val"}) require.NoError(t, err) require.NotNil(t, res) require.Equal(t, 1.0, res.NumericSummary.GetNumericStatistics().Min) @@ -86,12 +85,12 @@ func TestServer_GetDescriptiveStatistics(t *testing.T) { func TestServer_EstimateSmallestTimeGrain(t *testing.T) { server, instanceId := getTestServerWithData(t) - _, err := server.EstimateSmallestTimeGrain(context.Background(), &api.EstimateSmallestTimeGrainRequest{InstanceId: instanceId, TableName: "test", ColumnName: "val"}) + _, err := server.EstimateSmallestTimeGrain(context.Background(), &runtimev1.EstimateSmallestTimeGrainRequest{InstanceId: instanceId, TableName: "test", ColumnName: "val"}) if err != nil { // "val" is a numeric column, so this should fail require.ErrorContains(t, err, "Binder Error: No function matches the given name and argument types 'date_part(VARCHAR, INTEGER)'") } - res, err := server.EstimateSmallestTimeGrain(context.Background(), &api.EstimateSmallestTimeGrainRequest{InstanceId: instanceId, TableName: "test", ColumnName: "times"}) + res, err := server.EstimateSmallestTimeGrain(context.Background(), &runtimev1.EstimateSmallestTimeGrainRequest{InstanceId: instanceId, TableName: "test", ColumnName: "times"}) require.NoError(t, err) require.NotNil(t, res) require.Equal(t, "TIME_GRAIN_DAY", res.TimeGrain.String()) @@ -100,7 +99,7 @@ func TestServer_EstimateSmallestTimeGrain(t *testing.T) { func TestServer_GetNumericHistogram(t *testing.T) { server, instanceId := getTestServerWithData(t) - res, err := server.GetNumericHistogram(context.Background(), &api.GetNumericHistogramRequest{InstanceId: instanceId, TableName: "test", ColumnName: "val"}) + res, err := server.GetNumericHistogram(context.Background(), &runtimev1.GetNumericHistogramRequest{InstanceId: instanceId, TableName: "test", ColumnName: "val"}) require.NoError(t, err) require.NotNil(t, res) require.Equal(t, 3, len(res.NumericSummary.GetNumericHistogramBins().Bins)) @@ -113,7 +112,7 @@ func TestServer_GetNumericHistogram(t *testing.T) { func TestServer_GetCategoricalHistogram(t *testing.T) { server, instanceId := getTestServerWithData(t) - res, err := server.GetRugHistogram(context.Background(), &api.GetRugHistogramRequest{InstanceId: instanceId, TableName: "test", ColumnName: "val"}) + res, err := server.GetRugHistogram(context.Background(), &runtimev1.GetRugHistogramRequest{InstanceId: instanceId, TableName: "test", ColumnName: "val"}) require.NoError(t, err) require.NotNil(t, res) require.Equal(t, 3, len(res.NumericSummary.GetNumericOutliers().Outliers)) @@ -123,7 +122,7 @@ func TestServer_GetCategoricalHistogram(t *testing.T) { require.Equal(t, true, res.NumericSummary.GetNumericOutliers().Outliers[0].Present) // works only with numeric columns - _, err = server.GetRugHistogram(context.Background(), &api.GetRugHistogramRequest{InstanceId: instanceId, TableName: "test", ColumnName: "times"}) + _, err = server.GetRugHistogram(context.Background(), &runtimev1.GetRugHistogramRequest{InstanceId: instanceId, TableName: "test", ColumnName: "times"}) require.ErrorContains(t, err, "Conversion Error: Unimplemented type for cast (TIMESTAMP -> DOUBLE)") } @@ -131,7 +130,7 @@ func TestServer_GetTimeRangeSummary(t *testing.T) { server, instanceId := getTestServerWithData(t) // Get Time Range Summary works with timestamp columns - res, err := server.GetTimeRangeSummary(context.Background(), &api.GetTimeRangeSummaryRequest{InstanceId: instanceId, TableName: "test", ColumnName: "times"}) + res, err := server.GetTimeRangeSummary(context.Background(), &runtimev1.GetTimeRangeSummaryRequest{InstanceId: instanceId, TableName: "test", ColumnName: "times"}) require.NoError(t, err) require.NotNil(t, res) require.Equal(t, parseTime(t, "2022-11-01T00:00:00Z"), res.TimeRangeSummary.Min) @@ -151,17 +150,17 @@ func TestServer_GetCardinalityOfColumn(t *testing.T) { server, instanceId := getTestServerWithData(t) // Get Cardinality of Column works with all columns - res, err := server.GetCardinalityOfColumn(context.Background(), &api.GetCardinalityOfColumnRequest{InstanceId: instanceId, TableName: "test", ColumnName: "val"}) + res, err := server.GetCardinalityOfColumn(context.Background(), &runtimev1.GetCardinalityOfColumnRequest{InstanceId: instanceId, TableName: "test", ColumnName: "val"}) require.NoError(t, err) require.NotNil(t, res) require.Equal(t, int64(3), res.CategoricalSummary.GetCardinality()) - res, err = server.GetCardinalityOfColumn(context.Background(), &api.GetCardinalityOfColumnRequest{InstanceId: instanceId, TableName: "test", ColumnName: "times"}) + res, err = server.GetCardinalityOfColumn(context.Background(), &runtimev1.GetCardinalityOfColumnRequest{InstanceId: instanceId, TableName: "test", ColumnName: "times"}) require.NoError(t, err) require.NotNil(t, res) require.Equal(t, int64(3), res.CategoricalSummary.GetCardinality()) - res, err = server.GetCardinalityOfColumn(context.Background(), &api.GetCardinalityOfColumnRequest{InstanceId: instanceId, TableName: "test", ColumnName: "col"}) + res, err = server.GetCardinalityOfColumn(context.Background(), &runtimev1.GetCardinalityOfColumnRequest{InstanceId: instanceId, TableName: "test", ColumnName: "col"}) require.NoError(t, err) require.NotNil(t, res) require.Equal(t, int64(2), res.CategoricalSummary.GetCardinality()) diff --git a/runtime/server/connectors.go b/runtime/server/connectors.go index eb5e1bcb329..9ae8a5309e4 100644 --- a/runtime/server/connectors.go +++ b/runtime/server/connectors.go @@ -4,34 +4,34 @@ import ( "context" "fmt" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/connectors" ) // ListConnectors implements RuntimeService -func (s *Server) ListConnectors(ctx context.Context, req *api.ListConnectorsRequest) (*api.ListConnectorsResponse, error) { - var pbs []*api.Connector +func (s *Server) ListConnectors(ctx context.Context, req *runtimev1.ListConnectorsRequest) (*runtimev1.ListConnectorsResponse, error) { + var pbs []*runtimev1.Connector for name, connector := range connectors.Connectors { // Build protobufs for properties - propPBs := make([]*api.Connector_Property, len(connector.Spec().Properties)) + propPBs := make([]*runtimev1.Connector_Property, len(connector.Spec().Properties)) for j, propSchema := range connector.Spec().Properties { // Get type - var t api.Connector_Property_Type + var t runtimev1.Connector_Property_Type switch propSchema.Type { case connectors.StringPropertyType: - t = api.Connector_Property_TYPE_STRING + t = runtimev1.Connector_Property_TYPE_STRING case connectors.NumberPropertyType: - t = api.Connector_Property_TYPE_NUMBER + t = runtimev1.Connector_Property_TYPE_NUMBER case connectors.BooleanPropertyType: - t = api.Connector_Property_TYPE_BOOLEAN + t = runtimev1.Connector_Property_TYPE_BOOLEAN case connectors.InformationalPropertyType: - t = api.Connector_Property_TYPE_INFORMATIONAL + t = runtimev1.Connector_Property_TYPE_INFORMATIONAL default: panic(fmt.Errorf("property type '%v' not handled", propSchema.Type)) } // Add protobuf for property - propPBs[j] = &api.Connector_Property{ + propPBs[j] = &runtimev1.Connector_Property{ Key: propSchema.Key, DisplayName: propSchema.DisplayName, Description: propSchema.Description, @@ -44,7 +44,7 @@ func (s *Server) ListConnectors(ctx context.Context, req *api.ListConnectorsRequ } // Add connector - pbs = append(pbs, &api.Connector{ + pbs = append(pbs, &runtimev1.Connector{ Name: name, DisplayName: connector.Spec().DisplayName, Description: connector.Spec().Description, @@ -52,5 +52,5 @@ func (s *Server) ListConnectors(ctx context.Context, req *api.ListConnectorsRequ }) } - return &api.ListConnectorsResponse{Connectors: pbs}, nil + return &runtimev1.ListConnectorsResponse{Connectors: pbs}, nil } diff --git a/runtime/server/instances.go b/runtime/server/instances.go index 5eec5475089..73d4cf7b2c3 100644 --- a/runtime/server/instances.go +++ b/runtime/server/instances.go @@ -3,40 +3,40 @@ package server import ( "context" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" ) // ListInstances implements RuntimeService -func (s *Server) ListInstances(ctx context.Context, req *api.ListInstancesRequest) (*api.ListInstancesResponse, error) { +func (s *Server) ListInstances(ctx context.Context, req *runtimev1.ListInstancesRequest) (*runtimev1.ListInstancesResponse, error) { registry, _ := s.metastore.RegistryStore() instances := registry.FindInstances(ctx) - pbs := make([]*api.Instance, len(instances)) + pbs := make([]*runtimev1.Instance, len(instances)) for i, inst := range instances { pbs[i] = instanceToPB(inst) } - return &api.ListInstancesResponse{Instances: pbs}, nil + return &runtimev1.ListInstancesResponse{Instances: pbs}, nil } // GetInstance implements RuntimeService -func (s *Server) GetInstance(ctx context.Context, req *api.GetInstanceRequest) (*api.GetInstanceResponse, error) { +func (s *Server) GetInstance(ctx context.Context, req *runtimev1.GetInstanceRequest) (*runtimev1.GetInstanceResponse, error) { registry, _ := s.metastore.RegistryStore() inst, found := registry.FindInstance(ctx, req.InstanceId) if !found { return nil, status.Error(codes.NotFound, "instance not found") } - return &api.GetInstanceResponse{ + return &runtimev1.GetInstanceResponse{ Instance: instanceToPB(inst), }, nil } // CreateInstance implements RuntimeService -func (s *Server) CreateInstance(ctx context.Context, req *api.CreateInstanceRequest) (*api.CreateInstanceResponse, error) { +func (s *Server) CreateInstance(ctx context.Context, req *runtimev1.CreateInstanceRequest) (*runtimev1.CreateInstanceResponse, error) { inst := &drivers.Instance{ ID: req.InstanceId, Driver: req.Driver, @@ -75,25 +75,25 @@ func (s *Server) CreateInstance(ctx context.Context, req *api.CreateInstanceRequ return nil, status.Error(codes.InvalidArgument, err.Error()) } - return &api.CreateInstanceResponse{ + return &runtimev1.CreateInstanceResponse{ InstanceId: inst.ID, Instance: instanceToPB(inst), }, nil } // DeleteInstance implements RuntimeService -func (s *Server) DeleteInstance(ctx context.Context, req *api.DeleteInstanceRequest) (*api.DeleteInstanceResponse, error) { +func (s *Server) DeleteInstance(ctx context.Context, req *runtimev1.DeleteInstanceRequest) (*runtimev1.DeleteInstanceResponse, error) { registry, _ := s.metastore.RegistryStore() err := registry.DeleteInstance(ctx, req.InstanceId) if err != nil { return nil, status.Error(codes.InvalidArgument, err.Error()) } - return &api.DeleteInstanceResponse{}, nil + return &runtimev1.DeleteInstanceResponse{}, nil } -func instanceToPB(inst *drivers.Instance) *api.Instance { - return &api.Instance{ +func instanceToPB(inst *drivers.Instance) *runtimev1.Instance { + return &runtimev1.Instance{ InstanceId: inst.ID, Driver: inst.Driver, Dsn: inst.DSN, diff --git a/runtime/server/metrics_views.go b/runtime/server/metrics_views.go index 149bca1b37b..a038f41c7a5 100644 --- a/runtime/server/metrics_views.go +++ b/runtime/server/metrics_views.go @@ -5,7 +5,7 @@ import ( "fmt" "strings" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -15,23 +15,8 @@ import ( // NOTE: The queries in here are generally not vetted or fully implemented. Use it as guidelines for the real implementation // once the metrics view artifact representation is ready. -// MetricsViewMeta implements RuntimeService -func (s *Server) MetricsViewMeta(ctx context.Context, req *api.MetricsViewMetaRequest) (*api.MetricsViewMetaResponse, error) { - mv, err := s.lookupMetricsView(ctx, req.InstanceId, req.MetricsViewName) - if err != nil { - return nil, err - } - - return &api.MetricsViewMetaResponse{ - MetricsViewName: mv.Name, - FromObject: mv.From, - Dimensions: mv.Dimensions, - Measures: mv.Measures, - }, nil -} - // MetricsViewToplist implements RuntimeService -func (s *Server) MetricsViewToplist(ctx context.Context, req *api.MetricsViewToplistRequest) (*api.MetricsViewToplistResponse, error) { +func (s *Server) MetricsViewToplist(ctx context.Context, req *runtimev1.MetricsViewToplistRequest) (*runtimev1.MetricsViewToplistResponse, error) { // Prepare mv, err := s.lookupMetricsView(ctx, req.InstanceId, req.MetricsViewName) if err != nil { @@ -50,14 +35,14 @@ func (s *Server) MetricsViewToplist(ctx context.Context, req *api.MetricsViewTop return nil, err } - return &api.MetricsViewToplistResponse{ + return &runtimev1.MetricsViewToplistResponse{ Meta: meta, Data: data, }, nil } // MetricsViewTimeSeries implements RuntimeService -func (s *Server) MetricsViewTimeSeries(ctx context.Context, req *api.MetricsViewTimeSeriesRequest) (*api.MetricsViewTimeSeriesResponse, error) { +func (s *Server) MetricsViewTimeSeries(ctx context.Context, req *runtimev1.MetricsViewTimeSeriesRequest) (*runtimev1.MetricsViewTimeSeriesResponse, error) { mv, err := s.lookupMetricsView(ctx, req.InstanceId, req.MetricsViewName) if err != nil { return nil, err @@ -73,7 +58,7 @@ func (s *Server) MetricsViewTimeSeries(ctx context.Context, req *api.MetricsView return nil, err } - resp := &api.MetricsViewTimeSeriesResponse{ + resp := &runtimev1.MetricsViewTimeSeriesResponse{ Meta: meta, Data: data, } @@ -82,7 +67,7 @@ func (s *Server) MetricsViewTimeSeries(ctx context.Context, req *api.MetricsView } // MetricsViewTotals implements RuntimeService -func (s *Server) MetricsViewTotals(ctx context.Context, req *api.MetricsViewTotalsRequest) (*api.MetricsViewTotalsResponse, error) { +func (s *Server) MetricsViewTotals(ctx context.Context, req *runtimev1.MetricsViewTotalsRequest) (*runtimev1.MetricsViewTotalsResponse, error) { mv, err := s.lookupMetricsView(ctx, req.InstanceId, req.MetricsViewName) if err != nil { return nil, err @@ -102,7 +87,7 @@ func (s *Server) MetricsViewTotals(ctx context.Context, req *api.MetricsViewTota return nil, status.Errorf(codes.Internal, "no rows received from totals query") } - resp := &api.MetricsViewTotalsResponse{ + resp := &runtimev1.MetricsViewTotalsResponse{ Meta: meta, Data: data[0], } @@ -110,7 +95,7 @@ func (s *Server) MetricsViewTotals(ctx context.Context, req *api.MetricsViewTota return resp, nil } -func (s *Server) lookupMetricsView(ctx context.Context, instanceID string, name string) (*api.MetricsView, error) { +func (s *Server) lookupMetricsView(ctx context.Context, instanceID string, name string) (*runtimev1.MetricsView, error) { catalog, err := s.serviceCache.createCatalogService(ctx, s, instanceID, instanceID) if err != nil { return nil, status.Error(codes.InvalidArgument, err.Error()) @@ -121,14 +106,14 @@ func (s *Server) lookupMetricsView(ctx context.Context, instanceID string, name return nil, status.Error(codes.InvalidArgument, err.Error()) } - if obj.Type != api.CatalogObject_TYPE_METRICS_VIEW { + if obj.Type != runtimev1.CatalogObject_TYPE_METRICS_VIEW { return nil, status.Errorf(codes.NotFound, "object named '%s' is not a metrics view", name) } return obj.MetricsView, nil } -func (s *Server) metricsQuery(ctx context.Context, instanceId string, sql string, args []any) ([]*api.MetricsViewColumn, []*structpb.Struct, error) { +func (s *Server) metricsQuery(ctx context.Context, instanceId string, sql string, args []any) ([]*runtimev1.MetricsViewColumn, []*structpb.Struct, error) { rows, err := s.query(ctx, instanceId, &drivers.Statement{ Query: sql, Args: args, @@ -147,7 +132,7 @@ func (s *Server) metricsQuery(ctx context.Context, instanceId string, sql string return structTypeToMetricsViewColumn(rows.Schema), data, nil } -func buildMetricsTopListSql(req *api.MetricsViewToplistRequest, mv *api.MetricsView) (string, []any, error) { +func buildMetricsTopListSql(req *runtimev1.MetricsViewToplistRequest, mv *runtimev1.MetricsView) (string, []any, error) { selectCols := []string{req.DimensionName} for _, n := range req.MeasureNames { found := false @@ -211,7 +196,7 @@ func buildMetricsTopListSql(req *api.MetricsViewToplistRequest, mv *api.MetricsV return sql, args, nil } -func buildMetricsTimeSeriesSQL(req *api.MetricsViewTimeSeriesRequest, mv *api.MetricsView) (string, []any, error) { +func buildMetricsTimeSeriesSQL(req *runtimev1.MetricsViewTimeSeriesRequest, mv *runtimev1.MetricsView) (string, []any, error) { timeCol := fmt.Sprintf("DATE_TRUNC('%s', %s) AS %s", req.TimeGranularity, mv.TimeDimension, mv.TimeDimension) selectCols := []string{timeCol} for _, n := range req.MeasureNames { @@ -261,7 +246,7 @@ func buildMetricsTimeSeriesSQL(req *api.MetricsViewTimeSeriesRequest, mv *api.Me return sql, args, nil } -func buildMetricsTotalsSql(req *api.MetricsViewTotalsRequest, mv *api.MetricsView) (string, []any, error) { +func buildMetricsTotalsSql(req *runtimev1.MetricsViewTotalsRequest, mv *runtimev1.MetricsView) (string, []any, error) { selectCols := []string{} for _, n := range req.MeasureNames { found := false @@ -309,8 +294,8 @@ func buildMetricsTotalsSql(req *api.MetricsViewTotalsRequest, mv *api.MetricsVie return sql, args, nil } -// Builds clause and args for api.MetricsViewFilter -func buildFilterClauseForMetricsViewFilter(filter *api.MetricsViewFilter) (string, []any, error) { +// Builds clause and args for runtimev1.MetricsViewFilter +func buildFilterClauseForMetricsViewFilter(filter *runtimev1.MetricsViewFilter) (string, []any, error) { whereClause := "" var args []any @@ -335,7 +320,7 @@ func buildFilterClauseForMetricsViewFilter(filter *api.MetricsViewFilter) (strin return whereClause, args, nil } -func buildFilterClauseForConditions(conds []*api.MetricsViewFilter_Cond, exclude bool) (string, []any, error) { +func buildFilterClauseForConditions(conds []*runtimev1.MetricsViewFilter_Cond, exclude bool) (string, []any, error) { clause := "" var args []any @@ -354,7 +339,7 @@ func buildFilterClauseForConditions(conds []*api.MetricsViewFilter_Cond, exclude return clause, args, nil } -func buildFilterClauseForCondition(cond *api.MetricsViewFilter_Cond, exclude bool) (string, []any, error) { +func buildFilterClauseForCondition(cond *runtimev1.MetricsViewFilter_Cond, exclude bool) (string, []any, error) { var clauses []string var args []any @@ -434,10 +419,10 @@ func protobufValueToAny(val *structpb.Value) (any, error) { } } -func structTypeToMetricsViewColumn(v *api.StructType) []*api.MetricsViewColumn { - res := make([]*api.MetricsViewColumn, len(v.Fields)) +func structTypeToMetricsViewColumn(v *runtimev1.StructType) []*runtimev1.MetricsViewColumn { + res := make([]*runtimev1.MetricsViewColumn, len(v.Fields)) for i, f := range v.Fields { - res[i] = &api.MetricsViewColumn{ + res[i] = &runtimev1.MetricsViewColumn{ Name: f.Name, Type: f.Type.Code.String(), Nullable: f.Type.Nullable, diff --git a/runtime/server/migrations.go b/runtime/server/migrations.go index f675b1a9439..baa79044d87 100644 --- a/runtime/server/migrations.go +++ b/runtime/server/migrations.go @@ -5,7 +5,7 @@ import ( "fmt" "time" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/connectors" "github.com/rilldata/rill/runtime/drivers" "github.com/rilldata/rill/runtime/services/catalog" @@ -15,7 +15,7 @@ import ( ) // Migrate implements RuntimeService -func (s *Server) Migrate(ctx context.Context, req *api.MigrateRequest) (*api.MigrateResponse, error) { +func (s *Server) Migrate(ctx context.Context, req *runtimev1.MigrateRequest) (*runtimev1.MigrateResponse, error) { service, err := s.serviceCache.createCatalogService(ctx, s, req.InstanceId, req.RepoId) if err != nil { return nil, status.Error(codes.InvalidArgument, err.Error()) @@ -30,7 +30,7 @@ func (s *Server) Migrate(ctx context.Context, req *api.MigrateRequest) (*api.Mig return nil, err } - return &api.MigrateResponse{ + return &runtimev1.MigrateResponse{ Errors: resp.Errors, AffectedPaths: resp.AffectedPaths, }, nil @@ -38,13 +38,13 @@ func (s *Server) Migrate(ctx context.Context, req *api.MigrateRequest) (*api.Mig // MigrateSingle implements RuntimeService // NOTE: Everything here is an initial implementation with many flaws. -func (s *Server) MigrateSingle(ctx context.Context, req *api.MigrateSingleRequest) (*api.MigrateSingleResponse, error) { +func (s *Server) MigrateSingle(ctx context.Context, req *runtimev1.MigrateSingleRequest) (*runtimev1.MigrateSingleResponse, error) { // TODO: Handle all kinds of objects, not just sources return s.migrateSingleSource(ctx, req) } // MigrateDelete implements RuntimeService -func (s *Server) MigrateDelete(ctx context.Context, req *api.MigrateDeleteRequest) (*api.MigrateDeleteResponse, error) { +func (s *Server) MigrateDelete(ctx context.Context, req *runtimev1.MigrateDeleteRequest) (*runtimev1.MigrateDeleteResponse, error) { // Get instance registry, _ := s.metastore.RegistryStore() inst, found := registry.FindInstance(ctx, req.InstanceId) @@ -97,12 +97,12 @@ func (s *Server) MigrateDelete(ctx context.Context, req *api.MigrateDeleteReques return nil, status.Errorf(codes.Unknown, "could not delete object: %s", err.Error()) } - return &api.MigrateDeleteResponse{}, nil + return &runtimev1.MigrateDeleteResponse{}, nil } // PutFileAndMigrate implements RuntimeService -func (s *Server) PutFileAndMigrate(ctx context.Context, req *api.PutFileAndMigrateRequest) (*api.PutFileAndMigrateResponse, error) { - _, err := s.PutFile(ctx, &api.PutFileRequest{ +func (s *Server) PutFileAndMigrate(ctx context.Context, req *runtimev1.PutFileAndMigrateRequest) (*runtimev1.PutFileAndMigrateResponse, error) { + _, err := s.PutFile(ctx, &runtimev1.PutFileRequest{ RepoId: req.RepoId, Path: req.Path, Blob: req.Blob, @@ -112,7 +112,7 @@ func (s *Server) PutFileAndMigrate(ctx context.Context, req *api.PutFileAndMigra if err != nil { return nil, err } - migrateResp, err := s.Migrate(ctx, &api.MigrateRequest{ + migrateResp, err := s.Migrate(ctx, &runtimev1.MigrateRequest{ InstanceId: req.InstanceId, RepoId: req.RepoId, ChangedPaths: []string{req.Path}, @@ -122,14 +122,14 @@ func (s *Server) PutFileAndMigrate(ctx context.Context, req *api.PutFileAndMigra if err != nil { return nil, err } - return &api.PutFileAndMigrateResponse{ + return &runtimev1.PutFileAndMigrateResponse{ Errors: migrateResp.Errors, AffectedPaths: migrateResp.AffectedPaths, }, nil } -func (s *Server) RenameFileAndMigrate(ctx context.Context, req *api.RenameFileAndMigrateRequest) (*api.RenameFileAndMigrateResponse, error) { - _, err := s.RenameFile(ctx, &api.RenameFileRequest{ +func (s *Server) RenameFileAndMigrate(ctx context.Context, req *runtimev1.RenameFileAndMigrateRequest) (*runtimev1.RenameFileAndMigrateResponse, error) { + _, err := s.RenameFile(ctx, &runtimev1.RenameFileRequest{ RepoId: req.RepoId, FromPath: req.FromPath, ToPath: req.ToPath, @@ -137,7 +137,7 @@ func (s *Server) RenameFileAndMigrate(ctx context.Context, req *api.RenameFileAn if err != nil { return nil, err } - migrateResp, err := s.Migrate(ctx, &api.MigrateRequest{ + migrateResp, err := s.Migrate(ctx, &runtimev1.MigrateRequest{ InstanceId: req.InstanceId, RepoId: req.RepoId, ChangedPaths: []string{req.FromPath, req.ToPath}, @@ -147,21 +147,21 @@ func (s *Server) RenameFileAndMigrate(ctx context.Context, req *api.RenameFileAn if err != nil { return nil, err } - return &api.RenameFileAndMigrateResponse{ + return &runtimev1.RenameFileAndMigrateResponse{ Errors: migrateResp.Errors, AffectedPaths: migrateResp.AffectedPaths, }, nil } -func (s *Server) DeleteFileAndMigrate(ctx context.Context, req *api.DeleteFileAndMigrateRequest) (*api.DeleteFileAndMigrateResponse, error) { - _, err := s.DeleteFile(ctx, &api.DeleteFileRequest{ +func (s *Server) DeleteFileAndMigrate(ctx context.Context, req *runtimev1.DeleteFileAndMigrateRequest) (*runtimev1.DeleteFileAndMigrateResponse, error) { + _, err := s.DeleteFile(ctx, &runtimev1.DeleteFileRequest{ RepoId: req.RepoId, Path: req.Path, }) if err != nil { return nil, err } - migrateResp, err := s.Migrate(ctx, &api.MigrateRequest{ + migrateResp, err := s.Migrate(ctx, &runtimev1.MigrateRequest{ InstanceId: req.InstanceId, RepoId: req.RepoId, ChangedPaths: []string{req.Path}, @@ -171,14 +171,14 @@ func (s *Server) DeleteFileAndMigrate(ctx context.Context, req *api.DeleteFileAn if err != nil { return nil, err } - return &api.DeleteFileAndMigrateResponse{ + return &runtimev1.DeleteFileAndMigrateResponse{ Errors: migrateResp.Errors, AffectedPaths: migrateResp.AffectedPaths, }, nil } // NOTE: This is an initial migration implementation with several flaws. -func (s *Server) migrateSingleSource(ctx context.Context, req *api.MigrateSingleRequest) (*api.MigrateSingleResponse, error) { +func (s *Server) migrateSingleSource(ctx context.Context, req *runtimev1.MigrateSingleRequest) (*runtimev1.MigrateSingleResponse, error) { // Parse SQL source, err := sources.SqlToSource(req.Sql) if err != nil { @@ -243,7 +243,7 @@ func (s *Server) migrateSingleSource(ctx context.Context, req *api.MigrateSingle // Stop execution now if it's just a dry run if req.DryRun { - return &api.MigrateSingleResponse{}, nil + return &runtimev1.MigrateSingleResponse{}, nil } // Create the object to save @@ -344,5 +344,5 @@ func (s *Server) migrateSingleSource(ctx context.Context, req *api.MigrateSingle } // Done - return &api.MigrateSingleResponse{}, nil + return &runtimev1.MigrateSingleResponse{}, nil } diff --git a/runtime/server/migrations_test.go b/runtime/server/migrations_test.go index 9f92c15b731..e6222a59e1f 100644 --- a/runtime/server/migrations_test.go +++ b/runtime/server/migrations_test.go @@ -7,7 +7,7 @@ import ( "testing" "time" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" _ "github.com/rilldata/rill/runtime/drivers/duckdb" _ "github.com/rilldata/rill/runtime/drivers/file" _ "github.com/rilldata/rill/runtime/drivers/sqlite" @@ -32,7 +32,7 @@ func TestServer_MigrateSingleSources(t *testing.T) { ctx := context.Background() dir := t.TempDir() - repoResp, err := server.CreateRepo(ctx, &api.CreateRepoRequest{ + repoResp, err := server.CreateRepo(ctx, &runtimev1.CreateRepoRequest{ Driver: "file", Dsn: dir, }) @@ -40,7 +40,7 @@ func TestServer_MigrateSingleSources(t *testing.T) { _, err = server.serviceCache.createCatalogService(ctx, server, instanceId, repoResp.Repo.RepoId) require.NoError(t, err) - _, err = server.MigrateSingle(ctx, &api.MigrateSingleRequest{ + _, err = server.MigrateSingle(ctx, &runtimev1.MigrateSingleRequest{ InstanceId: instanceId, Sql: fmt.Sprintf("create source AdBids with connector = 'file', path = '%s'", AdBidsCsvPath), DryRun: false, @@ -48,14 +48,14 @@ func TestServer_MigrateSingleSources(t *testing.T) { require.NoError(t, err) assertTablePresence(t, server, instanceId, "AdBids", 100000) - _, err = server.MigrateSingle(ctx, &api.MigrateSingleRequest{ + _, err = server.MigrateSingle(ctx, &runtimev1.MigrateSingleRequest{ InstanceId: instanceId, Sql: fmt.Sprintf("create source adbids with connector = 'file', path = '%s'", AdBidsCsvPath), DryRun: false, }) require.Error(t, err) - _, err = server.MigrateSingle(ctx, &api.MigrateSingleRequest{ + _, err = server.MigrateSingle(ctx, &runtimev1.MigrateSingleRequest{ InstanceId: instanceId, Sql: fmt.Sprintf("create source adbids with connector = 'file', path = '%s'", AdBidsCsvPath), DryRun: false, @@ -64,7 +64,7 @@ func TestServer_MigrateSingleSources(t *testing.T) { require.NoError(t, err) assertTablePresence(t, server, instanceId, "adbids", 100000) - _, err = server.MigrateSingle(ctx, &api.MigrateSingleRequest{ + _, err = server.MigrateSingle(ctx, &runtimev1.MigrateSingleRequest{ InstanceId: instanceId, Sql: fmt.Sprintf("create source AdBids_New with connector = 'file', path = '%s'", AdBidsCsvPath), DryRun: false, @@ -81,7 +81,7 @@ func TestServer_PutFileAndMigrate(t *testing.T) { ctx := context.Background() dir := t.TempDir() - repoResp, err := server.CreateRepo(ctx, &api.CreateRepoRequest{ + repoResp, err := server.CreateRepo(ctx, &runtimev1.CreateRepoRequest{ Driver: "file", Dsn: dir, }) @@ -90,7 +90,7 @@ func TestServer_PutFileAndMigrate(t *testing.T) { require.NoError(t, err) artifact := testutils.CreateSource(t, service, "AdBids", AdBidsCsvPath, AdBidsRepoPath) - resp, err := server.PutFileAndMigrate(ctx, &api.PutFileAndMigrateRequest{ + resp, err := server.PutFileAndMigrate(ctx, &runtimev1.PutFileAndMigrateRequest{ RepoId: repoResp.Repo.RepoId, InstanceId: instanceId, Path: AdBidsRepoPath, @@ -102,7 +102,7 @@ func TestServer_PutFileAndMigrate(t *testing.T) { // replace with same name different file artifact = testutils.CreateSource(t, service, "AdBids", AdImpressionsCsvPath, AdBidsRepoPath) - resp, err = server.PutFileAndMigrate(ctx, &api.PutFileAndMigrateRequest{ + resp, err = server.PutFileAndMigrate(ctx, &runtimev1.PutFileAndMigrateRequest{ RepoId: repoResp.Repo.RepoId, InstanceId: instanceId, Path: AdBidsRepoPath, @@ -114,7 +114,7 @@ func TestServer_PutFileAndMigrate(t *testing.T) { // rename testutils.CreateSource(t, service, "AdBidsNew", AdBidsCsvPath, AdBidsRepoPath) - renameResp, err := server.RenameFileAndMigrate(ctx, &api.RenameFileAndMigrateRequest{ + renameResp, err := server.RenameFileAndMigrate(ctx, &runtimev1.RenameFileAndMigrateRequest{ RepoId: repoResp.Repo.RepoId, InstanceId: instanceId, FromPath: AdBidsRepoPath, @@ -126,7 +126,7 @@ func TestServer_PutFileAndMigrate(t *testing.T) { testutils.AssertTable(t, service, "AdBidsNew", AdBidsNewRepoPath) // delete - delResp, err := server.DeleteFileAndMigrate(ctx, &api.DeleteFileAndMigrateRequest{ + delResp, err := server.DeleteFileAndMigrate(ctx, &runtimev1.DeleteFileAndMigrateRequest{ RepoId: repoResp.Repo.RepoId, InstanceId: instanceId, Path: AdBidsNewRepoPath, @@ -140,7 +140,7 @@ func TestServer_PutFileAndMigrate(t *testing.T) { func assertTablePresence(t *testing.T, server *Server, instanceId, tableName string, count int) { ctx := context.Background() - resp, err := server.QueryDirect(ctx, &api.QueryDirectRequest{ + resp, err := server.QueryDirect(ctx, &runtimev1.QueryDirectRequest{ InstanceId: instanceId, Sql: fmt.Sprintf("select count(*) as count from %s", tableName), Args: nil, @@ -151,7 +151,7 @@ func assertTablePresence(t *testing.T, server *Server, instanceId, tableName str require.NotEmpty(t, resp.Data) require.Equal(t, int(resp.Data[0].Fields["count"].GetNumberValue()), count) - catalog, _ := server.GetCatalogObject(context.Background(), &api.GetCatalogObjectRequest{ + catalog, _ := server.GetCatalogObject(context.Background(), &runtimev1.GetCatalogObjectRequest{ InstanceId: instanceId, Name: tableName, }) diff --git a/runtime/server/queries.go b/runtime/server/queries.go index 3f70525d8ac..1093c1382f2 100644 --- a/runtime/server/queries.go +++ b/runtime/server/queries.go @@ -9,7 +9,7 @@ import ( "unicode/utf8" "github.com/marcboeker/go-duckdb" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -17,7 +17,7 @@ import ( ) // Query implements RuntimeService -func (s *Server) Query(ctx context.Context, req *api.QueryRequest) (*api.QueryResponse, error) { +func (s *Server) Query(ctx context.Context, req *runtimev1.QueryRequest) (*runtimev1.QueryResponse, error) { args := make([]any, len(req.Args)) for i, arg := range req.Args { args[i] = arg.AsInterface() @@ -37,7 +37,7 @@ func (s *Server) Query(ctx context.Context, req *api.QueryRequest) (*api.QueryRe if req.DryRun { // TODO: Return a meta object for dry-run queries // NOTE: Currently, instance.Query return nil rows for succesful dry-run queries - return &api.QueryResponse{}, nil + return &runtimev1.QueryResponse{}, nil } defer res.Close() @@ -47,7 +47,7 @@ func (s *Server) Query(ctx context.Context, req *api.QueryRequest) (*api.QueryRe return nil, status.Error(codes.Internal, err.Error()) } - resp := &api.QueryResponse{ + resp := &runtimev1.QueryResponse{ Meta: res.Schema, Data: data, } @@ -56,9 +56,9 @@ func (s *Server) Query(ctx context.Context, req *api.QueryRequest) (*api.QueryRe } // QueryDirect implements RuntimeService -func (s *Server) QueryDirect(ctx context.Context, req *api.QueryDirectRequest) (*api.QueryDirectResponse, error) { +func (s *Server) QueryDirect(ctx context.Context, req *runtimev1.QueryDirectRequest) (*runtimev1.QueryDirectResponse, error) { // NOTE: Deprecated – just proxy to Query - res, err := s.Query(ctx, &api.QueryRequest{ + res, err := s.Query(ctx, &runtimev1.QueryRequest{ InstanceId: req.InstanceId, Sql: req.Sql, Args: req.Args, @@ -69,7 +69,7 @@ func (s *Server) QueryDirect(ctx context.Context, req *api.QueryDirectRequest) ( return nil, err } - return &api.QueryDirectResponse{ + return &runtimev1.QueryDirectResponse{ Meta: res.Meta, Data: res.Data, }, nil diff --git a/runtime/server/repos.go b/runtime/server/repos.go index c8eb7bad67e..74f426fde97 100644 --- a/runtime/server/repos.go +++ b/runtime/server/repos.go @@ -5,7 +5,7 @@ import ( "fmt" "net/http" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -14,33 +14,33 @@ import ( ) // ListRepos implements RuntimeService -func (s *Server) ListRepos(ctx context.Context, req *api.ListReposRequest) (*api.ListReposResponse, error) { +func (s *Server) ListRepos(ctx context.Context, req *runtimev1.ListReposRequest) (*runtimev1.ListReposResponse, error) { registry, _ := s.metastore.RegistryStore() repos := registry.FindRepos(ctx) - pbs := make([]*api.Repo, len(repos)) + pbs := make([]*runtimev1.Repo, len(repos)) for i, repo := range repos { pbs[i] = repoToPB(repo) } - return &api.ListReposResponse{Repos: pbs}, nil + return &runtimev1.ListReposResponse{Repos: pbs}, nil } // GetRepo implements RuntimeService -func (s *Server) GetRepo(ctx context.Context, req *api.GetRepoRequest) (*api.GetRepoResponse, error) { +func (s *Server) GetRepo(ctx context.Context, req *runtimev1.GetRepoRequest) (*runtimev1.GetRepoResponse, error) { registry, _ := s.metastore.RegistryStore() repo, found := registry.FindRepo(ctx, req.RepoId) if !found { return nil, status.Error(codes.NotFound, "repo not found") } - return &api.GetRepoResponse{ + return &runtimev1.GetRepoResponse{ Repo: repoToPB(repo), }, nil } // CreateRepo implements RuntimeService -func (s *Server) CreateRepo(ctx context.Context, req *api.CreateRepoRequest) (*api.CreateRepoResponse, error) { +func (s *Server) CreateRepo(ctx context.Context, req *runtimev1.CreateRepoRequest) (*runtimev1.CreateRepoResponse, error) { repo := &drivers.Repo{ ID: req.RepoId, Driver: req.Driver, @@ -63,24 +63,24 @@ func (s *Server) CreateRepo(ctx context.Context, req *api.CreateRepoRequest) (*a return nil, status.Error(codes.InvalidArgument, err.Error()) } - return &api.CreateRepoResponse{ + return &runtimev1.CreateRepoResponse{ Repo: repoToPB(repo), }, nil } // DeleteRepo implements RuntimeService -func (s *Server) DeleteRepo(ctx context.Context, req *api.DeleteRepoRequest) (*api.DeleteRepoResponse, error) { +func (s *Server) DeleteRepo(ctx context.Context, req *runtimev1.DeleteRepoRequest) (*runtimev1.DeleteRepoResponse, error) { registry, _ := s.metastore.RegistryStore() err := registry.DeleteRepo(ctx, req.RepoId) if err != nil { return nil, status.Error(codes.InvalidArgument, err.Error()) } - return &api.DeleteRepoResponse{}, nil + return &runtimev1.DeleteRepoResponse{}, nil } // ListFiles implements RuntimeService -func (s *Server) ListFiles(ctx context.Context, req *api.ListFilesRequest) (*api.ListFilesResponse, error) { +func (s *Server) ListFiles(ctx context.Context, req *runtimev1.ListFilesRequest) (*runtimev1.ListFilesResponse, error) { registry, _ := s.metastore.RegistryStore() repo, found := registry.FindRepo(ctx, req.RepoId) if !found { @@ -103,11 +103,11 @@ func (s *Server) ListFiles(ctx context.Context, req *api.ListFilesRequest) (*api return nil, status.Error(codes.FailedPrecondition, err.Error()) } - return &api.ListFilesResponse{Paths: paths}, nil + return &runtimev1.ListFilesResponse{Paths: paths}, nil } // GetFile implements RuntimeService -func (s *Server) GetFile(ctx context.Context, req *api.GetFileRequest) (*api.GetFileResponse, error) { +func (s *Server) GetFile(ctx context.Context, req *runtimev1.GetFileRequest) (*runtimev1.GetFileResponse, error) { registry, _ := s.metastore.RegistryStore() repo, found := registry.FindRepo(ctx, req.RepoId) if !found { @@ -131,11 +131,11 @@ func (s *Server) GetFile(ctx context.Context, req *api.GetFileRequest) (*api.Get return nil, status.Error(codes.InvalidArgument, err.Error()) } - return &api.GetFileResponse{Blob: blob, UpdatedOn: timestamppb.New(stat.LastUpdated)}, nil + return &runtimev1.GetFileResponse{Blob: blob, UpdatedOn: timestamppb.New(stat.LastUpdated)}, nil } // PutFile implements RuntimeService -func (s *Server) PutFile(ctx context.Context, req *api.PutFileRequest) (*api.PutFileResponse, error) { +func (s *Server) PutFile(ctx context.Context, req *runtimev1.PutFileRequest) (*runtimev1.PutFileResponse, error) { registry, _ := s.metastore.RegistryStore() repo, found := registry.FindRepo(ctx, req.RepoId) if !found { @@ -154,11 +154,11 @@ func (s *Server) PutFile(ctx context.Context, req *api.PutFileRequest) (*api.Put return nil, status.Error(codes.InvalidArgument, err.Error()) } - return &api.PutFileResponse{}, nil + return &runtimev1.PutFileResponse{}, nil } // DeleteFile implements RuntimeService -func (s *Server) DeleteFile(ctx context.Context, req *api.DeleteFileRequest) (*api.DeleteFileResponse, error) { +func (s *Server) DeleteFile(ctx context.Context, req *runtimev1.DeleteFileRequest) (*runtimev1.DeleteFileResponse, error) { registry, _ := s.metastore.RegistryStore() repo, found := registry.FindRepo(ctx, req.RepoId) if !found { @@ -176,11 +176,11 @@ func (s *Server) DeleteFile(ctx context.Context, req *api.DeleteFileRequest) (*a return nil, status.Error(codes.InvalidArgument, err.Error()) } - return &api.DeleteFileResponse{}, nil + return &runtimev1.DeleteFileResponse{}, nil } // RenameFile implements RuntimeService -func (s *Server) RenameFile(ctx context.Context, req *api.RenameFileRequest) (*api.RenameFileResponse, error) { +func (s *Server) RenameFile(ctx context.Context, req *runtimev1.RenameFileRequest) (*runtimev1.RenameFileResponse, error) { registry, _ := s.metastore.RegistryStore() repo, found := registry.FindRepo(ctx, req.RepoId) if !found { @@ -198,7 +198,7 @@ func (s *Server) RenameFile(ctx context.Context, req *api.RenameFileRequest) (*a return nil, status.Error(codes.InvalidArgument, err.Error()) } - return &api.RenameFileResponse{}, nil + return &runtimev1.RenameFileResponse{}, nil } // UploadMultipartFile implements the same functionality as PutFile, but for multipart HTTP upload. @@ -241,7 +241,7 @@ func (s *Server) UploadMultipartFile(w http.ResponseWriter, req *http.Request, p return } - res, err := protojson.Marshal(&api.PutFileResponse{ + res, err := protojson.Marshal(&runtimev1.PutFileResponse{ FilePath: filePath, }) if err != nil { @@ -253,8 +253,8 @@ func (s *Server) UploadMultipartFile(w http.ResponseWriter, req *http.Request, p w.Write(res) } -func repoToPB(repo *drivers.Repo) *api.Repo { - return &api.Repo{ +func repoToPB(repo *drivers.Repo) *runtimev1.Repo { + return &runtimev1.Repo{ RepoId: repo.ID, Driver: repo.Driver, Dsn: repo.DSN, diff --git a/runtime/server/server.go b/runtime/server/server.go index 4e1ce3c0e2e..63d53bf774d 100644 --- a/runtime/server/server.go +++ b/runtime/server/server.go @@ -13,15 +13,13 @@ import ( "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/recovery" "github.com/grpc-ecosystem/go-grpc-middleware/v2/interceptors/tracing" gateway "github.com/grpc-ecosystem/grpc-gateway/v2/runtime" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" + "github.com/rilldata/rill/runtime/drivers" + "github.com/rilldata/rill/runtime/pkg/graceful" "go.uber.org/zap" "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" "google.golang.org/protobuf/types/known/timestamppb" - - "github.com/rilldata/rill/runtime" - "github.com/rilldata/rill/runtime/api" - "github.com/rilldata/rill/runtime/drivers" - "github.com/rilldata/rill/runtime/pkg/graceful" ) type ServerOptions struct { @@ -31,7 +29,7 @@ type ServerOptions struct { } type Server struct { - api.UnsafeRuntimeServiceServer + runtimev1.UnsafeRuntimeServiceServer opts *ServerOptions metastore drivers.Connection logger *zap.Logger @@ -39,7 +37,7 @@ type Server struct { serviceCache *servicesCache } -var _ api.RuntimeServiceServer = (*Server)(nil) +var _ runtimev1.RuntimeServiceServer = (*Server)(nil) func NewServer(opts *ServerOptions, metastore drivers.Connection, logger *zap.Logger) (*Server, error) { _, ok := metastore.RegistryStore() @@ -72,7 +70,7 @@ func (s *Server) ServeGRPC(ctx context.Context) error { recovery.UnaryServerInterceptor(), ), ) - api.RegisterRuntimeServiceServer(server, s) + runtimev1.RegisterRuntimeServiceServer(server, s) s.logger.Sugar().Infof("serving runtime gRPC on port:%v", s.opts.GRPCPort) return graceful.ServeGRPC(ctx, server, s.opts.GRPCPort) } @@ -95,7 +93,7 @@ func (s *Server) HTTPHandler(ctx context.Context) (http.Handler, error) { mux := gateway.NewServeMux() opts := []grpc.DialOption{grpc.WithTransportCredentials(insecure.NewCredentials())} grpcAddress := fmt.Sprintf(":%d", s.opts.GRPCPort) - err := api.RegisterRuntimeServiceHandlerFromEndpoint(ctx, mux, grpcAddress, opts) + err := runtimev1.RegisterRuntimeServiceHandlerFromEndpoint(ctx, mux, grpcAddress, opts) if err != nil { return nil, err } @@ -114,9 +112,9 @@ func (s *Server) HTTPHandler(ctx context.Context) (http.Handler, error) { } // Ping implements RuntimeService -func (s *Server) Ping(ctx context.Context, req *api.PingRequest) (*api.PingResponse, error) { - resp := &api.PingResponse{ - Version: runtime.Version, +func (s *Server) Ping(ctx context.Context, req *runtimev1.PingRequest) (*runtimev1.PingResponse, error) { + resp := &runtimev1.PingResponse{ + Version: "", // TODO: Return version Time: timestamppb.New(time.Now()), } return resp, nil diff --git a/runtime/server/server_test.go b/runtime/server/server_test.go index 758e2dc35e3..766fb3415ac 100644 --- a/runtime/server/server_test.go +++ b/runtime/server/server_test.go @@ -4,7 +4,7 @@ import ( "context" "testing" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" "github.com/stretchr/testify/require" ) @@ -21,7 +21,7 @@ func getTestServer(t *testing.T) (*Server, string) { }, metastore, nil) require.NoError(t, err) - resp, err := server.CreateInstance(context.Background(), &api.CreateInstanceRequest{ + resp, err := server.CreateInstance(context.Background(), &runtimev1.CreateInstanceRequest{ Driver: "duckdb", Dsn: "", Exposed: true, @@ -36,7 +36,7 @@ func getTestServer(t *testing.T) (*Server, string) { func getTestServerWithData(t *testing.T) (*Server, string) { server, instanceId := getTestServer(t) - _, err := server.QueryDirect(context.Background(), &api.QueryDirectRequest{ + _, err := server.QueryDirect(context.Background(), &runtimev1.QueryDirectRequest{ InstanceId: instanceId, Sql: `CREATE TABLE test AS ( SELECT 'abc' AS col, 1 AS val, TIMESTAMP '2022-11-01 00:00:00' AS times diff --git a/runtime/server/table_api_test.go b/runtime/server/table_api_test.go index 26def4f6a5f..36697784894 100644 --- a/runtime/server/table_api_test.go +++ b/runtime/server/table_api_test.go @@ -5,10 +5,9 @@ import ( "testing" "github.com/jmoiron/sqlx" - "github.com/stretchr/testify/require" - - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" + "github.com/stretchr/testify/require" ) func getSingleValue(t *testing.T, rows *sqlx.Rows) int { @@ -58,7 +57,7 @@ func TestServer_TableCardinality(t *testing.T) { server, instanceId := getTestServer(t) rows := createTestTable(server, instanceId, t) rows.Close() - cr, err := server.GetTableCardinality(context.Background(), &api.GetTableCardinalityRequest{ + cr, err := server.GetTableCardinality(context.Background(), &runtimev1.GetTableCardinalityRequest{ InstanceId: instanceId, TableName: "test", }) @@ -67,7 +66,7 @@ func TestServer_TableCardinality(t *testing.T) { rows = createTable(server, instanceId, t, "select") rows.Close() - cr, err = server.GetTableCardinality(context.Background(), &api.GetTableCardinalityRequest{ + cr, err = server.GetTableCardinality(context.Background(), &runtimev1.GetTableCardinalityRequest{ InstanceId: instanceId, TableName: "select", }) @@ -79,7 +78,7 @@ func TestServer_ProfileColumns(t *testing.T) { server, instanceId := getTestServer(t) rows := createTestTable(server, instanceId, t) rows.Close() - cr, err := server.ProfileColumns(context.Background(), &api.ProfileColumnsRequest{ + cr, err := server.ProfileColumns(context.Background(), &runtimev1.ProfileColumnsRequest{ InstanceId: instanceId, TableName: "test", }) @@ -98,7 +97,7 @@ func TestServer_TableRows(t *testing.T) { server, instanceId := getTestServer(t) rows := createTestTable(server, instanceId, t) rows.Close() - cr, err := server.GetTableRows(context.Background(), &api.GetTableRowsRequest{ + cr, err := server.GetTableRows(context.Background(), &runtimev1.GetTableRowsRequest{ InstanceId: instanceId, TableName: "test", Limit: 1, diff --git a/runtime/server/tablewide_api.go b/runtime/server/tablewide_api.go index 57b97578d70..e7788214b6c 100644 --- a/runtime/server/tablewide_api.go +++ b/runtime/server/tablewide_api.go @@ -5,13 +5,13 @@ import ( "fmt" "regexp" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" "google.golang.org/protobuf/types/known/structpb" ) // Table level profiling APIs -func (s *Server) GetTableCardinality(ctx context.Context, req *api.GetTableCardinalityRequest) (*api.GetTableCardinalityResponse, error) { +func (s *Server) GetTableCardinality(ctx context.Context, req *runtimev1.GetTableCardinalityRequest) (*runtimev1.GetTableCardinalityResponse, error) { rows, err := s.query(ctx, req.InstanceId, &drivers.Statement{ Query: "select count(*) from " + quoteName(req.TableName), }) @@ -26,7 +26,7 @@ func (s *Server) GetTableCardinality(ctx context.Context, req *api.GetTableCardi return nil, err } } - return &api.GetTableCardinalityResponse{ + return &runtimev1.GetTableCardinalityResponse{ Cardinality: count, }, nil } @@ -43,7 +43,7 @@ func EscapeDoubleQuotes(column string) string { return DoubleQuotesRegexp.ReplaceAllString(column, "\"\"") } -func (s *Server) ProfileColumns(ctx context.Context, req *api.ProfileColumnsRequest) (*api.ProfileColumnsResponse, error) { +func (s *Server) ProfileColumns(ctx context.Context, req *runtimev1.ProfileColumnsRequest) (*runtimev1.ProfileColumnsResponse, error) { rows, err := s.query(ctx, req.InstanceId, &drivers.Statement{ Query: fmt.Sprintf(`select column_name as name, data_type as type from information_schema.columns where table_name = '%s' and table_schema = current_schema()`, req.TableName), @@ -52,10 +52,10 @@ func (s *Server) ProfileColumns(ctx context.Context, req *api.ProfileColumnsRequ return nil, err } defer rows.Close() - var pcs []*api.ProfileColumn + var pcs []*runtimev1.ProfileColumn i := 0 for rows.Next() { - pc := api.ProfileColumn{} + pc := runtimev1.ProfileColumn{} if err := rows.StructScan(&pc); err != nil { return nil, err } @@ -79,12 +79,12 @@ func (s *Server) ProfileColumns(ctx context.Context, req *api.ProfileColumnsRequ rows.Close() } - return &api.ProfileColumnsResponse{ + return &runtimev1.ProfileColumnsResponse{ ProfileColumns: pcs[0:i], }, nil } -func (s *Server) GetTableRows(ctx context.Context, req *api.GetTableRowsRequest) (*api.GetTableRowsResponse, error) { +func (s *Server) GetTableRows(ctx context.Context, req *runtimev1.GetTableRowsRequest) (*runtimev1.GetTableRowsResponse, error) { rows, err := s.query(ctx, req.InstanceId, &drivers.Statement{ Query: fmt.Sprintf("select * from %s limit %d", req.TableName, req.Limit), }) @@ -96,7 +96,7 @@ func (s *Server) GetTableRows(ctx context.Context, req *api.GetTableRowsRequest) return nil, err } - return &api.GetTableRowsResponse{ + return &runtimev1.GetTableRowsResponse{ Data: data, }, nil } diff --git a/runtime/server/timeseries_api.go b/runtime/server/timeseries_api.go index 124ca13e4ec..7c458e0ffb5 100644 --- a/runtime/server/timeseries_api.go +++ b/runtime/server/timeseries_api.go @@ -8,12 +8,12 @@ import ( "time" "github.com/marcboeker/go-duckdb" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" "google.golang.org/protobuf/types/known/timestamppb" ) -func getExpressionColumnsFromMeasures(measures []*api.BasicMeasureDefinition) string { +func getExpressionColumnsFromMeasures(measures []*runtimev1.BasicMeasureDefinition) string { var result string for i, measure := range measures { result += measure.Expression + " as " + *measure.SqlName @@ -24,7 +24,7 @@ func getExpressionColumnsFromMeasures(measures []*api.BasicMeasureDefinition) st return result } -func getCoalesceStatementsMeasures(measures []*api.BasicMeasureDefinition) string { +func getCoalesceStatementsMeasures(measures []*runtimev1.BasicMeasureDefinition) string { var result string for i, measure := range measures { result += fmt.Sprintf(`COALESCE(series.%s, 0) as %s`, *measure.SqlName, *measure.SqlName) @@ -40,7 +40,7 @@ func EscapeSingleQuotes(value string) string { } func getFilterFromDimensionValuesFilter( - dimensionValues []*api.MetricsViewDimensionValue, + dimensionValues []*runtimev1.MetricsViewDimensionValue, prefix string, dimensionJoiner string, ) string { @@ -100,7 +100,7 @@ func getFilterFromDimensionValuesFilter( return result } -func getFilterFromMetricsViewFilters(filters *api.MetricsViewRequestFilter) string { +func getFilterFromMetricsViewFilters(filters *runtimev1.MetricsViewRequestFilter) string { includeFilters := getFilterFromDimensionValuesFilter(filters.Include, "", "OR") excludeFilters := getFilterFromDimensionValuesFilter(filters.Exclude, "NOT", "AND") @@ -126,10 +126,10 @@ func getFallbackMeasureName(index int, sqlName *string) *string { var countName string = "count" -func normaliseMeasures(measures *api.GenerateTimeSeriesRequest_BasicMeasures) *api.GenerateTimeSeriesRequest_BasicMeasures { +func normaliseMeasures(measures *runtimev1.GenerateTimeSeriesRequest_BasicMeasures) *runtimev1.GenerateTimeSeriesRequest_BasicMeasures { if measures == nil { - return &api.GenerateTimeSeriesRequest_BasicMeasures{ - BasicMeasures: []*api.BasicMeasureDefinition{ + return &runtimev1.GenerateTimeSeriesRequest_BasicMeasures{ + BasicMeasures: []*runtimev1.BasicMeasureDefinition{ { Expression: "count(*)", SqlName: &countName, @@ -145,7 +145,7 @@ func normaliseMeasures(measures *api.GenerateTimeSeriesRequest_BasicMeasures) *a } // Metrics/Timeseries APIs -func (s *Server) EstimateRollupInterval(ctx context.Context, request *api.EstimateRollupIntervalRequest) (*api.EstimateRollupIntervalResponse, error) { +func (s *Server) EstimateRollupInterval(ctx context.Context, request *runtimev1.EstimateRollupIntervalRequest) (*runtimev1.EstimateRollupIntervalResponse, error) { tableName := EscapeDoubleQuotes(request.TableName) escapedColumnName := EscapeDoubleQuotes(request.ColumnName) rows, err := s.query(ctx, request.InstanceId, &drivers.Statement{ @@ -176,38 +176,38 @@ func (s *Server) EstimateRollupInterval(ctx context.Context, request *api.Estima MICROS_DAY = 1000 * 1000 * 60 * 60 * 24 ) - var rollupInterval api.TimeGrain + var rollupInterval runtimev1.TimeGrain if r.Days == 0 && r.Micros <= MICROS_MINUTE { - rollupInterval = api.TimeGrain_TIME_GRAIN_MILLISECOND + rollupInterval = runtimev1.TimeGrain_TIME_GRAIN_MILLISECOND } else if r.Days == 0 && r.Micros > MICROS_MINUTE && r.Micros <= MICROS_HOUR { - rollupInterval = api.TimeGrain_TIME_GRAIN_SECOND + rollupInterval = runtimev1.TimeGrain_TIME_GRAIN_SECOND } else if r.Days == 0 && r.Micros <= MICROS_DAY { - rollupInterval = api.TimeGrain_TIME_GRAIN_MINUTE + rollupInterval = runtimev1.TimeGrain_TIME_GRAIN_MINUTE } else if r.Days <= 7 { - rollupInterval = api.TimeGrain_TIME_GRAIN_HOUR + rollupInterval = runtimev1.TimeGrain_TIME_GRAIN_HOUR } else if r.Days <= 365*20 { - rollupInterval = api.TimeGrain_TIME_GRAIN_DAY + rollupInterval = runtimev1.TimeGrain_TIME_GRAIN_DAY } else if r.Days <= 365*500 { - rollupInterval = api.TimeGrain_TIME_GRAIN_MONTH + rollupInterval = runtimev1.TimeGrain_TIME_GRAIN_MONTH } else { - rollupInterval = api.TimeGrain_TIME_GRAIN_YEAR + rollupInterval = runtimev1.TimeGrain_TIME_GRAIN_YEAR } - return &api.EstimateRollupIntervalResponse{ + return &runtimev1.EstimateRollupIntervalResponse{ Interval: rollupInterval, Start: timestamppb.New(min), End: timestamppb.New(max), }, nil } -func (s *Server) normaliseTimeRange(ctx context.Context, request *api.GenerateTimeSeriesRequest) (*api.TimeSeriesTimeRange, error) { +func (s *Server) normaliseTimeRange(ctx context.Context, request *runtimev1.GenerateTimeSeriesRequest) (*runtimev1.TimeSeriesTimeRange, error) { rtr := request.TimeRange if rtr == nil { - rtr = &api.TimeSeriesTimeRange{} + rtr = &runtimev1.TimeSeriesTimeRange{} } - var result api.TimeSeriesTimeRange - if rtr.Interval == api.TimeGrain_TIME_GRAIN_UNSPECIFIED { - r, err := s.EstimateRollupInterval(ctx, &api.EstimateRollupIntervalRequest{ + var result runtimev1.TimeSeriesTimeRange + if rtr.Interval == runtimev1.TimeGrain_TIME_GRAIN_UNSPECIFIED { + r, err := s.EstimateRollupInterval(ctx, &runtimev1.EstimateRollupIntervalRequest{ InstanceId: request.InstanceId, TableName: request.TableName, ColumnName: request.TimestampColumnName, @@ -215,13 +215,13 @@ func (s *Server) normaliseTimeRange(ctx context.Context, request *api.GenerateTi if err != nil { return nil, err } - result = api.TimeSeriesTimeRange{ + result = runtimev1.TimeSeriesTimeRange{ Interval: r.Interval, Start: r.Start, End: r.End, } } else if rtr.Start == nil || rtr.End == nil { - tr, err := s.GetTimeRangeSummary(ctx, &api.GetTimeRangeSummaryRequest{ + tr, err := s.GetTimeRangeSummary(ctx, &runtimev1.GetTimeRangeSummaryRequest{ InstanceId: request.InstanceId, TableName: request.TableName, ColumnName: request.TimestampColumnName, @@ -229,7 +229,7 @@ func (s *Server) normaliseTimeRange(ctx context.Context, request *api.GenerateTi if err != nil { return nil, err } - result = api.TimeSeriesTimeRange{ + result = runtimev1.TimeSeriesTimeRange{ Interval: rtr.Interval, Start: tr.TimeRangeSummary.Min, End: tr.TimeRangeSummary.Max, @@ -241,7 +241,7 @@ func (s *Server) normaliseTimeRange(ctx context.Context, request *api.GenerateTi if rtr.End != nil { result.End = rtr.End } - if rtr.Interval != api.TimeGrain_TIME_GRAIN_UNSPECIFIED { + if rtr.Interval != runtimev1.TimeGrain_TIME_GRAIN_UNSPECIFIED { result.Interval = rtr.Interval } return &result, nil @@ -277,9 +277,9 @@ func (s *Server) createTimestampRollupReduction( // metadata: DatabaseMetadata, timestampColumn string, valueColumn string, pixels int, -) ([]*api.TimeSeriesValue, error) { +) ([]*runtimev1.TimeSeriesValue, error) { escapedTimestampColumn := EscapeDoubleQuotes(timestampColumn) - cardinality, err := s.GetTableCardinality(ctx, &api.GetTableCardinalityRequest{ + cardinality, err := s.GetTableCardinality(ctx, &runtimev1.GetTableCardinalityRequest{ InstanceId: instanceId, TableName: table, }) @@ -295,7 +295,7 @@ func (s *Server) createTimestampRollupReduction( // metadata: DatabaseMetadata, return nil, err } defer rows.Close() - results := make([]*api.TimeSeriesValue, 0, (pixels+1)*4) + results := make([]*runtimev1.TimeSeriesValue, 0, (pixels+1)*4) for rows.Next() { var ts time.Time var count float64 @@ -303,7 +303,7 @@ func (s *Server) createTimestampRollupReduction( // metadata: DatabaseMetadata, if err != nil { return nil, err } - results = append(results, &api.TimeSeriesValue{ + results = append(results, &runtimev1.TimeSeriesValue{ Ts: ts.Format(IsoFormat), Records: sMap("count", count), }) @@ -350,7 +350,7 @@ func (s *Server) createTimestampRollupReduction( // metadata: DatabaseMetadata, return nil, err } defer rows.Close() - results := make([]*api.TimeSeriesValue, 0, (pixels+1)*4) + results := make([]*runtimev1.TimeSeriesValue, 0, (pixels+1)*4) for rows.Next() { var minT, maxT, argminVT, argmaxVT int64 var argminTV, argmaxTV, minV, maxV float64 @@ -359,24 +359,24 @@ func (s *Server) createTimestampRollupReduction( // metadata: DatabaseMetadata, if err != nil { return nil, err } - results = append(results, &api.TimeSeriesValue{ + results = append(results, &runtimev1.TimeSeriesValue{ Ts: time.UnixMilli(minT).Format(IsoFormat), Bin: &bin, Records: sMap("count", argminTV), }) - results = append(results, &api.TimeSeriesValue{ + results = append(results, &runtimev1.TimeSeriesValue{ Ts: time.UnixMilli(argminVT).Format(IsoFormat), Bin: &bin, Records: sMap("count", minV), }) - results = append(results, &api.TimeSeriesValue{ + results = append(results, &runtimev1.TimeSeriesValue{ Ts: time.UnixMilli(argmaxVT).Format(IsoFormat), Bin: &bin, Records: sMap("count", maxV), }) - results = append(results, &api.TimeSeriesValue{ + results = append(results, &runtimev1.TimeSeriesValue{ Ts: time.UnixMilli(maxT).Format(IsoFormat), Bin: &bin, Records: sMap("count", argmaxTV), @@ -389,34 +389,34 @@ func (s *Server) createTimestampRollupReduction( // metadata: DatabaseMetadata, return results, nil } -func convertToDateTruncSpecifier(specifier api.TimeGrain) string { +func convertToDateTruncSpecifier(specifier runtimev1.TimeGrain) string { switch specifier { - case api.TimeGrain_TIME_GRAIN_MILLISECOND: + case runtimev1.TimeGrain_TIME_GRAIN_MILLISECOND: return "MILLISECOND" - case api.TimeGrain_TIME_GRAIN_SECOND: + case runtimev1.TimeGrain_TIME_GRAIN_SECOND: return "SECOND" - case api.TimeGrain_TIME_GRAIN_MINUTE: + case runtimev1.TimeGrain_TIME_GRAIN_MINUTE: return "MINUTE" - case api.TimeGrain_TIME_GRAIN_HOUR: + case runtimev1.TimeGrain_TIME_GRAIN_HOUR: return "HOUR" - case api.TimeGrain_TIME_GRAIN_DAY: + case runtimev1.TimeGrain_TIME_GRAIN_DAY: return "DAY" - case api.TimeGrain_TIME_GRAIN_WEEK: + case runtimev1.TimeGrain_TIME_GRAIN_WEEK: return "WEEK" - case api.TimeGrain_TIME_GRAIN_MONTH: + case runtimev1.TimeGrain_TIME_GRAIN_MONTH: return "MONTH" - case api.TimeGrain_TIME_GRAIN_YEAR: + case runtimev1.TimeGrain_TIME_GRAIN_YEAR: return "YEAR" } panic(fmt.Errorf("unconvertable time grain specifier: %v", specifier)) } -func (s *Server) GenerateTimeSeries(ctx context.Context, request *api.GenerateTimeSeriesRequest) (*api.GenerateTimeSeriesResponse, error) { +func (s *Server) GenerateTimeSeries(ctx context.Context, request *runtimev1.GenerateTimeSeriesRequest) (*runtimev1.GenerateTimeSeriesResponse, error) { timeRange, err := s.normaliseTimeRange(ctx, request) if err != nil { return nil, err } - var measures []*api.BasicMeasureDefinition = normaliseMeasures(request.Measures).BasicMeasures + var measures []*runtimev1.BasicMeasureDefinition = normaliseMeasures(request.Measures).BasicMeasures var timestampColumn string = request.TimestampColumnName var tableName string = request.TableName var filter string = getFilterFromMetricsViewFilters(request.Filters) @@ -475,20 +475,20 @@ func (s *Server) GenerateTimeSeries(ctx context.Context, request *api.GenerateTi if err != nil { return nil, err } - var spOp *api.TimeSeriesResponse_TimeSeriesValues + var spOp *runtimev1.TimeSeriesResponse_TimeSeriesValues if request.Pixels != nil { pixels := int(*request.Pixels) sparkValues, er := s.createTimestampRollupReduction(ctx, request.InstanceId, "_ts_", "ts", "count", pixels) if er != nil { return nil, er } - spOp = &api.TimeSeriesResponse_TimeSeriesValues{ + spOp = &runtimev1.TimeSeriesResponse_TimeSeriesValues{ Values: sparkValues, } } - return &api.GenerateTimeSeriesResponse{ - Rollup: &api.TimeSeriesResponse{ + return &runtimev1.GenerateTimeSeriesResponse{ + Rollup: &runtimev1.TimeSeriesResponse{ Results: results, TimeRange: timeRange, Spark: spOp, @@ -496,7 +496,7 @@ func (s *Server) GenerateTimeSeries(ctx context.Context, request *api.GenerateTi }, nil } -func getFilterFromTimeRange(timestampColumn string, timeRange *api.TimeSeriesTimeRange) string { +func getFilterFromTimeRange(timestampColumn string, timeRange *runtimev1.TimeSeriesTimeRange) string { var conditions []string escapedTimestampColumn := EscapeDoubleQuotes(timestampColumn) if timeRange.Start != nil { @@ -509,12 +509,12 @@ func getFilterFromTimeRange(timestampColumn string, timeRange *api.TimeSeriesTim return strings.Join(conditions, " AND ") } -func convertRowsToTimeSeriesValues(rows *drivers.Result, rowLength int) ([]*api.TimeSeriesValue, error) { - results := make([]*api.TimeSeriesValue, 0) +func convertRowsToTimeSeriesValues(rows *drivers.Result, rowLength int) ([]*runtimev1.TimeSeriesValue, error) { + results := make([]*runtimev1.TimeSeriesValue, 0) defer rows.Close() var converr error for rows.Next() { - value := api.TimeSeriesValue{} + value := runtimev1.TimeSeriesValue{} results = append(results, &value) row := make(map[string]interface{}, rowLength) err := rows.MapScan(row) diff --git a/runtime/server/timeseries_api_test.go b/runtime/server/timeseries_api_test.go index b111ccf0f29..78ab8462802 100644 --- a/runtime/server/timeseries_api_test.go +++ b/runtime/server/timeseries_api_test.go @@ -2,17 +2,15 @@ package server import ( "context" + "fmt" "testing" "time" "github.com/marcboeker/go-duckdb" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" + "github.com/rilldata/rill/runtime/drivers" "github.com/stretchr/testify/require" structpb "google.golang.org/protobuf/types/known/structpb" - - "fmt" - - "github.com/rilldata/rill/runtime/api" - "github.com/rilldata/rill/runtime/drivers" ) func CreateSimpleTimeseriesTable(server *Server, instanceId string, t *testing.T, tableName string) *drivers.Result { @@ -70,11 +68,11 @@ func TestServer_Timeseries(t *testing.T) { require.Equal(t, 2, getSingleValue(t, result.Rows)) mx := "max" - response, err := server.GenerateTimeSeries(context.Background(), &api.GenerateTimeSeriesRequest{ + response, err := server.GenerateTimeSeries(context.Background(), &runtimev1.GenerateTimeSeriesRequest{ InstanceId: instanceId, TableName: "timeseries", - Measures: &api.GenerateTimeSeriesRequest_BasicMeasures{ - BasicMeasures: []*api.BasicMeasureDefinition{ + Measures: &runtimev1.GenerateTimeSeriesRequest_BasicMeasures{ + BasicMeasures: []*runtimev1.BasicMeasureDefinition{ { Expression: "max(clicks)", SqlName: &mx, @@ -82,13 +80,13 @@ func TestServer_Timeseries(t *testing.T) { }, }, TimestampColumnName: "time", - TimeRange: &api.TimeSeriesTimeRange{ + TimeRange: &runtimev1.TimeSeriesTimeRange{ Start: parseTime(t, "2019-01-01T00:00:00Z"), End: parseTime(t, "2019-12-01T00:00:00Z"), - Interval: api.TimeGrain_TIME_GRAIN_YEAR, + Interval: runtimev1.TimeGrain_TIME_GRAIN_YEAR, }, - Filters: &api.MetricsViewRequestFilter{ - Include: []*api.MetricsViewDimensionValue{ + Filters: &runtimev1.MetricsViewRequestFilter{ + Include: []*runtimev1.MetricsViewDimensionValue{ { Name: "device", In: []*structpb.Value{structpb.NewStringValue("android"), structpb.NewStringValue("iphone")}, @@ -112,11 +110,11 @@ func TestServer_Timeseries_2measures(t *testing.T) { mx := "max" sm := "sum" - response, err := server.GenerateTimeSeries(context.Background(), &api.GenerateTimeSeriesRequest{ + response, err := server.GenerateTimeSeries(context.Background(), &runtimev1.GenerateTimeSeriesRequest{ InstanceId: instanceId, TableName: "timeseries", - Measures: &api.GenerateTimeSeriesRequest_BasicMeasures{ - BasicMeasures: []*api.BasicMeasureDefinition{ + Measures: &runtimev1.GenerateTimeSeriesRequest_BasicMeasures{ + BasicMeasures: []*runtimev1.BasicMeasureDefinition{ { Expression: "max(clicks)", SqlName: &mx, @@ -128,13 +126,13 @@ func TestServer_Timeseries_2measures(t *testing.T) { }, }, TimestampColumnName: "time", - TimeRange: &api.TimeSeriesTimeRange{ + TimeRange: &runtimev1.TimeSeriesTimeRange{ Start: parseTime(t, "2019-01-01T00:00:00Z"), End: parseTime(t, "2019-12-01T00:00:00Z"), - Interval: api.TimeGrain_TIME_GRAIN_YEAR, + Interval: runtimev1.TimeGrain_TIME_GRAIN_YEAR, }, - Filters: &api.MetricsViewRequestFilter{ - Include: []*api.MetricsViewDimensionValue{ + Filters: &runtimev1.MetricsViewRequestFilter{ + Include: []*runtimev1.MetricsViewDimensionValue{ { Name: "device", In: []*structpb.Value{structpb.NewStringValue("android"), structpb.NewStringValue("iphone")}, @@ -158,11 +156,11 @@ func TestServer_Timeseries_1dim(t *testing.T) { require.Equal(t, 2, getSingleValue(t, result.Rows)) sm := "sum" - response, err := server.GenerateTimeSeries(context.Background(), &api.GenerateTimeSeriesRequest{ + response, err := server.GenerateTimeSeries(context.Background(), &runtimev1.GenerateTimeSeriesRequest{ InstanceId: instanceId, TableName: "timeseries", - Measures: &api.GenerateTimeSeriesRequest_BasicMeasures{ - BasicMeasures: []*api.BasicMeasureDefinition{ + Measures: &runtimev1.GenerateTimeSeriesRequest_BasicMeasures{ + BasicMeasures: []*runtimev1.BasicMeasureDefinition{ { Expression: "sum(clicks)", SqlName: &sm, @@ -170,13 +168,13 @@ func TestServer_Timeseries_1dim(t *testing.T) { }, }, TimestampColumnName: "time", - TimeRange: &api.TimeSeriesTimeRange{ + TimeRange: &runtimev1.TimeSeriesTimeRange{ Start: parseTime(t, "2019-01-01T00:00:00Z"), End: parseTime(t, "2019-12-01T00:00:00Z"), - Interval: api.TimeGrain_TIME_GRAIN_YEAR, + Interval: runtimev1.TimeGrain_TIME_GRAIN_YEAR, }, - Filters: &api.MetricsViewRequestFilter{ - Include: []*api.MetricsViewDimensionValue{ + Filters: &runtimev1.MetricsViewRequestFilter{ + Include: []*runtimev1.MetricsViewDimensionValue{ { Name: "device", In: []*structpb.Value{structpb.NewStringValue("android")}, @@ -192,7 +190,7 @@ func TestServer_Timeseries_1dim(t *testing.T) { require.Equal(t, 1.0, results[0].Records["sum"]) } -func printResults(results []*api.TimeSeriesValue) { +func printResults(results []*runtimev1.TimeSeriesValue) { for _, result := range results { fmt.Printf("%v ", result.Ts) for k, value := range result.Records { @@ -209,11 +207,11 @@ func TestServer_Timeseries_1day(t *testing.T) { require.Equal(t, 2, getSingleValue(t, result.Rows)) mx := "max" - response, err := server.GenerateTimeSeries(context.Background(), &api.GenerateTimeSeriesRequest{ + response, err := server.GenerateTimeSeries(context.Background(), &runtimev1.GenerateTimeSeriesRequest{ InstanceId: instanceId, TableName: "timeseries", - Measures: &api.GenerateTimeSeriesRequest_BasicMeasures{ - BasicMeasures: []*api.BasicMeasureDefinition{ + Measures: &runtimev1.GenerateTimeSeriesRequest_BasicMeasures{ + BasicMeasures: []*runtimev1.BasicMeasureDefinition{ { Expression: "max(clicks)", SqlName: &mx, @@ -221,13 +219,13 @@ func TestServer_Timeseries_1day(t *testing.T) { }, }, TimestampColumnName: "time", - TimeRange: &api.TimeSeriesTimeRange{ + TimeRange: &runtimev1.TimeSeriesTimeRange{ Start: parseTime(t, "2019-01-01T00:00:00Z"), End: parseTime(t, "2019-01-02T00:00:00Z"), - Interval: api.TimeGrain_TIME_GRAIN_DAY, + Interval: runtimev1.TimeGrain_TIME_GRAIN_DAY, }, - Filters: &api.MetricsViewRequestFilter{ - Include: []*api.MetricsViewDimensionValue{ + Filters: &runtimev1.MetricsViewRequestFilter{ + Include: []*runtimev1.MetricsViewDimensionValue{ { Name: "device", In: []*structpb.Value{structpb.NewStringValue("android"), structpb.NewStringValue("iphone")}, @@ -248,11 +246,11 @@ func TestServer_Timeseries_1day_Count(t *testing.T) { require.Equal(t, 2, getSingleValue(t, result.Rows)) cnt := "count" - response, err := server.GenerateTimeSeries(context.Background(), &api.GenerateTimeSeriesRequest{ + response, err := server.GenerateTimeSeries(context.Background(), &runtimev1.GenerateTimeSeriesRequest{ InstanceId: instanceId, TableName: "timeseries", - Measures: &api.GenerateTimeSeriesRequest_BasicMeasures{ - BasicMeasures: []*api.BasicMeasureDefinition{ + Measures: &runtimev1.GenerateTimeSeriesRequest_BasicMeasures{ + BasicMeasures: []*runtimev1.BasicMeasureDefinition{ { Expression: "count(*)", SqlName: &cnt, @@ -260,13 +258,13 @@ func TestServer_Timeseries_1day_Count(t *testing.T) { }, }, TimestampColumnName: "time", - TimeRange: &api.TimeSeriesTimeRange{ + TimeRange: &runtimev1.TimeSeriesTimeRange{ Start: parseTime(t, "2019-01-01T00:00:00Z"), End: parseTime(t, "2019-01-02T00:00:00Z"), - Interval: api.TimeGrain_TIME_GRAIN_DAY, + Interval: runtimev1.TimeGrain_TIME_GRAIN_DAY, }, - Filters: &api.MetricsViewRequestFilter{ - Include: []*api.MetricsViewDimensionValue{ + Filters: &runtimev1.MetricsViewRequestFilter{ + Include: []*runtimev1.MetricsViewDimensionValue{ { Name: "device", In: []*structpb.Value{structpb.NewStringValue("android"), structpb.NewStringValue("iphone")}, @@ -304,10 +302,10 @@ func TestServer_normaliseTimeRange(t *testing.T) { result := CreateSimpleTimeseriesTable(server, instanceId, t, "timeseries") require.Equal(t, 2, getSingleValue(t, result.Rows)) - r := &api.TimeSeriesTimeRange{ - Interval: api.TimeGrain_TIME_GRAIN_UNSPECIFIED, + r := &runtimev1.TimeSeriesTimeRange{ + Interval: runtimev1.TimeGrain_TIME_GRAIN_UNSPECIFIED, } - r, err := server.normaliseTimeRange(context.Background(), &api.GenerateTimeSeriesRequest{ + r, err := server.normaliseTimeRange(context.Background(), &runtimev1.GenerateTimeSeriesRequest{ InstanceId: instanceId, TimeRange: r, TableName: "timeseries", @@ -316,7 +314,7 @@ func TestServer_normaliseTimeRange(t *testing.T) { require.NoError(t, err) require.Equal(t, parseTime(t, "2019-01-01T00:00:00.000Z"), r.Start) require.Equal(t, parseTime(t, "2019-01-02T00:00:00.000Z"), r.End) - require.Equal(t, api.TimeGrain_TIME_GRAIN_HOUR, r.Interval) + require.Equal(t, runtimev1.TimeGrain_TIME_GRAIN_HOUR, r.Interval) } func TestServer_normaliseTimeRange_NoEnd(t *testing.T) { @@ -324,11 +322,11 @@ func TestServer_normaliseTimeRange_NoEnd(t *testing.T) { result := CreateSimpleTimeseriesTable(server, instanceId, t, "timeseries") require.Equal(t, 2, getSingleValue(t, result.Rows)) - r := &api.TimeSeriesTimeRange{ - Interval: api.TimeGrain_TIME_GRAIN_UNSPECIFIED, + r := &runtimev1.TimeSeriesTimeRange{ + Interval: runtimev1.TimeGrain_TIME_GRAIN_UNSPECIFIED, Start: parseTime(t, "2018-01-01T00:00:00Z"), } - r, err := server.normaliseTimeRange(context.Background(), &api.GenerateTimeSeriesRequest{ + r, err := server.normaliseTimeRange(context.Background(), &runtimev1.GenerateTimeSeriesRequest{ InstanceId: instanceId, TimeRange: r, TableName: "timeseries", @@ -337,7 +335,7 @@ func TestServer_normaliseTimeRange_NoEnd(t *testing.T) { require.NoError(t, err) require.Equal(t, parseTime(t, "2018-01-01T00:00:00Z"), r.Start) require.Equal(t, parseTime(t, "2019-01-02T00:00:00.000Z"), r.End) - require.Equal(t, api.TimeGrain_TIME_GRAIN_HOUR, r.Interval) + require.Equal(t, runtimev1.TimeGrain_TIME_GRAIN_HOUR, r.Interval) } func TestServer_normaliseTimeRange_Specified(t *testing.T) { @@ -345,11 +343,11 @@ func TestServer_normaliseTimeRange_Specified(t *testing.T) { result := CreateSimpleTimeseriesTable(server, instanceId, t, "timeseries") require.Equal(t, 2, getSingleValue(t, result.Rows)) - r := &api.TimeSeriesTimeRange{ - Interval: api.TimeGrain_TIME_GRAIN_YEAR, + r := &runtimev1.TimeSeriesTimeRange{ + Interval: runtimev1.TimeGrain_TIME_GRAIN_YEAR, Start: parseTime(t, "2018-01-01T00:00:00Z"), } - r, err := server.normaliseTimeRange(context.Background(), &api.GenerateTimeSeriesRequest{ + r, err := server.normaliseTimeRange(context.Background(), &runtimev1.GenerateTimeSeriesRequest{ InstanceId: instanceId, TimeRange: r, TableName: "timeseries", @@ -358,7 +356,7 @@ func TestServer_normaliseTimeRange_Specified(t *testing.T) { require.NoError(t, err) require.Equal(t, parseTime(t, "2018-01-01T00:00:00Z"), r.Start) require.Equal(t, parseTime(t, "2019-01-02T00:00:00.000Z"), r.End) - require.Equal(t, api.TimeGrain_TIME_GRAIN_YEAR, r.Interval) + require.Equal(t, runtimev1.TimeGrain_TIME_GRAIN_YEAR, r.Interval) } func CreateAggregatedTableForSpark(server *Server, instanceId string, t *testing.T, tableName string) *drivers.Result { diff --git a/runtime/services/catalog/artifacts/artifacts.go b/runtime/services/catalog/artifacts/artifacts.go index 0b2d3a303a8..076a28c5b75 100644 --- a/runtime/services/catalog/artifacts/artifacts.go +++ b/runtime/services/catalog/artifacts/artifacts.go @@ -6,7 +6,7 @@ import ( "fmt" "path/filepath" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" ) @@ -22,11 +22,11 @@ func Register(name string, artifact Artifact) { } type Artifact interface { - DeSerialise(ctx context.Context, filePath string, blob string) (*api.CatalogObject, error) - Serialise(ctx context.Context, catalogObject *api.CatalogObject) (string, error) + DeSerialise(ctx context.Context, filePath string, blob string) (*runtimev1.CatalogObject, error) + Serialise(ctx context.Context, catalogObject *runtimev1.CatalogObject) (string, error) } -func Read(ctx context.Context, repoStore drivers.RepoStore, repoId string, filePath string) (*api.CatalogObject, error) { +func Read(ctx context.Context, repoStore drivers.RepoStore, repoId string, filePath string) (*runtimev1.CatalogObject, error) { extension := filepath.Ext(filePath) artifact, ok := Artifacts[extension] if !ok { @@ -47,7 +47,7 @@ func Read(ctx context.Context, repoStore drivers.RepoStore, repoId string, fileP return catalog, nil } -func Write(ctx context.Context, repoStore drivers.RepoStore, repoId string, catalog *api.CatalogObject) error { +func Write(ctx context.Context, repoStore drivers.RepoStore, repoId string, catalog *runtimev1.CatalogObject) error { extension := filepath.Ext(catalog.Path) artifact, ok := Artifacts[extension] if !ok { diff --git a/runtime/services/catalog/artifacts/artifacts_test.go b/runtime/services/catalog/artifacts/artifacts_test.go index 0cbc3bd1983..ae64ffb8750 100644 --- a/runtime/services/catalog/artifacts/artifacts_test.go +++ b/runtime/services/catalog/artifacts/artifacts_test.go @@ -7,7 +7,7 @@ import ( "path" "testing" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" _ "github.com/rilldata/rill/runtime/drivers/file" "github.com/rilldata/rill/runtime/services/catalog/artifacts" @@ -22,16 +22,16 @@ func TestSourceReadWrite(t *testing.T) { // Adding explicit name and using it in the title, // adds the run button on goland for each test case. Name string - Catalog *api.CatalogObject + Catalog *runtimev1.CatalogObject Raw string }{ { "Source", - &api.CatalogObject{ + &runtimev1.CatalogObject{ Name: "Source", Path: "sources/Source.yaml", - Type: api.CatalogObject_TYPE_SOURCE, - Source: &api.Source{ + Type: runtimev1.CatalogObject_TYPE_SOURCE, + Source: &runtimev1.Source{ Name: "Source", Connector: "file", Properties: toProtoStruct(map[string]any{ @@ -46,11 +46,11 @@ path: data/source.csv }, { "S3Source", - &api.CatalogObject{ + &runtimev1.CatalogObject{ Name: "S3Source", Path: "sources/S3Source.yaml", - Type: api.CatalogObject_TYPE_SOURCE, - Source: &api.Source{ + Type: runtimev1.CatalogObject_TYPE_SOURCE, + Source: &runtimev1.Source{ Name: "S3Source", Connector: "s3", Properties: toProtoStruct(map[string]any{ @@ -67,30 +67,30 @@ region: us-east-2 }, { "Model", - &api.CatalogObject{ + &runtimev1.CatalogObject{ Name: "Model", Path: "models/Model.sql", - Type: api.CatalogObject_TYPE_MODEL, - Model: &api.Model{ + Type: runtimev1.CatalogObject_TYPE_MODEL, + Model: &runtimev1.Model{ Name: "Model", Sql: "select * from A", - Dialect: api.Model_DIALECT_DUCKDB, + Dialect: runtimev1.Model_DIALECT_DUCKDB, }, }, "select * from A", }, { "MetricsView", - &api.CatalogObject{ + &runtimev1.CatalogObject{ Name: "MetricsView", Path: "dashboards/MetricsView.yaml", - Type: api.CatalogObject_TYPE_METRICS_VIEW, - MetricsView: &api.MetricsView{ + Type: runtimev1.CatalogObject_TYPE_METRICS_VIEW, + MetricsView: &runtimev1.MetricsView{ Name: "MetricsView", From: "Model", TimeDimension: "time", TimeGrains: []string{"1 day", "1 month"}, - Dimensions: []*api.MetricsView_Dimension{ + Dimensions: []*runtimev1.MetricsView_Dimension{ { Name: "dim0", Label: "Dim0_L", @@ -102,7 +102,7 @@ region: us-east-2 Description: "Dim1_D", }, }, - Measures: []*api.MetricsView_Measure{ + Measures: []*runtimev1.MetricsView_Measure{ { Name: "measure_0", Label: "Mea0_L", diff --git a/runtime/services/catalog/artifacts/sql/sql.go b/runtime/services/catalog/artifacts/sql/sql.go index d7b79597d32..71b392801dd 100644 --- a/runtime/services/catalog/artifacts/sql/sql.go +++ b/runtime/services/catalog/artifacts/sql/sql.go @@ -6,7 +6,7 @@ import ( "path" "strings" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/pkg/fileutil" "github.com/rilldata/rill/runtime/services/catalog/artifacts" ) @@ -23,24 +23,24 @@ func init() { artifacts.Register(".sql", &artifact{}) } -func (r *artifact) DeSerialise(ctx context.Context, filePath string, blob string) (*api.CatalogObject, error) { +func (r *artifact) DeSerialise(ctx context.Context, filePath string, blob string) (*runtimev1.CatalogObject, error) { ext := fileutil.FullExt(filePath) fileName := path.Base(filePath) name := strings.TrimSuffix(fileName, ext) - return &api.CatalogObject{ - Type: api.CatalogObject_TYPE_MODEL, - Model: &api.Model{ + return &runtimev1.CatalogObject{ + Type: runtimev1.CatalogObject_TYPE_MODEL, + Model: &runtimev1.Model{ Name: name, Sql: blob, - Dialect: api.Model_DIALECT_DUCKDB, + Dialect: runtimev1.Model_DIALECT_DUCKDB, }, Name: name, Path: filePath, }, nil } -func (r *artifact) Serialise(ctx context.Context, catalogObject *api.CatalogObject) (string, error) { - if catalogObject.Type != api.CatalogObject_TYPE_MODEL { +func (r *artifact) Serialise(ctx context.Context, catalogObject *runtimev1.CatalogObject) (string, error) { + if catalogObject.Type != runtimev1.CatalogObject_TYPE_MODEL { return "", NotSupported } return catalogObject.Model.Sql, nil diff --git a/runtime/services/catalog/artifacts/yaml/objects.go b/runtime/services/catalog/artifacts/yaml/objects.go index ff0da47a5fc..a13c932ff91 100644 --- a/runtime/services/catalog/artifacts/yaml/objects.go +++ b/runtime/services/catalog/artifacts/yaml/objects.go @@ -6,7 +6,7 @@ import ( "strings" "github.com/jinzhu/copier" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/pkg/fileutil" "google.golang.org/protobuf/types/known/structpb" ) @@ -50,7 +50,7 @@ type Dimension struct { Description string } -func toSourceArtifact(catalog *api.CatalogObject) (*Source, error) { +func toSourceArtifact(catalog *runtimev1.CatalogObject) (*Source, error) { source := &Source{ Version: Version, Type: catalog.Source.Connector, @@ -73,7 +73,7 @@ func toSourceArtifact(catalog *api.CatalogObject) (*Source, error) { return source, nil } -func toMetricsViewArtifact(catalog *api.CatalogObject) (*MetricsView, error) { +func toMetricsViewArtifact(catalog *runtimev1.CatalogObject) (*MetricsView, error) { metricsArtifact := &MetricsView{} err := copier.Copy(metricsArtifact, catalog.MetricsView) if err != nil { @@ -84,7 +84,7 @@ func toMetricsViewArtifact(catalog *api.CatalogObject) (*MetricsView, error) { return metricsArtifact, nil } -func fromSourceArtifact(source *Source, path string) (*api.CatalogObject, error) { +func fromSourceArtifact(source *Source, path string) (*runtimev1.CatalogObject, error) { props := map[string]interface{}{} if source.Type == "file" { props["path"] = source.Path @@ -100,11 +100,11 @@ func fromSourceArtifact(source *Source, path string) (*api.CatalogObject, error) } name := strings.TrimSuffix(filepath.Base(path), fileutil.FullExt(path)) - return &api.CatalogObject{ + return &runtimev1.CatalogObject{ Name: name, - Type: api.CatalogObject_TYPE_SOURCE, + Type: runtimev1.CatalogObject_TYPE_SOURCE, Path: path, - Source: &api.Source{ + Source: &runtimev1.Source{ Name: name, Connector: source.Type, Properties: propsPB, @@ -112,8 +112,8 @@ func fromSourceArtifact(source *Source, path string) (*api.CatalogObject, error) }, nil } -func fromMetricsViewArtifact(metrics *MetricsView, path string) (*api.CatalogObject, error) { - apiMetrics := &api.MetricsView{} +func fromMetricsViewArtifact(metrics *MetricsView, path string) (*runtimev1.CatalogObject, error) { + apiMetrics := &runtimev1.MetricsView{} err := copier.Copy(apiMetrics, metrics) if err != nil { return nil, err @@ -126,9 +126,9 @@ func fromMetricsViewArtifact(metrics *MetricsView, path string) (*api.CatalogObj name := strings.TrimSuffix(filepath.Base(path), fileutil.FullExt(path)) apiMetrics.Name = name - return &api.CatalogObject{ + return &runtimev1.CatalogObject{ Name: name, - Type: api.CatalogObject_TYPE_METRICS_VIEW, + Type: runtimev1.CatalogObject_TYPE_METRICS_VIEW, Path: path, MetricsView: apiMetrics, }, nil diff --git a/runtime/services/catalog/artifacts/yaml/yaml.go b/runtime/services/catalog/artifacts/yaml/yaml.go index 01a2bd21f09..d2a617d137d 100644 --- a/runtime/services/catalog/artifacts/yaml/yaml.go +++ b/runtime/services/catalog/artifacts/yaml/yaml.go @@ -7,7 +7,7 @@ import ( "path/filepath" "github.com/go-yaml/yaml" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/services/catalog/artifacts" ) @@ -19,7 +19,7 @@ func init() { artifacts.Register(".yaml", &artifact{}) } -func (r *artifact) DeSerialise(ctx context.Context, filePath string, blob string) (*api.CatalogObject, error) { +func (r *artifact) DeSerialise(ctx context.Context, filePath string, blob string) (*runtimev1.CatalogObject, error) { dir := filepath.Base(filepath.Dir(filePath)) switch dir { case "sources": @@ -41,9 +41,9 @@ func (r *artifact) DeSerialise(ctx context.Context, filePath string, blob string return nil, NotSupported } -func (r *artifact) Serialise(ctx context.Context, catalogObject *api.CatalogObject) (string, error) { +func (r *artifact) Serialise(ctx context.Context, catalogObject *runtimev1.CatalogObject) (string, error) { switch catalogObject.Type { - case api.CatalogObject_TYPE_SOURCE: + case runtimev1.CatalogObject_TYPE_SOURCE: source, err := toSourceArtifact(catalogObject) if err != nil { return "", err @@ -53,7 +53,7 @@ func (r *artifact) Serialise(ctx context.Context, catalogObject *api.CatalogObje return "", err } return string(out), nil - case api.CatalogObject_TYPE_METRICS_VIEW: + case runtimev1.CatalogObject_TYPE_METRICS_VIEW: metrics, err := toMetricsViewArtifact(catalogObject) if err != nil { return "", err diff --git a/runtime/services/catalog/catalog.go b/runtime/services/catalog/catalog.go index 0e1d099681a..716ce60aeb8 100644 --- a/runtime/services/catalog/catalog.go +++ b/runtime/services/catalog/catalog.go @@ -4,7 +4,7 @@ import ( "context" "time" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" "github.com/rilldata/rill/runtime/pkg/dag" "google.golang.org/grpc/codes" @@ -51,10 +51,10 @@ func NewService( func (s *Service) ListObjects( ctx context.Context, - typ api.CatalogObject_Type, -) ([]*api.CatalogObject, error) { + typ runtimev1.CatalogObject_Type, +) ([]*runtimev1.CatalogObject, error) { objs := s.Catalog.FindObjects(ctx, s.InstId, catalogObjectTypeFromPB(typ)) - pbs := make([]*api.CatalogObject, len(objs)) + pbs := make([]*runtimev1.CatalogObject, len(objs)) var err error for i, obj := range objs { pbs[i], err = catalogObjectToPB(obj) @@ -69,7 +69,7 @@ func (s *Service) ListObjects( func (s *Service) GetCatalogObject( ctx context.Context, name string, -) (*api.CatalogObject, error) { +) (*runtimev1.CatalogObject, error) { obj, found := s.Catalog.FindObject(ctx, s.InstId, name) if !found { return nil, status.Error(codes.InvalidArgument, "object not found") diff --git a/runtime/services/catalog/catalog_to_protobuf.go b/runtime/services/catalog/catalog_to_protobuf.go index ce25fc9e5fb..2a99e1c9739 100644 --- a/runtime/services/catalog/catalog_to_protobuf.go +++ b/runtime/services/catalog/catalog_to_protobuf.go @@ -3,7 +3,7 @@ package catalog import ( "fmt" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" "github.com/rilldata/rill/runtime/services/catalog/migrator/sources" "google.golang.org/protobuf/proto" @@ -11,8 +11,8 @@ import ( "google.golang.org/protobuf/types/known/timestamppb" ) -func catalogObjectToPB(obj *drivers.CatalogObject) (*api.CatalogObject, error) { - catalog := &api.CatalogObject{ +func catalogObjectToPB(obj *drivers.CatalogObject) (*runtimev1.CatalogObject, error) { + catalog := &runtimev1.CatalogObject{ Name: obj.Name, Path: obj.Path, CreatedOn: timestamppb.New(obj.CreatedOn), @@ -26,7 +26,7 @@ func catalogObjectToPB(obj *drivers.CatalogObject) (*api.CatalogObject, error) { if err != nil { return nil, err } - catalog.Type = api.CatalogObject_TYPE_SOURCE + catalog.Type = runtimev1.CatalogObject_TYPE_SOURCE catalog.Source = src case drivers.CatalogObjectTypeModel: @@ -34,7 +34,7 @@ func catalogObjectToPB(obj *drivers.CatalogObject) (*api.CatalogObject, error) { if err != nil { return nil, err } - catalog.Type = api.CatalogObject_TYPE_MODEL + catalog.Type = runtimev1.CatalogObject_TYPE_MODEL catalog.Model = model case drivers.CatalogObjectTypeMetricsView: @@ -42,7 +42,7 @@ func catalogObjectToPB(obj *drivers.CatalogObject) (*api.CatalogObject, error) { if err != nil { return nil, err } - catalog.Type = api.CatalogObject_TYPE_METRICS_VIEW + catalog.Type = runtimev1.CatalogObject_TYPE_METRICS_VIEW catalog.MetricsView = metricsView default: @@ -52,9 +52,9 @@ func catalogObjectToPB(obj *drivers.CatalogObject) (*api.CatalogObject, error) { return catalog, nil } -func catalogObjectSourceToPB(obj *drivers.CatalogObject) (*api.Source, error) { +func catalogObjectSourceToPB(obj *drivers.CatalogObject) (*runtimev1.Source, error) { if obj.SQL == "" { - source := &api.Source{} + source := &runtimev1.Source{} err := proto.Unmarshal(obj.Definition, source) if err != nil { return nil, err @@ -72,7 +72,7 @@ func catalogObjectSourceToPB(obj *drivers.CatalogObject) (*api.Source, error) { panic(err) // TODO: Should never happen, but maybe handle defensively? } - return &api.Source{ + return &runtimev1.Source{ Sql: obj.SQL, Name: obj.Name, Connector: source.Connector, @@ -80,16 +80,16 @@ func catalogObjectSourceToPB(obj *drivers.CatalogObject) (*api.Source, error) { }, nil } -func catalogObjectModelToPB(obj *drivers.CatalogObject) (*api.Model, error) { - return &api.Model{ +func catalogObjectModelToPB(obj *drivers.CatalogObject) (*runtimev1.Model, error) { + return &runtimev1.Model{ Name: obj.Name, Sql: obj.SQL, - Dialect: api.Model_DIALECT_DUCKDB, + Dialect: runtimev1.Model_DIALECT_DUCKDB, }, nil } -func catalogObjectMetricsViewToPB(obj *drivers.CatalogObject) (*api.MetricsView, error) { - var metricsView api.MetricsView +func catalogObjectMetricsViewToPB(obj *drivers.CatalogObject) (*runtimev1.MetricsView, error) { + var metricsView runtimev1.MetricsView err := proto.Unmarshal(obj.Definition, &metricsView) return &metricsView, err } diff --git a/runtime/services/catalog/migrations.go b/runtime/services/catalog/migrations.go index e2d46ce87ea..4a868b71167 100644 --- a/runtime/services/catalog/migrations.go +++ b/runtime/services/catalog/migrations.go @@ -4,7 +4,7 @@ import ( "context" "time" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" "github.com/rilldata/rill/runtime/pkg/arrayutil" "github.com/rilldata/rill/runtime/pkg/dag" @@ -21,13 +21,13 @@ import ( type MigrationItem struct { Name string Path string - CatalogInFile *api.CatalogObject - CatalogInStore *api.CatalogObject + CatalogInFile *runtimev1.CatalogObject + CatalogInStore *runtimev1.CatalogObject Type int FromName string FromPath string Dependencies []string - Error *api.MigrationError + Error *runtimev1.MigrationError } func (i *MigrationItem) renameFrom(from *MigrationItem) { @@ -52,20 +52,20 @@ type MigrationConfig struct { } type MigrationResult struct { - AddedObjects []*api.CatalogObject - UpdatedObjects []*api.CatalogObject - DroppedObjects []*api.CatalogObject + AddedObjects []*runtimev1.CatalogObject + UpdatedObjects []*runtimev1.CatalogObject + DroppedObjects []*runtimev1.CatalogObject AffectedPaths []string - Errors []*api.MigrationError + Errors []*runtimev1.MigrationError } func NewMigrationResult() *MigrationResult { return &MigrationResult{ - AddedObjects: make([]*api.CatalogObject, 0), - UpdatedObjects: make([]*api.CatalogObject, 0), - DroppedObjects: make([]*api.CatalogObject, 0), + AddedObjects: make([]*runtimev1.CatalogObject, 0), + UpdatedObjects: make([]*runtimev1.CatalogObject, 0), + DroppedObjects: make([]*runtimev1.CatalogObject, 0), AffectedPaths: make([]string, 0), - Errors: make([]*api.MigrationError, 0), + Errors: make([]*runtimev1.MigrationError, 0), } } @@ -193,8 +193,8 @@ func (s *Service) collectRepos(ctx context.Context, conf MigrationConfig, result } else { errPath = item.Path } - result.Errors = append(result.Errors, &api.MigrationError{ - Code: api.MigrationError_CODE_UNSPECIFIED, + result.Errors = append(result.Errors, &runtimev1.MigrationError{ + Code: runtimev1.MigrationError_CODE_UNSPECIFIED, Message: "item with same name exists", FilePath: errPath, }) @@ -316,8 +316,8 @@ func (s *Service) getMigrationItem( catalog, err := artifacts.Read(ctx, s.Repo, s.RepoId, repoPath) if err != nil { if err != artifacts.FileReadError { - item.Error = &api.MigrationError{ - Code: api.MigrationError_CODE_SYNTAX, + item.Error = &runtimev1.MigrationError{ + Code: runtimev1.MigrationError_CODE_SYNTAX, Message: err.Error(), FilePath: repoPath, } @@ -501,16 +501,16 @@ func (s *Service) runMigrationItems( } if err != nil { - result.Errors = append(result.Errors, &api.MigrationError{ - Code: api.MigrationError_CODE_OLAP, + result.Errors = append(result.Errors, &runtimev1.MigrationError{ + Code: runtimev1.MigrationError_CODE_OLAP, Message: err.Error(), FilePath: item.Path, }) err := s.Catalog.DeleteObject(ctx, s.InstId, item.Name) if err != nil { // shouldn't ideally happen - result.Errors = append(result.Errors, &api.MigrationError{ - Code: api.MigrationError_CODE_OLAP, + result.Errors = append(result.Errors, &runtimev1.MigrationError{ + Code: runtimev1.MigrationError_CODE_OLAP, Message: err.Error(), FilePath: item.Path, }) @@ -519,8 +519,8 @@ func (s *Service) runMigrationItems( err := migrator.Delete(ctx, s.Olap, item.CatalogInFile) if err != nil { // shouldn't ideally happen - result.Errors = append(result.Errors, &api.MigrationError{ - Code: api.MigrationError_CODE_OLAP, + result.Errors = append(result.Errors, &runtimev1.MigrationError{ + Code: runtimev1.MigrationError_CODE_OLAP, Message: err.Error(), FilePath: item.Path, }) diff --git a/runtime/services/catalog/migrations_test.go b/runtime/services/catalog/migrations_test.go index be65ac73915..20b2e397d58 100644 --- a/runtime/services/catalog/migrations_test.go +++ b/runtime/services/catalog/migrations_test.go @@ -7,7 +7,7 @@ import ( "path/filepath" "testing" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" _ "github.com/rilldata/rill/runtime/drivers/duckdb" _ "github.com/rilldata/rill/runtime/drivers/file" @@ -340,12 +340,12 @@ func initBasicService(t *testing.T) (*catalog.Service, string) { testutils.AssertMigration(t, result, 0, 1, 0, 0, []string{AdBidsModelRepoPath}) testutils.AssertTable(t, s, "AdBids_model", AdBidsModelRepoPath) - testutils.CreateMetricsView(t, s, &api.MetricsView{ + testutils.CreateMetricsView(t, s, &runtimev1.MetricsView{ Name: "AdBids_dashboard", From: "AdBids_model", TimeDimension: "timestamp", TimeGrains: []string{"1 day", "1 month"}, - Dimensions: []*api.MetricsView_Dimension{ + Dimensions: []*runtimev1.MetricsView_Dimension{ { Name: "publisher", Label: "Publisher", @@ -355,7 +355,7 @@ func initBasicService(t *testing.T) (*catalog.Service, string) { Label: "Domain", }, }, - Measures: []*api.MetricsView_Measure{ + Measures: []*runtimev1.MetricsView_Measure{ { Expression: "count(*)", }, diff --git a/runtime/services/catalog/migrator/metrics_views/metrics_views.go b/runtime/services/catalog/migrator/metrics_views/metrics_views.go index 684b65f0bd5..ec6ba65432d 100644 --- a/runtime/services/catalog/migrator/metrics_views/metrics_views.go +++ b/runtime/services/catalog/migrator/metrics_views/metrics_views.go @@ -5,7 +5,7 @@ import ( "errors" "fmt" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" "github.com/rilldata/rill/runtime/services/catalog/migrator" ) @@ -21,27 +21,27 @@ var TimestampNotFound = errors.New("metrics view selected timestamp not found") type metricsViewMigrator struct{} -func (m *metricsViewMigrator) Create(ctx context.Context, olap drivers.OLAPStore, repo drivers.RepoStore, catalogObj *api.CatalogObject) error { +func (m *metricsViewMigrator) Create(ctx context.Context, olap drivers.OLAPStore, repo drivers.RepoStore, catalogObj *runtimev1.CatalogObject) error { return nil } -func (m *metricsViewMigrator) Update(ctx context.Context, olap drivers.OLAPStore, repo drivers.RepoStore, catalogObj *api.CatalogObject) error { +func (m *metricsViewMigrator) Update(ctx context.Context, olap drivers.OLAPStore, repo drivers.RepoStore, catalogObj *runtimev1.CatalogObject) error { return nil } -func (m *metricsViewMigrator) Rename(ctx context.Context, olap drivers.OLAPStore, from string, catalogObj *api.CatalogObject) error { +func (m *metricsViewMigrator) Rename(ctx context.Context, olap drivers.OLAPStore, from string, catalogObj *runtimev1.CatalogObject) error { return nil } -func (m *metricsViewMigrator) Delete(ctx context.Context, olap drivers.OLAPStore, catalogObj *api.CatalogObject) error { +func (m *metricsViewMigrator) Delete(ctx context.Context, olap drivers.OLAPStore, catalogObj *runtimev1.CatalogObject) error { return nil } -func (m *metricsViewMigrator) GetDependencies(ctx context.Context, olap drivers.OLAPStore, catalog *api.CatalogObject) []string { +func (m *metricsViewMigrator) GetDependencies(ctx context.Context, olap drivers.OLAPStore, catalog *runtimev1.CatalogObject) []string { return []string{catalog.MetricsView.From} } -func (m *metricsViewMigrator) Validate(ctx context.Context, olap drivers.OLAPStore, catalog *api.CatalogObject) error { +func (m *metricsViewMigrator) Validate(ctx context.Context, olap drivers.OLAPStore, catalog *runtimev1.CatalogObject) error { if catalog.MetricsView.From == "" { return SourceNotSelected } @@ -56,7 +56,7 @@ func (m *metricsViewMigrator) Validate(ctx context.Context, olap drivers.OLAPSto return err } - fieldsMap := make(map[string]*api.StructType_Field) + fieldsMap := make(map[string]*runtimev1.StructType_Field) for _, field := range model.Schema.Fields { fieldsMap[field.Name] = field } @@ -83,16 +83,16 @@ func (m *metricsViewMigrator) Validate(ctx context.Context, olap drivers.OLAPSto return nil } -func (m *metricsViewMigrator) IsEqual(ctx context.Context, cat1 *api.CatalogObject, cat2 *api.CatalogObject) bool { +func (m *metricsViewMigrator) IsEqual(ctx context.Context, cat1 *runtimev1.CatalogObject, cat2 *runtimev1.CatalogObject) bool { // TODO: do we need a deep check here? return false } -func (m *metricsViewMigrator) ExistsInOlap(ctx context.Context, olap drivers.OLAPStore, catalog *api.CatalogObject) (bool, error) { +func (m *metricsViewMigrator) ExistsInOlap(ctx context.Context, olap drivers.OLAPStore, catalog *runtimev1.CatalogObject) (bool, error) { return true, nil } -func validateDimension(ctx context.Context, model *drivers.Table, dimension *api.MetricsView_Dimension) error { +func validateDimension(ctx context.Context, model *drivers.Table, dimension *runtimev1.MetricsView_Dimension) error { for _, field := range model.Schema.Fields { // TODO: check type if field.Name == dimension.Name { @@ -103,7 +103,7 @@ func validateDimension(ctx context.Context, model *drivers.Table, dimension *api return fmt.Errorf("dimension not found: %s", dimension.Name) } -func validateMeasure(ctx context.Context, olap drivers.OLAPStore, model *drivers.Table, measure *api.MetricsView_Measure) error { +func validateMeasure(ctx context.Context, olap drivers.OLAPStore, model *drivers.Table, measure *runtimev1.MetricsView_Measure) error { _, err := olap.Execute(ctx, &drivers.Statement{ Query: fmt.Sprintf("SELECT %s from %s", measure.Expression, model.Name), DryRun: true, diff --git a/runtime/services/catalog/migrator/migrator.go b/runtime/services/catalog/migrator/migrator.go index 4f97fcd4499..2d322bdb3fd 100644 --- a/runtime/services/catalog/migrator/migrator.go +++ b/runtime/services/catalog/migrator/migrator.go @@ -4,7 +4,7 @@ import ( "context" "fmt" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" ) @@ -27,18 +27,18 @@ func Register(name string, artifact EntityMigrator) { } type EntityMigrator interface { - Create(ctx context.Context, olap drivers.OLAPStore, repo drivers.RepoStore, catalog *api.CatalogObject) error - Update(ctx context.Context, olap drivers.OLAPStore, repo drivers.RepoStore, catalog *api.CatalogObject) error - Rename(ctx context.Context, olap drivers.OLAPStore, from string, catalog *api.CatalogObject) error - Delete(ctx context.Context, olap drivers.OLAPStore, catalog *api.CatalogObject) error - GetDependencies(ctx context.Context, olap drivers.OLAPStore, catalog *api.CatalogObject) []string - Validate(ctx context.Context, olap drivers.OLAPStore, catalog *api.CatalogObject) error + Create(ctx context.Context, olap drivers.OLAPStore, repo drivers.RepoStore, catalog *runtimev1.CatalogObject) error + Update(ctx context.Context, olap drivers.OLAPStore, repo drivers.RepoStore, catalog *runtimev1.CatalogObject) error + Rename(ctx context.Context, olap drivers.OLAPStore, from string, catalog *runtimev1.CatalogObject) error + Delete(ctx context.Context, olap drivers.OLAPStore, catalog *runtimev1.CatalogObject) error + GetDependencies(ctx context.Context, olap drivers.OLAPStore, catalog *runtimev1.CatalogObject) []string + Validate(ctx context.Context, olap drivers.OLAPStore, catalog *runtimev1.CatalogObject) error // IsEqual checks everything but the name - IsEqual(ctx context.Context, cat1 *api.CatalogObject, cat2 *api.CatalogObject) bool - ExistsInOlap(ctx context.Context, olap drivers.OLAPStore, catalog *api.CatalogObject) (bool, error) + IsEqual(ctx context.Context, cat1 *runtimev1.CatalogObject, cat2 *runtimev1.CatalogObject) bool + ExistsInOlap(ctx context.Context, olap drivers.OLAPStore, catalog *runtimev1.CatalogObject) (bool, error) } -func Create(ctx context.Context, olap drivers.OLAPStore, repo drivers.RepoStore, catalog *api.CatalogObject) error { +func Create(ctx context.Context, olap drivers.OLAPStore, repo drivers.RepoStore, catalog *runtimev1.CatalogObject) error { migrator, ok := getMigrator(catalog) if !ok { // no error here. not all migrators are needed @@ -47,7 +47,7 @@ func Create(ctx context.Context, olap drivers.OLAPStore, repo drivers.RepoStore, return migrator.Create(ctx, olap, repo, catalog) } -func Update(ctx context.Context, olap drivers.OLAPStore, repo drivers.RepoStore, catalog *api.CatalogObject) error { +func Update(ctx context.Context, olap drivers.OLAPStore, repo drivers.RepoStore, catalog *runtimev1.CatalogObject) error { migrator, ok := getMigrator(catalog) if !ok { // no error here. not all migrators are needed @@ -56,7 +56,7 @@ func Update(ctx context.Context, olap drivers.OLAPStore, repo drivers.RepoStore, return migrator.Update(ctx, olap, repo, catalog) } -func Rename(ctx context.Context, olap drivers.OLAPStore, from string, catalog *api.CatalogObject) error { +func Rename(ctx context.Context, olap drivers.OLAPStore, from string, catalog *runtimev1.CatalogObject) error { migrator, ok := getMigrator(catalog) if !ok { // no error here. not all migrators are needed @@ -65,7 +65,7 @@ func Rename(ctx context.Context, olap drivers.OLAPStore, from string, catalog *a return migrator.Rename(ctx, olap, from, catalog) } -func Delete(ctx context.Context, olap drivers.OLAPStore, catalog *api.CatalogObject) error { +func Delete(ctx context.Context, olap drivers.OLAPStore, catalog *runtimev1.CatalogObject) error { migrator, ok := getMigrator(catalog) if !ok { // no error here. not all migrators are needed @@ -74,7 +74,7 @@ func Delete(ctx context.Context, olap drivers.OLAPStore, catalog *api.CatalogObj return migrator.Delete(ctx, olap, catalog) } -func GetDependencies(ctx context.Context, olap drivers.OLAPStore, catalog *api.CatalogObject) []string { +func GetDependencies(ctx context.Context, olap drivers.OLAPStore, catalog *runtimev1.CatalogObject) []string { migrator, ok := getMigrator(catalog) if !ok { // no error here. not all migrators are needed @@ -84,7 +84,7 @@ func GetDependencies(ctx context.Context, olap drivers.OLAPStore, catalog *api.C } // Validate also returns list of dependents -func Validate(ctx context.Context, olap drivers.OLAPStore, catalog *api.CatalogObject) error { +func Validate(ctx context.Context, olap drivers.OLAPStore, catalog *runtimev1.CatalogObject) error { migrator, ok := getMigrator(catalog) if !ok { // no error here. not all migrators are needed @@ -94,7 +94,7 @@ func Validate(ctx context.Context, olap drivers.OLAPStore, catalog *api.CatalogO } // IsEqual checks everything but the name -func IsEqual(ctx context.Context, cat1 *api.CatalogObject, cat2 *api.CatalogObject) bool { +func IsEqual(ctx context.Context, cat1 *runtimev1.CatalogObject, cat2 *runtimev1.CatalogObject) bool { if cat1.Type != cat2.Type { return false } @@ -106,7 +106,7 @@ func IsEqual(ctx context.Context, cat1 *api.CatalogObject, cat2 *api.CatalogObje return migrator.IsEqual(ctx, cat1, cat2) } -func ExistsInOlap(ctx context.Context, olap drivers.OLAPStore, catalog *api.CatalogObject) (bool, error) { +func ExistsInOlap(ctx context.Context, olap drivers.OLAPStore, catalog *runtimev1.CatalogObject) (bool, error) { migrator, ok := getMigrator(catalog) if !ok { // no error here. not all migrators are needed @@ -115,15 +115,15 @@ func ExistsInOlap(ctx context.Context, olap drivers.OLAPStore, catalog *api.Cata return migrator.ExistsInOlap(ctx, olap, catalog) } -func getMigrator(catalog *api.CatalogObject) (EntityMigrator, bool) { +func getMigrator(catalog *runtimev1.CatalogObject) (EntityMigrator, bool) { var objType drivers.CatalogObjectType // TODO: temporary for the merge with main switch catalog.Type { - case api.CatalogObject_TYPE_SOURCE: + case runtimev1.CatalogObject_TYPE_SOURCE: objType = drivers.CatalogObjectTypeSource - case api.CatalogObject_TYPE_MODEL: + case runtimev1.CatalogObject_TYPE_MODEL: objType = drivers.CatalogObjectTypeModel - case api.CatalogObject_TYPE_METRICS_VIEW: + case runtimev1.CatalogObject_TYPE_METRICS_VIEW: objType = drivers.CatalogObjectTypeMetricsView } diff --git a/runtime/services/catalog/migrator/models/models.go b/runtime/services/catalog/migrator/models/models.go index 9c07cdc0e82..25769606b3e 100644 --- a/runtime/services/catalog/migrator/models/models.go +++ b/runtime/services/catalog/migrator/models/models.go @@ -5,7 +5,7 @@ import ( "fmt" "strings" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" "github.com/rilldata/rill/runtime/services/catalog/migrator" ) @@ -16,7 +16,7 @@ func init() { type modelMigrator struct{} -func (m *modelMigrator) Create(ctx context.Context, olap drivers.OLAPStore, repo drivers.RepoStore, catalogObj *api.CatalogObject) error { +func (m *modelMigrator) Create(ctx context.Context, olap drivers.OLAPStore, repo drivers.RepoStore, catalogObj *runtimev1.CatalogObject) error { rows, err := olap.Execute(ctx, &drivers.Statement{ Query: fmt.Sprintf("CREATE OR REPLACE VIEW %s AS (%s)", catalogObj.Name, catalogObj.Model.Sql), Priority: 100, @@ -27,11 +27,11 @@ func (m *modelMigrator) Create(ctx context.Context, olap drivers.OLAPStore, repo return rows.Close() } -func (m *modelMigrator) Update(ctx context.Context, olap drivers.OLAPStore, repo drivers.RepoStore, catalogObj *api.CatalogObject) error { +func (m *modelMigrator) Update(ctx context.Context, olap drivers.OLAPStore, repo drivers.RepoStore, catalogObj *runtimev1.CatalogObject) error { return m.Create(ctx, olap, repo, catalogObj) } -func (m *modelMigrator) Rename(ctx context.Context, olap drivers.OLAPStore, from string, catalogObj *api.CatalogObject) error { +func (m *modelMigrator) Rename(ctx context.Context, olap drivers.OLAPStore, from string, catalogObj *runtimev1.CatalogObject) error { rows, err := olap.Execute(ctx, &drivers.Statement{ Query: fmt.Sprintf("ALTER VIEW %s RENAME TO %s", from, catalogObj.Name), Priority: 100, @@ -42,7 +42,7 @@ func (m *modelMigrator) Rename(ctx context.Context, olap drivers.OLAPStore, from return rows.Close() } -func (m *modelMigrator) Delete(ctx context.Context, olap drivers.OLAPStore, catalogObj *api.CatalogObject) error { +func (m *modelMigrator) Delete(ctx context.Context, olap drivers.OLAPStore, catalogObj *runtimev1.CatalogObject) error { rows, err := olap.Execute(ctx, &drivers.Statement{ Query: fmt.Sprintf("DROP VIEW IF EXISTS %s", catalogObj.Name), Priority: 100, @@ -53,11 +53,11 @@ func (m *modelMigrator) Delete(ctx context.Context, olap drivers.OLAPStore, cata return rows.Close() } -func (m *modelMigrator) GetDependencies(ctx context.Context, olap drivers.OLAPStore, catalog *api.CatalogObject) []string { +func (m *modelMigrator) GetDependencies(ctx context.Context, olap drivers.OLAPStore, catalog *runtimev1.CatalogObject) []string { return ExtractTableNames(catalog.Model.Sql) } -func (m *modelMigrator) Validate(ctx context.Context, olap drivers.OLAPStore, catalog *api.CatalogObject) error { +func (m *modelMigrator) Validate(ctx context.Context, olap drivers.OLAPStore, catalog *runtimev1.CatalogObject) error { _, err := olap.Execute(ctx, &drivers.Statement{ Query: catalog.Model.Sql, Priority: 100, @@ -66,13 +66,13 @@ func (m *modelMigrator) Validate(ctx context.Context, olap drivers.OLAPStore, ca return err } -func (m *modelMigrator) IsEqual(ctx context.Context, cat1 *api.CatalogObject, cat2 *api.CatalogObject) bool { +func (m *modelMigrator) IsEqual(ctx context.Context, cat1 *runtimev1.CatalogObject, cat2 *runtimev1.CatalogObject) bool { return cat1.Model.Dialect == cat2.Model.Dialect && // TODO: handle same queries but different text strings.TrimSpace(cat1.Model.Sql) == strings.TrimSpace(cat2.Model.Sql) } -func (m *modelMigrator) ExistsInOlap(ctx context.Context, olap drivers.OLAPStore, catalog *api.CatalogObject) (bool, error) { +func (m *modelMigrator) ExistsInOlap(ctx context.Context, olap drivers.OLAPStore, catalog *runtimev1.CatalogObject) (bool, error) { _, err := olap.InformationSchema().Lookup(ctx, catalog.Name) if err == drivers.ErrNotFound { return false, nil diff --git a/runtime/services/catalog/migrator/sources/sources.go b/runtime/services/catalog/migrator/sources/sources.go index 7024406a414..4f1a0ba9cf8 100644 --- a/runtime/services/catalog/migrator/sources/sources.go +++ b/runtime/services/catalog/migrator/sources/sources.go @@ -5,7 +5,7 @@ import ( "fmt" "strings" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/connectors" "github.com/rilldata/rill/runtime/drivers" "github.com/rilldata/rill/runtime/services/catalog/migrator" @@ -18,7 +18,7 @@ func init() { type sourceMigrator struct{} -func (m *sourceMigrator) Create(ctx context.Context, olap drivers.OLAPStore, repo drivers.RepoStore, catalogObj *api.CatalogObject) error { +func (m *sourceMigrator) Create(ctx context.Context, olap drivers.OLAPStore, repo drivers.RepoStore, catalogObj *runtimev1.CatalogObject) error { apiSource := catalogObj.Source var source *connectors.Source var err error @@ -43,11 +43,11 @@ func (m *sourceMigrator) Create(ctx context.Context, olap drivers.OLAPStore, rep return olap.Ingest(ctx, env, source) } -func (m *sourceMigrator) Update(ctx context.Context, olap drivers.OLAPStore, repo drivers.RepoStore, catalogObj *api.CatalogObject) error { +func (m *sourceMigrator) Update(ctx context.Context, olap drivers.OLAPStore, repo drivers.RepoStore, catalogObj *runtimev1.CatalogObject) error { return m.Create(ctx, olap, repo, catalogObj) } -func (m *sourceMigrator) Rename(ctx context.Context, olap drivers.OLAPStore, from string, catalogObj *api.CatalogObject) error { +func (m *sourceMigrator) Rename(ctx context.Context, olap drivers.OLAPStore, from string, catalogObj *runtimev1.CatalogObject) error { rows, err := olap.Execute(ctx, &drivers.Statement{ Query: fmt.Sprintf("ALTER TABLE %s RENAME TO %s", from, catalogObj.Name), Priority: 100, @@ -58,7 +58,7 @@ func (m *sourceMigrator) Rename(ctx context.Context, olap drivers.OLAPStore, fro return rows.Close() } -func (m *sourceMigrator) Delete(ctx context.Context, olap drivers.OLAPStore, catalogObj *api.CatalogObject) error { +func (m *sourceMigrator) Delete(ctx context.Context, olap drivers.OLAPStore, catalogObj *runtimev1.CatalogObject) error { rows, err := olap.Execute(ctx, &drivers.Statement{ Query: fmt.Sprintf("DROP TABLE IF EXISTS %s", catalogObj.Name), Priority: 100, @@ -69,16 +69,16 @@ func (m *sourceMigrator) Delete(ctx context.Context, olap drivers.OLAPStore, cat return rows.Close() } -func (m *sourceMigrator) GetDependencies(ctx context.Context, olap drivers.OLAPStore, catalog *api.CatalogObject) []string { +func (m *sourceMigrator) GetDependencies(ctx context.Context, olap drivers.OLAPStore, catalog *runtimev1.CatalogObject) []string { return []string{} } -func (m *sourceMigrator) Validate(ctx context.Context, olap drivers.OLAPStore, catalog *api.CatalogObject) error { +func (m *sourceMigrator) Validate(ctx context.Context, olap drivers.OLAPStore, catalog *runtimev1.CatalogObject) error { // TODO return nil } -func (m *sourceMigrator) IsEqual(ctx context.Context, cat1 *api.CatalogObject, cat2 *api.CatalogObject) bool { +func (m *sourceMigrator) IsEqual(ctx context.Context, cat1 *runtimev1.CatalogObject, cat2 *runtimev1.CatalogObject) bool { if cat1.Source.Connector != cat2.Source.Connector { return false } @@ -91,7 +91,7 @@ func (m *sourceMigrator) IsEqual(ctx context.Context, cat1 *api.CatalogObject, c return s1.PropertiesEquals(s2) } -func (m *sourceMigrator) ExistsInOlap(ctx context.Context, olap drivers.OLAPStore, catalog *api.CatalogObject) (bool, error) { +func (m *sourceMigrator) ExistsInOlap(ctx context.Context, olap drivers.OLAPStore, catalog *runtimev1.CatalogObject) (bool, error) { _, err := olap.InformationSchema().Lookup(ctx, catalog.Name) if err == drivers.ErrNotFound { return false, nil diff --git a/runtime/services/catalog/protobuf_to_catalog.go b/runtime/services/catalog/protobuf_to_catalog.go index 9dac249662a..4881b04e252 100644 --- a/runtime/services/catalog/protobuf_to_catalog.go +++ b/runtime/services/catalog/protobuf_to_catalog.go @@ -1,12 +1,12 @@ package catalog import ( - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" "google.golang.org/protobuf/proto" ) -func pbToCatalogObject(apiCatalog *api.CatalogObject) (*drivers.CatalogObject, error) { +func pbToCatalogObject(apiCatalog *runtimev1.CatalogObject) (*drivers.CatalogObject, error) { catalog := &drivers.CatalogObject{ Name: apiCatalog.Name, Path: apiCatalog.Path, @@ -14,15 +14,15 @@ func pbToCatalogObject(apiCatalog *api.CatalogObject) (*drivers.CatalogObject, e var err error switch apiCatalog.Type { - case api.CatalogObject_TYPE_SOURCE: + case runtimev1.CatalogObject_TYPE_SOURCE: catalog.SQL = apiCatalog.Source.Sql catalog.Type = drivers.CatalogObjectTypeSource catalog.Definition, err = proto.Marshal(apiCatalog.Source) - case api.CatalogObject_TYPE_MODEL: + case runtimev1.CatalogObject_TYPE_MODEL: catalog.SQL = apiCatalog.Model.Sql catalog.Type = drivers.CatalogObjectTypeModel catalog.Definition, err = proto.Marshal(apiCatalog.Model) - case api.CatalogObject_TYPE_METRICS_VIEW: + case runtimev1.CatalogObject_TYPE_METRICS_VIEW: catalog.Type = drivers.CatalogObjectTypeMetricsView catalog.Definition, err = proto.Marshal(apiCatalog.MetricsView) } @@ -30,15 +30,15 @@ func pbToCatalogObject(apiCatalog *api.CatalogObject) (*drivers.CatalogObject, e return catalog, err } -func catalogObjectTypeFromPB(t api.CatalogObject_Type) drivers.CatalogObjectType { +func catalogObjectTypeFromPB(t runtimev1.CatalogObject_Type) drivers.CatalogObjectType { switch t { - case api.CatalogObject_TYPE_UNSPECIFIED: + case runtimev1.CatalogObject_TYPE_UNSPECIFIED: return drivers.CatalogObjectTypeUnspecified - case api.CatalogObject_TYPE_TABLE: + case runtimev1.CatalogObject_TYPE_TABLE: return drivers.CatalogObjectTypeTable - case api.CatalogObject_TYPE_SOURCE: + case runtimev1.CatalogObject_TYPE_SOURCE: return drivers.CatalogObjectTypeSource - case api.CatalogObject_TYPE_METRICS_VIEW: + case runtimev1.CatalogObject_TYPE_METRICS_VIEW: return drivers.CatalogObjectTypeMetricsView default: // NOTE: Consider returning and handling an error instead diff --git a/runtime/services/catalog/testutils/testutils.go b/runtime/services/catalog/testutils/testutils.go index a9c7daf33db..374a7705ed7 100644 --- a/runtime/services/catalog/testutils/testutils.go +++ b/runtime/services/catalog/testutils/testutils.go @@ -9,7 +9,7 @@ import ( "testing" "time" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" "github.com/rilldata/rill/runtime/services/catalog" "github.com/rilldata/rill/runtime/services/catalog/artifacts" @@ -22,10 +22,10 @@ func CreateSource(t *testing.T, s *catalog.Service, name string, file string, pa require.NoError(t, err) ctx := context.Background() - err = artifacts.Write(ctx, s.Repo, s.RepoId, &api.CatalogObject{ + err = artifacts.Write(ctx, s.Repo, s.RepoId, &runtimev1.CatalogObject{ Name: name, - Type: api.CatalogObject_TYPE_SOURCE, - Source: &api.Source{ + Type: runtimev1.CatalogObject_TYPE_SOURCE, + Source: &runtimev1.Source{ Name: name, Connector: "file", Properties: toProtoStruct(map[string]any{ @@ -42,13 +42,13 @@ func CreateSource(t *testing.T, s *catalog.Service, name string, file string, pa func CreateModel(t *testing.T, s *catalog.Service, name string, sql string, path string) string { ctx := context.Background() - err := artifacts.Write(ctx, s.Repo, s.RepoId, &api.CatalogObject{ + err := artifacts.Write(ctx, s.Repo, s.RepoId, &runtimev1.CatalogObject{ Name: name, - Type: api.CatalogObject_TYPE_MODEL, - Model: &api.Model{ + Type: runtimev1.CatalogObject_TYPE_MODEL, + Model: &runtimev1.Model{ Name: name, Sql: sql, - Dialect: api.Model_DIALECT_DUCKDB, + Dialect: runtimev1.Model_DIALECT_DUCKDB, }, Path: path, }) @@ -58,11 +58,11 @@ func CreateModel(t *testing.T, s *catalog.Service, name string, sql string, path return blob } -func CreateMetricsView(t *testing.T, s *catalog.Service, metricsView *api.MetricsView, path string) string { +func CreateMetricsView(t *testing.T, s *catalog.Service, metricsView *runtimev1.MetricsView, path string) string { ctx := context.Background() - err := artifacts.Write(ctx, s.Repo, s.RepoId, &api.CatalogObject{ + err := artifacts.Write(ctx, s.Repo, s.RepoId, &runtimev1.CatalogObject{ Name: metricsView.Name, - Type: api.CatalogObject_TYPE_METRICS_VIEW, + Type: runtimev1.CatalogObject_TYPE_METRICS_VIEW, MetricsView: metricsView, Path: path, }) diff --git a/runtime/sql/sql.go b/runtime/sql/sql.go index 17120bda4ca..0a09539d1c1 100644 --- a/runtime/sql/sql.go +++ b/runtime/sql/sql.go @@ -6,7 +6,7 @@ import ( "fmt" "sync" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" "github.com/rilldata/rill/runtime/sql/ast" "github.com/rilldata/rill/runtime/sql/rpc" @@ -139,55 +139,55 @@ func marshalCatalog(dialect rpc.Dialect, objs []*drivers.CatalogObject) string { return string(data) } -func typeCodeToSQLType(t api.Type_Code) string { +func typeCodeToSQLType(t runtimev1.Type_Code) string { switch t { - case api.Type_CODE_BOOL: + case runtimev1.Type_CODE_BOOL: return "BOOLEAN" - case api.Type_CODE_INT8: + case runtimev1.Type_CODE_INT8: return "TINYINT" - case api.Type_CODE_INT16: + case runtimev1.Type_CODE_INT16: return "SMALLINT" - case api.Type_CODE_INT32: + case runtimev1.Type_CODE_INT32: return "INTEGER" - case api.Type_CODE_INT64: + case runtimev1.Type_CODE_INT64: return "BIGINT" - case api.Type_CODE_INT128: + case runtimev1.Type_CODE_INT128: return "HUGEINT" - case api.Type_CODE_UINT8: + case runtimev1.Type_CODE_UINT8: return "UTINYINT" - case api.Type_CODE_UINT16: + case runtimev1.Type_CODE_UINT16: return "USMALLINT" - case api.Type_CODE_UINT32: + case runtimev1.Type_CODE_UINT32: return "UINTEGER" - case api.Type_CODE_UINT64: + case runtimev1.Type_CODE_UINT64: return "UBIGINT" - case api.Type_CODE_UINT128: + case runtimev1.Type_CODE_UINT128: return "HUGEINT" - case api.Type_CODE_FLOAT32: + case runtimev1.Type_CODE_FLOAT32: return "FLOAT" - case api.Type_CODE_FLOAT64: + case runtimev1.Type_CODE_FLOAT64: return "DOUBLE" - case api.Type_CODE_TIMESTAMP: + case runtimev1.Type_CODE_TIMESTAMP: return "TIMESTAMP" - case api.Type_CODE_DATE: + case runtimev1.Type_CODE_DATE: return "DATE" - case api.Type_CODE_TIME: + case runtimev1.Type_CODE_TIME: return "TIME" - case api.Type_CODE_STRING: + case runtimev1.Type_CODE_STRING: return "VARCHAR" - case api.Type_CODE_BYTES: + case runtimev1.Type_CODE_BYTES: return "BLOB" - case api.Type_CODE_ARRAY: + case runtimev1.Type_CODE_ARRAY: return "LIST" - case api.Type_CODE_STRUCT: + case runtimev1.Type_CODE_STRUCT: return "STRUCT" - case api.Type_CODE_MAP: + case runtimev1.Type_CODE_MAP: return "MAP" - case api.Type_CODE_DECIMAL: + case runtimev1.Type_CODE_DECIMAL: return "DECIMAL" - case api.Type_CODE_JSON: + case runtimev1.Type_CODE_JSON: return "VARCHAR" - case api.Type_CODE_UUID: + case runtimev1.Type_CODE_UUID: return "VARCHAR" default: return "ANY" // TODO: verify diff --git a/runtime/sql/sql_test.go b/runtime/sql/sql_test.go index 600ab08700b..f0fce9c2b67 100644 --- a/runtime/sql/sql_test.go +++ b/runtime/sql/sql_test.go @@ -4,7 +4,7 @@ import ( "fmt" "testing" - "github.com/rilldata/rill/runtime/api" + runtimev1 "github.com/rilldata/rill/proto/gen/rill/runtime/v1" "github.com/rilldata/rill/runtime/drivers" "github.com/rilldata/rill/runtime/sql/rpc" "github.com/stretchr/testify/require" @@ -17,13 +17,13 @@ func TestTranspileSelect(t *testing.T) { { Name: "heroes", Type: drivers.CatalogObjectTypeTable, - Schema: &api.StructType{ - Fields: []*api.StructType_Field{ - {Name: "id", Type: &api.Type{Code: api.Type_CODE_STRING}}, - {Name: "birthday", Type: &api.Type{Code: api.Type_CODE_TIMESTAMP}}, - {Name: "power", Type: &api.Type{Code: api.Type_CODE_STRING}}, - {Name: "name", Type: &api.Type{Code: api.Type_CODE_STRING}}, - {Name: "level", Type: &api.Type{Code: api.Type_CODE_INT32}}, + Schema: &runtimev1.StructType{ + Fields: []*runtimev1.StructType_Field{ + {Name: "id", Type: &runtimev1.Type{Code: runtimev1.Type_CODE_STRING}}, + {Name: "birthday", Type: &runtimev1.Type{Code: runtimev1.Type_CODE_TIMESTAMP}}, + {Name: "power", Type: &runtimev1.Type{Code: runtimev1.Type_CODE_STRING}}, + {Name: "name", Type: &runtimev1.Type{Code: runtimev1.Type_CODE_STRING}}, + {Name: "level", Type: &runtimev1.Type{Code: runtimev1.Type_CODE_INT32}}, }, }, }, @@ -45,13 +45,13 @@ func TestParseSelect(t *testing.T) { { Name: "heroes", Type: drivers.CatalogObjectTypeTable, - Schema: &api.StructType{ - Fields: []*api.StructType_Field{ - {Name: "id", Type: &api.Type{Code: api.Type_CODE_STRING}}, - {Name: "birthday", Type: &api.Type{Code: api.Type_CODE_TIMESTAMP}}, - {Name: "power", Type: &api.Type{Code: api.Type_CODE_STRING}}, - {Name: "name", Type: &api.Type{Code: api.Type_CODE_STRING}}, - {Name: "level", Type: &api.Type{Code: api.Type_CODE_INT32}}, + Schema: &runtimev1.StructType{ + Fields: []*runtimev1.StructType_Field{ + {Name: "id", Type: &runtimev1.Type{Code: runtimev1.Type_CODE_STRING}}, + {Name: "birthday", Type: &runtimev1.Type{Code: runtimev1.Type_CODE_TIMESTAMP}}, + {Name: "power", Type: &runtimev1.Type{Code: runtimev1.Type_CODE_STRING}}, + {Name: "name", Type: &runtimev1.Type{Code: runtimev1.Type_CODE_STRING}}, + {Name: "level", Type: &runtimev1.Type{Code: runtimev1.Type_CODE_INT32}}, }, }, }, @@ -82,13 +82,13 @@ func TestParseMetricsView(t *testing.T) { { Name: "heroes", Type: drivers.CatalogObjectTypeTable, - Schema: &api.StructType{ - Fields: []*api.StructType_Field{ - {Name: "id", Type: &api.Type{Code: api.Type_CODE_STRING}}, - {Name: "birthday", Type: &api.Type{Code: api.Type_CODE_TIMESTAMP}}, - {Name: "power", Type: &api.Type{Code: api.Type_CODE_STRING}}, - {Name: "name", Type: &api.Type{Code: api.Type_CODE_STRING}}, - {Name: "level", Type: &api.Type{Code: api.Type_CODE_INT32}}, + Schema: &runtimev1.StructType{ + Fields: []*runtimev1.StructType_Field{ + {Name: "id", Type: &runtimev1.Type{Code: runtimev1.Type_CODE_STRING}}, + {Name: "birthday", Type: &runtimev1.Type{Code: runtimev1.Type_CODE_TIMESTAMP}}, + {Name: "power", Type: &runtimev1.Type{Code: runtimev1.Type_CODE_STRING}}, + {Name: "name", Type: &runtimev1.Type{Code: runtimev1.Type_CODE_STRING}}, + {Name: "level", Type: &runtimev1.Type{Code: runtimev1.Type_CODE_INT32}}, }, }, }, diff --git a/runtime/tools.go b/runtime/tools.go deleted file mode 100644 index 56c091b26b2..00000000000 --- a/runtime/tools.go +++ /dev/null @@ -1,12 +0,0 @@ -//go:build tools - -package runtime - -// Tools installed with go install that `go mod tidy` should keep. -// The build tag at the top of this file ensures that they are not bundled in production builds. -import ( - _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway" - _ "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2" - _ "google.golang.org/grpc/cmd/protoc-gen-go-grpc" - _ "google.golang.org/protobuf/cmd/protoc-gen-go" -) diff --git a/runtime/version.go b/runtime/version.go deleted file mode 100644 index cd747ec864c..00000000000 --- a/runtime/version.go +++ /dev/null @@ -1,3 +0,0 @@ -package runtime - -const Version = "dev" diff --git a/web-common/orval.config.ts b/web-common/orval.config.ts index d3ea6f5e25a..13b12d742de 100644 --- a/web-common/orval.config.ts +++ b/web-common/orval.config.ts @@ -2,7 +2,7 @@ import { defineConfig } from "orval"; export default defineConfig({ api: { - input: "../runtime/api/runtime.swagger.json", + input: "../proto/gen/rill/runtime/v1/runtime.swagger.yaml", output: { workspace: "./src/runtime-client/", target: "gen/index.ts", @@ -23,6 +23,26 @@ export default defineConfig({ useQuery: true, }, }, + RuntimeService_EstimateRollupInterval: { + query: { + useQuery: true, + }, + }, + RuntimeService_GetTopK: { + query: { + useQuery: true, + }, + }, + RuntimeService_GenerateTimeSeries: { + query: { + useQuery: true, + }, + }, + RuntimeService_ProfileColumns: { + query: { + useQuery: true, + }, + }, }, }, }, diff --git a/web-common/src/runtime-client/gen/index.schemas.ts b/web-common/src/runtime-client/gen/index.schemas.ts index 56861ab25ab..5a3b55b21f0 100644 --- a/web-common/src/runtime-client/gen/index.schemas.ts +++ b/web-common/src/runtime-client/gen/index.schemas.ts @@ -1,7 +1,7 @@ /** * Generated by orval v6.10.1 🍺 * Do not edit manually. - * runtime.proto + * rill/runtime/v1/schema.proto * OpenAPI spec version: version not set */ export type RuntimeServiceRenameFileBody = { @@ -35,17 +35,17 @@ export type RuntimeServiceGetTopKBody = { export type RuntimeServiceGetTableRowsParams = { limit?: number }; export type RuntimeServiceQueryDirectBody = { - sql?: string; args?: unknown[]; - priority?: string; dryRun?: boolean; + priority?: string; + sql?: string; }; export type RuntimeServiceQueryBody = { - sql?: string; args?: unknown[]; - priority?: string; dryRun?: boolean; + priority?: string; + sql?: string; }; export type RuntimeServiceMigrateDeleteBody = { @@ -53,56 +53,67 @@ export type RuntimeServiceMigrateDeleteBody = { }; export type RuntimeServiceMigrateSingleBody = { - sql?: string; - dryRun?: boolean; createOrReplace?: boolean; + dryRun?: boolean; /** If provided, will attempt to rename an existing object and only recompute if necessary. NOTE: very questionable semantics here. */ renameFrom?: string; + sql?: string; }; export type RuntimeServiceMigrateBody = { - repoId?: string; /** Changed paths provides a way to "hint" what files have changed in the repo, enabling migrations to execute faster by not scanning all code artifacts for changes. */ changedPaths?: string[]; dry?: boolean; + repoId?: string; strict?: boolean; }; export type RuntimeServiceMetricsViewTotalsBody = { + filter?: V1MetricsViewFilter; measureNames?: string[]; - timeStart?: string; timeEnd?: string; - filter?: V1MetricsViewFilter; + timeStart?: string; }; +export interface V1MetricsViewSort { + ascending?: boolean; + name?: string; +} + +export interface V1MetricsViewFilter { + exclude?: MetricsViewFilterCond[]; + include?: MetricsViewFilterCond[]; + match?: string[]; +} + export type RuntimeServiceMetricsViewToplistBody = { - measureNames?: string[]; - timeStart?: string; - timeEnd?: string; + filter?: V1MetricsViewFilter; limit?: string; + measureNames?: string[]; offset?: string; sort?: V1MetricsViewSort[]; - filter?: V1MetricsViewFilter; + timeEnd?: string; + timeStart?: string; }; export type RuntimeServiceMetricsViewTimeSeriesBody = { + filter?: V1MetricsViewFilter; measureNames?: string[]; - timeStart?: string; timeEnd?: string; timeGranularity?: string; - filter?: V1MetricsViewFilter; + timeStart?: string; }; export type RuntimeServiceGenerateTimeSeriesBody = { - tableName?: string; - measures?: GenerateTimeSeriesRequestBasicMeasures; - timestampColumnName?: string; - timeRange?: V1TimeSeriesTimeRange; filters?: V1MetricsViewRequestFilter; + measures?: GenerateTimeSeriesRequestBasicMeasures; pixels?: string; sampleSize?: number; + tableName?: string; + timeRange?: V1TimeSeriesTimeRange; + timestampColumnName?: string; }; export type RuntimeServiceEstimateRollupIntervalBody = { @@ -162,10 +173,10 @@ export const V1TypeCode = { } as const; export interface V1TriggerSyncResponse { - objectsCount?: number; objectsAddedCount?: number; - objectsUpdatedCount?: number; + objectsCount?: number; objectsRemovedCount?: number; + objectsUpdatedCount?: number; } export interface V1TriggerRefreshResponse { @@ -179,24 +190,24 @@ export interface V1TopK { export type V1TimeSeriesValueRecords = { [key: string]: number }; export interface V1TimeSeriesValue { - ts?: string; bin?: number; records?: V1TimeSeriesValueRecords; + ts?: string; } export interface V1TimeSeriesResponse { + error?: string; id?: string; results?: V1TimeSeriesValue[]; + sampleSize?: number; spark?: TimeSeriesResponseTimeSeriesValues; timeRange?: V1TimeSeriesTimeRange; - sampleSize?: number; - error?: string; } export interface V1TimeRangeSummary { - min?: string; - max?: string; interval?: TimeRangeSummaryInterval; + max?: string; + min?: string; } export type V1TimeGrain = typeof V1TimeGrain[keyof typeof V1TimeGrain]; @@ -215,9 +226,9 @@ export const V1TimeGrain = { } as const; export interface V1TimeSeriesTimeRange { - start?: string; end?: string; interval?: V1TimeGrain; + start?: string; } export interface V1StructType { @@ -230,18 +241,18 @@ scanning the database's information schema when the instance is created with exp have managed = false. */ export interface V1Table { - name?: string; - schema?: V1StructType; /** Managed is true if the table was created through a runtime migration, false if it was discovered in by scanning the database's information schema. */ managed?: boolean; + name?: string; + schema?: V1StructType; } export type V1SourceProperties = { [key: string]: any }; export interface V1Source { - name?: string; connector?: string; + name?: string; properties?: V1SourceProperties; schema?: V1StructType; sql?: string; @@ -253,11 +264,11 @@ It will usually by represented as a folder on disk, but may also be backed by a database (for modelling in the cloud where no persistant file system is available). */ export interface V1Repo { - repoId?: string; /** Driver for persisting artifacts. Supports "file" and "postgres". */ driver?: string; /** DSN for driver. If the driver is "file", this should be the path to the root directory. */ dsn?: string; + repoId?: string; } export interface V1RenameFileResponse { @@ -265,37 +276,37 @@ export interface V1RenameFileResponse { } export interface V1RenameFileAndMigrateResponse { - /** Errors encountered during the migration. If strict = false, any path in -affected_paths without an error can be assumed to have been migrated succesfully. */ - errors?: V1MigrationError[]; /** affected_paths lists all the file paths that were considered while executing the migration. For a PutFileAndMigrate, this includes the put file as well as any file artifacts that rely on objects declared in it. */ affectedPaths?: string[]; + /** Errors encountered during the migration. If strict = false, any path in +affected_paths without an error can be assumed to have been migrated succesfully. */ + errors?: V1MigrationError[]; } export interface V1RenameFileAndMigrateRequest { - repoId?: string; - instanceId?: string; - fromPath?: string; - toPath?: string; /** If true, will save the file and validate it and related file artifacts, but not actually execute any migrations. */ dry?: boolean; + fromPath?: string; + instanceId?: string; + repoId?: string; strict?: boolean; + toPath?: string; } export type V1QueryResponseDataItem = { [key: string]: any }; export interface V1QueryResponse { - meta?: V1StructType; data?: V1QueryResponseDataItem[]; + meta?: V1StructType; } export type V1QueryDirectResponseDataItem = { [key: string]: any }; export interface V1QueryDirectResponse { - meta?: V1StructType; data?: V1QueryDirectResponseDataItem[]; + meta?: V1StructType; } export interface V1PutFileResponse { @@ -303,9 +314,6 @@ export interface V1PutFileResponse { } export interface V1PutFileAndMigrateRequest { - repoId?: string; - instanceId?: string; - path?: string; blob?: string; create?: boolean; /** create_only will cause the operation to fail if a file already exists at path. @@ -313,13 +321,16 @@ It should only be set when create = true. */ createOnly?: boolean; /** If true, will save the file and validate it and related file artifacts, but not actually execute any migrations. */ dry?: boolean; + instanceId?: string; + path?: string; + repoId?: string; strict?: boolean; } export interface V1ProfileColumn { + largestStringLength?: number; name?: string; type?: string; - largestStringLength?: number; } export interface V1ProfileColumnsResponse { @@ -327,14 +338,14 @@ export interface V1ProfileColumnsResponse { } export interface V1PingResponse { - version?: string; time?: string; + version?: string; } export interface V1NumericStatistics { - min?: number; max?: number; mean?: number; + min?: number; q25?: number; q50?: number; q75?: number; @@ -355,15 +366,15 @@ Message will have either numericHistogramBins, numericStatistics or numericOutli */ export interface V1NumericSummary { numericHistogramBins?: V1NumericHistogramBins; - numericStatistics?: V1NumericStatistics; numericOutliers?: V1NumericOutliers; + numericStatistics?: V1NumericStatistics; } export interface V1Model { - name?: string; - sql?: string; dialect?: ModelDialect; + name?: string; schema?: V1StructType; + sql?: string; } /** @@ -392,25 +403,25 @@ export const V1MigrationErrorCode = { */ export interface V1MigrationError { code?: V1MigrationErrorCode; - message?: string; + endLocation?: MigrationErrorCharLocation; filePath?: string; + message?: string; /** Property path of the error in the code artifact (if any). It's represented as a JS-style property path, e.g. "key0.key1[index2].key3". It only applies to structured code artifacts (i.e. YAML). Only applicable if file_path is set. */ propertyPath?: string; startLocation?: MigrationErrorCharLocation; - endLocation?: MigrationErrorCharLocation; } export interface V1PutFileAndMigrateResponse { - /** Errors encountered during the migration. If strict = false, any path in -affected_paths without an error can be assumed to have been migrated succesfully. */ - errors?: V1MigrationError[]; /** affected_paths lists all the file paths that were considered while executing the migration. For a PutFileAndMigrate, this includes the put file as well as any file artifacts that rely on objects declared in it. */ affectedPaths?: string[]; + /** Errors encountered during the migration. If strict = false, any path in +affected_paths without an error can be assumed to have been migrated succesfully. */ + errors?: V1MigrationError[]; } export interface V1MigrateSingleResponse { @@ -418,13 +429,13 @@ export interface V1MigrateSingleResponse { } export interface V1MigrateResponse { - /** Errors encountered during the migration. If strict = false, any path in -affected_paths without an error can be assumed to have been migrated succesfully. */ - errors?: V1MigrationError[]; /** affected_paths lists all the file artifact paths that were considered while executing the migration. If changed_paths was empty, this will include all code artifacts in the repo. */ affectedPaths?: string[]; + /** Errors encountered during the migration. If strict = false, any path in +affected_paths without an error can be assumed to have been migrated succesfully. */ + errors?: V1MigrationError[]; } export interface V1MigrateDeleteResponse { @@ -434,68 +445,50 @@ export interface V1MigrateDeleteResponse { export type V1MetricsViewTotalsResponseData = { [key: string]: any }; export interface V1MetricsViewTotalsResponse { - meta?: V1MetricsViewColumn[]; data?: V1MetricsViewTotalsResponseData; + meta?: V1MetricsViewColumn[]; } export type V1MetricsViewToplistResponseDataItem = { [key: string]: any }; export interface V1MetricsViewToplistResponse { - meta?: V1MetricsViewColumn[]; data?: V1MetricsViewToplistResponseDataItem[]; + meta?: V1MetricsViewColumn[]; } export type V1MetricsViewTimeSeriesResponseDataItem = { [key: string]: any }; export interface V1MetricsViewTimeSeriesResponse { - meta?: V1MetricsViewColumn[]; data?: V1MetricsViewTimeSeriesResponseDataItem[]; + meta?: V1MetricsViewColumn[]; } -export interface V1MetricsViewSort { +export interface V1MetricsViewDimensionValue { + in?: unknown[]; + like?: MetricsViewDimensionValueValues; name?: string; - ascending?: boolean; } export interface V1MetricsViewRequestFilter { - include?: V1MetricsViewDimensionValue[]; exclude?: V1MetricsViewDimensionValue[]; -} - -export interface V1MetricsViewMetaResponse { - metricsViewName?: string; - fromObject?: string; - dimensions?: MetricsViewDimension[]; - measures?: MetricsViewMeasure[]; -} - -export interface V1MetricsViewFilter { - match?: string[]; - include?: MetricsViewFilterCond[]; - exclude?: MetricsViewFilterCond[]; -} - -export interface V1MetricsViewDimensionValue { - name?: string; - in?: unknown[]; - like?: MetricsViewDimensionValueValues; + include?: V1MetricsViewDimensionValue[]; } export interface V1MetricsViewColumn { name?: string; - type?: string; nullable?: boolean; + type?: string; } export interface V1MetricsView { - name?: string; + dimensions?: MetricsViewDimension[]; from?: string; + measures?: MetricsViewMeasure[]; + name?: string; timeDimension?: string; /** Recommended granularities for rolling up the time dimension. Should be a valid SQL INTERVAL value. */ timeGrains?: string[]; - dimensions?: MetricsViewDimension[]; - measures?: MetricsViewMeasure[]; } export interface V1MapType { @@ -504,8 +497,8 @@ export interface V1MapType { } export interface V1ListReposResponse { - repos?: V1Repo[]; nextPageToken?: string; + repos?: V1Repo[]; } export interface V1ListFilesResponse { @@ -526,21 +519,21 @@ Migrations and queries are issued against a specific instance. The concept of instances enables multiple data projects to be served by one runtime. */ export interface V1Instance { - instanceId?: string; driver?: string; dsn?: string; - /** Prefix to add to all table names created through Rill SQL (such as sources, models, etc.) -Use it as an alternative to database schemas. */ - objectPrefix?: string; + /** If true, the runtime will store the instance's catalog data (such as sources and metrics views) +in the instance's OLAP datastore instead of in the runtime's metadata store. This is currently +only supported for the duckdb driver. */ + embedCatalog?: boolean; /** Indicates that the underlying infra may be manipulated directly by users. If true, the runtime will continuously poll the infra's information schema to discover tables not created through the runtime. They will be added to the catalog as UnmanagedTables. */ exposed?: boolean; - /** If true, the runtime will store the instance's catalog data (such as sources and metrics views) -in the instance's OLAP datastore instead of in the runtime's metadata store. This is currently -only supported for the duckdb driver. */ - embedCatalog?: boolean; + instanceId?: string; + /** Prefix to add to all table names created through Rill SQL (such as sources, models, etc.) +Use it as an alternative to database schemas. */ + objectPrefix?: string; } export interface V1ListInstancesResponse { @@ -612,9 +605,9 @@ export interface V1EstimateSmallestTimeGrainResponse { } export interface V1EstimateRollupIntervalResponse { - start?: string; end?: string; interval?: V1TimeGrain; + start?: string; } export interface V1DeleteRepoResponse { @@ -630,21 +623,21 @@ export interface V1DeleteFileResponse { } export interface V1DeleteFileAndMigrateResponse { - /** Errors encountered during the migration. If strict = false, any path in -affected_paths without an error can be assumed to have been migrated succesfully. */ - errors?: V1MigrationError[]; /** affected_paths lists all the file paths that were considered while executing the migration. For a PutFileAndMigrate, this includes the put file as well as any file artifacts that rely on objects declared in it. */ affectedPaths?: string[]; + /** Errors encountered during the migration. If strict = false, any path in +affected_paths without an error can be assumed to have been migrated succesfully. */ + errors?: V1MigrationError[]; } export interface V1DeleteFileAndMigrateRequest { - repoId?: string; - instanceId?: string; - path?: string; /** If true, will save the file and validate it and related file artifacts, but not actually execute any migrations. */ dry?: boolean; + instanceId?: string; + path?: string; + repoId?: string; strict?: boolean; } @@ -653,23 +646,23 @@ export interface V1CreateRepoResponse { } export interface V1CreateRepoRequest { - repoId?: string; driver?: string; dsn?: string; + repoId?: string; } export interface V1CreateInstanceResponse { - instanceId?: string; instance?: V1Instance; + instanceId?: string; } export interface V1CreateInstanceRequest { - instanceId?: string; driver?: string; dsn?: string; - objectPrefix?: string; - exposed?: boolean; embedCatalog?: boolean; + exposed?: boolean; + instanceId?: string; + objectPrefix?: string; } /** @@ -677,9 +670,9 @@ export interface V1CreateInstanceRequest { It should not be confused with a source. */ export interface V1Connector { - name?: string; - displayName?: string; description?: string; + displayName?: string; + name?: string; properties?: ConnectorProperty[]; } @@ -687,8 +680,8 @@ export interface V1Connector { * Response for RuntimeService.GetTopK and RuntimeService.GetCardinalityOfColumn. Message will have either topK or cardinality set. */ export interface V1CategoricalSummary { - topK?: V1TopK; cardinality?: string; + topK?: V1TopK; } export type V1CatalogObjectType = @@ -704,36 +697,36 @@ export const V1CatalogObjectType = { } as const; export interface V1CatalogObject { - type?: V1CatalogObjectType; - table?: V1Table; - source?: V1Source; - model?: V1Model; + createdOn?: string; metricsView?: V1MetricsView; + model?: V1Model; name?: string; path?: string; - createdOn?: string; - updatedOn?: string; refreshedOn?: string; + source?: V1Source; + table?: V1Table; + type?: V1CatalogObjectType; + updatedOn?: string; } export interface V1BasicMeasureDefinition { - id?: string; expression?: string; + id?: string; sqlName?: string; } export interface Runtimev1Type { + arrayElementType?: Runtimev1Type; code?: V1TypeCode; + mapType?: V1MapType; nullable?: boolean; - arrayElementType?: Runtimev1Type; structType?: V1StructType; - mapType?: V1MapType; } export interface RpcStatus { code?: number; - message?: string; details?: ProtobufAny[]; + message?: string; } /** @@ -758,9 +751,9 @@ export interface ProtobufAny { } export interface TopKTopKEntry { + count?: number; /** value is optional so that null values from the database can be represented. */ value?: string; - count?: number; } export interface TimeSeriesResponseTimeSeriesValues { @@ -768,9 +761,9 @@ export interface TimeSeriesResponseTimeSeriesValues { } export interface TimeRangeSummaryInterval { - months?: number; days?: number; micros?: string; + months?: number; } export interface StructTypeField { @@ -780,16 +773,16 @@ export interface StructTypeField { export interface NumericOutliersOutlier { bucket?: string; - low?: number; high?: number; + low?: number; present?: boolean; } export interface NumericHistogramBinsBin { bucket?: string; - low?: number; - high?: number; count?: string; + high?: number; + low?: number; } export type ModelDialect = typeof ModelDialect[keyof typeof ModelDialect]; @@ -801,23 +794,23 @@ export const ModelDialect = { } as const; export interface MigrationErrorCharLocation { - line?: number; column?: number; + line?: number; } export interface MetricsViewMeasure { - name?: string; - label?: string; - expression?: string; description?: string; - format?: string; enabled?: string; + expression?: string; + format?: string; + label?: string; + name?: string; } export interface MetricsViewFilterCond { - name?: string; in?: unknown[]; like?: unknown[]; + name?: string; } export interface MetricsViewDimensionValueValues { @@ -825,10 +818,10 @@ export interface MetricsViewDimensionValueValues { } export interface MetricsViewDimension { - name?: string; - label?: string; description?: string; enabled?: string; + label?: string; + name?: string; } export interface GenerateTimeSeriesRequestBasicMeasures { @@ -848,12 +841,12 @@ export const ConnectorPropertyType = { } as const; export interface ConnectorProperty { - key?: string; - displayName?: string; description?: string; - placeholder?: string; - type?: ConnectorPropertyType; - nullable?: boolean; + displayName?: string; hint?: string; href?: string; + key?: string; + nullable?: boolean; + placeholder?: string; + type?: ConnectorPropertyType; } diff --git a/web-common/src/runtime-client/gen/runtime-service/runtime-service.ts b/web-common/src/runtime-client/gen/runtime-service/runtime-service.ts index 6e612f6dbb3..710048f8faf 100644 --- a/web-common/src/runtime-client/gen/runtime-service/runtime-service.ts +++ b/web-common/src/runtime-client/gen/runtime-service/runtime-service.ts @@ -1,7 +1,7 @@ /** * Generated by orval v6.10.1 🍺 * Do not edit manually. - * runtime.proto + * rill/runtime/v1/schema.proto * OpenAPI spec version: version not set */ import { useQuery, useMutation } from "@sveltestack/svelte-query"; @@ -35,7 +35,6 @@ import type { V1EstimateSmallestTimeGrainResponse, V1GenerateTimeSeriesResponse, RuntimeServiceGenerateTimeSeriesBody, - V1MetricsViewMetaResponse, V1MetricsViewTimeSeriesResponse, RuntimeServiceMetricsViewTimeSeriesBody, V1MetricsViewToplistResponse, @@ -816,54 +815,78 @@ export const runtimeServiceEstimateRollupInterval = ( }); }; -export type RuntimeServiceEstimateRollupIntervalMutationResult = NonNullable< +export const getRuntimeServiceEstimateRollupIntervalQueryKey = ( + instanceId: string, + tableName: string, + runtimeServiceEstimateRollupIntervalBody: RuntimeServiceEstimateRollupIntervalBody +) => [ + `/v1/instances/${instanceId}/estimate-rollup-interval/${tableName}`, + runtimeServiceEstimateRollupIntervalBody, +]; + +export type RuntimeServiceEstimateRollupIntervalQueryResult = NonNullable< Awaited> >; -export type RuntimeServiceEstimateRollupIntervalMutationBody = - RuntimeServiceEstimateRollupIntervalBody; -export type RuntimeServiceEstimateRollupIntervalMutationError = RpcStatus; +export type RuntimeServiceEstimateRollupIntervalQueryError = RpcStatus; export const useRuntimeServiceEstimateRollupInterval = < - TError = RpcStatus, - TContext = unknown ->(options?: { - mutation?: UseMutationOptions< - Awaited>, - TError, - { - instanceId: string; - tableName: string; - data: RuntimeServiceEstimateRollupIntervalBody; - }, - TContext - >; -}) => { - const { mutation: mutationOptions } = options ?? {}; + TData = Awaited>, + TError = RpcStatus +>( + instanceId: string, + tableName: string, + runtimeServiceEstimateRollupIntervalBody: RuntimeServiceEstimateRollupIntervalBody, + options?: { + query?: UseQueryOptions< + Awaited>, + TError, + TData + >; + } +): UseQueryStoreResult< + Awaited>, + TError, + TData, + QueryKey +> & { queryKey: QueryKey } => { + const { query: queryOptions } = options ?? {}; - const mutationFn: MutationFunction< - Awaited>, - { - instanceId: string; - tableName: string; - data: RuntimeServiceEstimateRollupIntervalBody; - } - > = (props) => { - const { instanceId, tableName, data } = props ?? {}; + const queryKey = + queryOptions?.queryKey ?? + getRuntimeServiceEstimateRollupIntervalQueryKey( + instanceId, + tableName, + runtimeServiceEstimateRollupIntervalBody + ); - return runtimeServiceEstimateRollupInterval(instanceId, tableName, data); - }; + const queryFn: QueryFunction< + Awaited> + > = () => + runtimeServiceEstimateRollupInterval( + instanceId, + tableName, + runtimeServiceEstimateRollupIntervalBody + ); - return useMutation< + const query = useQuery< Awaited>, TError, - { - instanceId: string; - tableName: string; - data: RuntimeServiceEstimateRollupIntervalBody; - }, - TContext - >(mutationFn, mutationOptions); + TData + >(queryKey, queryFn, { + enabled: !!(instanceId && tableName), + ...queryOptions, + }) as UseQueryStoreResult< + Awaited>, + TError, + TData, + QueryKey + > & { queryKey: QueryKey }; + + query.queryKey = queryKey; + + return query; }; + /** * @summary Estimates the smallest time grain present in the column */ @@ -967,81 +990,34 @@ export const runtimeServiceGenerateTimeSeries = ( }); }; -export type RuntimeServiceGenerateTimeSeriesMutationResult = NonNullable< - Awaited> ->; -export type RuntimeServiceGenerateTimeSeriesMutationBody = - RuntimeServiceGenerateTimeSeriesBody; -export type RuntimeServiceGenerateTimeSeriesMutationError = RpcStatus; - -export const useRuntimeServiceGenerateTimeSeries = < - TError = RpcStatus, - TContext = unknown ->(options?: { - mutation?: UseMutationOptions< - Awaited>, - TError, - { instanceId: string; data: RuntimeServiceGenerateTimeSeriesBody }, - TContext - >; -}) => { - const { mutation: mutationOptions } = options ?? {}; - - const mutationFn: MutationFunction< - Awaited>, - { instanceId: string; data: RuntimeServiceGenerateTimeSeriesBody } - > = (props) => { - const { instanceId, data } = props ?? {}; - - return runtimeServiceGenerateTimeSeries(instanceId, data); - }; - - return useMutation< - Awaited>, - TError, - { instanceId: string; data: RuntimeServiceGenerateTimeSeriesBody }, - TContext - >(mutationFn, mutationOptions); -}; -/** - * @summary MetricsViewMeta returns metadata about a metrics view. -It's comparable to calling GetCatalogObject and will be deprecated in the future. - */ -export const runtimeServiceMetricsViewMeta = ( - instanceId: string, - metricsViewName: string -) => { - return httpClient({ - url: `/v1/instances/${instanceId}/metrics-views/${metricsViewName}/meta`, - method: "post", - }); -}; - -export const getRuntimeServiceMetricsViewMetaQueryKey = ( +export const getRuntimeServiceGenerateTimeSeriesQueryKey = ( instanceId: string, - metricsViewName: string -) => [`/v1/instances/${instanceId}/metrics-views/${metricsViewName}/meta`]; + runtimeServiceGenerateTimeSeriesBody: RuntimeServiceGenerateTimeSeriesBody +) => [ + `/v1/instances/${instanceId}/generate-timeseries`, + runtimeServiceGenerateTimeSeriesBody, +]; -export type RuntimeServiceMetricsViewMetaQueryResult = NonNullable< - Awaited> +export type RuntimeServiceGenerateTimeSeriesQueryResult = NonNullable< + Awaited> >; -export type RuntimeServiceMetricsViewMetaQueryError = RpcStatus; +export type RuntimeServiceGenerateTimeSeriesQueryError = RpcStatus; -export const useRuntimeServiceMetricsViewMeta = < - TData = Awaited>, +export const useRuntimeServiceGenerateTimeSeries = < + TData = Awaited>, TError = RpcStatus >( instanceId: string, - metricsViewName: string, + runtimeServiceGenerateTimeSeriesBody: RuntimeServiceGenerateTimeSeriesBody, options?: { query?: UseQueryOptions< - Awaited>, + Awaited>, TError, TData >; } ): UseQueryStoreResult< - Awaited>, + Awaited>, TError, TData, QueryKey @@ -1050,21 +1026,28 @@ export const useRuntimeServiceMetricsViewMeta = < const queryKey = queryOptions?.queryKey ?? - getRuntimeServiceMetricsViewMetaQueryKey(instanceId, metricsViewName); + getRuntimeServiceGenerateTimeSeriesQueryKey( + instanceId, + runtimeServiceGenerateTimeSeriesBody + ); const queryFn: QueryFunction< - Awaited> - > = () => runtimeServiceMetricsViewMeta(instanceId, metricsViewName); + Awaited> + > = () => + runtimeServiceGenerateTimeSeries( + instanceId, + runtimeServiceGenerateTimeSeriesBody + ); const query = useQuery< - Awaited>, + Awaited>, TError, TData >(queryKey, queryFn, { - enabled: !!(instanceId && metricsViewName), + enabled: !!instanceId, ...queryOptions, }) as UseQueryStoreResult< - Awaited>, + Awaited>, TError, TData, QueryKey @@ -1918,41 +1901,64 @@ export const runtimeServiceProfileColumns = ( }); }; -export type RuntimeServiceProfileColumnsMutationResult = NonNullable< +export const getRuntimeServiceProfileColumnsQueryKey = ( + instanceId: string, + tableName: string +) => [`/v1/instances/${instanceId}/tables/${tableName}/profile-columns`]; + +export type RuntimeServiceProfileColumnsQueryResult = NonNullable< Awaited> >; - -export type RuntimeServiceProfileColumnsMutationError = RpcStatus; +export type RuntimeServiceProfileColumnsQueryError = RpcStatus; export const useRuntimeServiceProfileColumns = < - TError = RpcStatus, - TContext = unknown ->(options?: { - mutation?: UseMutationOptions< - Awaited>, - TError, - { instanceId: string; tableName: string }, - TContext - >; -}) => { - const { mutation: mutationOptions } = options ?? {}; + TData = Awaited>, + TError = RpcStatus +>( + instanceId: string, + tableName: string, + options?: { + query?: UseQueryOptions< + Awaited>, + TError, + TData + >; + } +): UseQueryStoreResult< + Awaited>, + TError, + TData, + QueryKey +> & { queryKey: QueryKey } => { + const { query: queryOptions } = options ?? {}; - const mutationFn: MutationFunction< - Awaited>, - { instanceId: string; tableName: string } - > = (props) => { - const { instanceId, tableName } = props ?? {}; + const queryKey = + queryOptions?.queryKey ?? + getRuntimeServiceProfileColumnsQueryKey(instanceId, tableName); - return runtimeServiceProfileColumns(instanceId, tableName); - }; + const queryFn: QueryFunction< + Awaited> + > = () => runtimeServiceProfileColumns(instanceId, tableName); - return useMutation< + const query = useQuery< Awaited>, TError, - { instanceId: string; tableName: string }, - TContext - >(mutationFn, mutationOptions); + TData + >(queryKey, queryFn, { + enabled: !!(instanceId && tableName), + ...queryOptions, + }) as UseQueryStoreResult< + Awaited>, + TError, + TData, + QueryKey + > & { queryKey: QueryKey }; + + query.queryKey = queryKey; + + return query; }; + /** * @summary TableRows (TODO: add description) */ @@ -2140,56 +2146,82 @@ export const runtimeServiceGetTopK = ( }); }; -export type RuntimeServiceGetTopKMutationResult = NonNullable< +export const getRuntimeServiceGetTopKQueryKey = ( + instanceId: string, + tableName: string, + columnName: string, + runtimeServiceGetTopKBody: RuntimeServiceGetTopKBody +) => [ + `/v1/instances/${instanceId}/topk/${tableName}/${columnName}`, + runtimeServiceGetTopKBody, +]; + +export type RuntimeServiceGetTopKQueryResult = NonNullable< Awaited> >; -export type RuntimeServiceGetTopKMutationBody = RuntimeServiceGetTopKBody; -export type RuntimeServiceGetTopKMutationError = RpcStatus; +export type RuntimeServiceGetTopKQueryError = RpcStatus; export const useRuntimeServiceGetTopK = < - TError = RpcStatus, - TContext = unknown ->(options?: { - mutation?: UseMutationOptions< - Awaited>, - TError, - { - instanceId: string; - tableName: string; - columnName: string; - data: RuntimeServiceGetTopKBody; - }, - TContext - >; -}) => { - const { mutation: mutationOptions } = options ?? {}; + TData = Awaited>, + TError = RpcStatus +>( + instanceId: string, + tableName: string, + columnName: string, + runtimeServiceGetTopKBody: RuntimeServiceGetTopKBody, + options?: { + query?: UseQueryOptions< + Awaited>, + TError, + TData + >; + } +): UseQueryStoreResult< + Awaited>, + TError, + TData, + QueryKey +> & { queryKey: QueryKey } => { + const { query: queryOptions } = options ?? {}; - const mutationFn: MutationFunction< - Awaited>, - { - instanceId: string; - tableName: string; - columnName: string; - data: RuntimeServiceGetTopKBody; - } - > = (props) => { - const { instanceId, tableName, columnName, data } = props ?? {}; + const queryKey = + queryOptions?.queryKey ?? + getRuntimeServiceGetTopKQueryKey( + instanceId, + tableName, + columnName, + runtimeServiceGetTopKBody + ); - return runtimeServiceGetTopK(instanceId, tableName, columnName, data); - }; + const queryFn: QueryFunction< + Awaited> + > = () => + runtimeServiceGetTopK( + instanceId, + tableName, + columnName, + runtimeServiceGetTopKBody + ); - return useMutation< + const query = useQuery< Awaited>, TError, - { - instanceId: string; - tableName: string; - columnName: string; - data: RuntimeServiceGetTopKBody; - }, - TContext - >(mutationFn, mutationOptions); + TData + >(queryKey, queryFn, { + enabled: !!(instanceId && tableName && columnName), + ...queryOptions, + }) as UseQueryStoreResult< + Awaited>, + TError, + TData, + QueryKey + > & { queryKey: QueryKey }; + + query.queryKey = queryKey; + + return query; }; + /** * @summary Ping returns information about the runtime */