cosmos-sdk/proto/cosmos/orm/query/v1alpha1/query.proto

132 lines
4.0 KiB
Protocol Buffer

syntax = "proto3";
package cosmos.orm.query.v1alpha1;
import "google/protobuf/timestamp.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/any.proto";
import "cosmos/base/query/v1beta1/pagination.proto";
// Query is a generic gRPC service for querying ORM data.
service Query {
// Get queries an ORM table against an unique index.
rpc Get(GetRequest) returns (GetResponse);
// List queries an ORM table against an index.
rpc List(ListRequest) returns (ListResponse);
}
// GetRequest is the Query/Get request type.
message GetRequest {
// message_name is the fully-qualified message name of the ORM table being queried.
string message_name = 1;
// index is the index fields expression used in orm definitions. If it
// is empty, the table's primary key is assumed. If it is non-empty, it must
// refer to an unique index.
string index = 2;
// values are the values of the fields corresponding to the requested index.
// There must be as many values provided as there are fields in the index and
// these values must correspond to the index field types.
repeated IndexValue values = 3;
}
// GetResponse is the Query/Get response type.
message GetResponse {
// result is the result of the get query. If no value is found, the gRPC
// status code NOT_FOUND will be returned.
google.protobuf.Any result = 1;
}
// ListRequest is the Query/List request type.
message ListRequest {
// message_name is the fully-qualified message name of the ORM table being queried.
string message_name = 1;
// index is the index fields expression used in orm definitions. If it
// is empty, the table's primary key is assumed.
string index = 2;
// query is the query expression corresponding to the provided index. If
// neither prefix nor range is specified, the query will list all the fields
// in the index.
oneof query {
// prefix defines a prefix query.
Prefix prefix = 3;
// range defines a range query.
Range range = 4;
}
// pagination is the pagination request.
cosmos.base.query.v1beta1.PageRequest pagination = 5;
// Prefix specifies the arguments to a prefix query.
message Prefix {
// values specifies the index values for the prefix query.
// It is valid to special a partial prefix with fewer values than
// the number of fields in the index.
repeated IndexValue values = 1;
}
// Range specifies the arguments to a range query.
message Range {
// start specifies the starting index values for the range query.
// It is valid to provide fewer values than the number of fields in the
// index.
repeated IndexValue start = 1;
// end specifies the inclusive ending index values for the range query.
// It is valid to provide fewer values than the number of fields in the
// index.
repeated IndexValue end = 2;
}
}
// ListResponse is the Query/List response type.
message ListResponse {
// results are the results of the query.
repeated google.protobuf.Any results = 1;
// pagination is the pagination response.
cosmos.base.query.v1beta1.PageResponse pagination = 5;
}
// IndexValue represents the value of a field in an ORM index expression.
message IndexValue {
// value specifies the index value
oneof value {
// uint specifies a value for an uint32, fixed32, uint64, or fixed64
// index field.
uint64 uint = 1;
// int64 specifies a value for an int32, sfixed32, int64, or sfixed64
// index field.
int64 int = 2;
// str specifies a value for a string index field.
string str = 3;
// bytes specifies a value for a bytes index field.
bytes bytes = 4;
// enum specifies a value for an enum index field.
string enum = 5;
// bool specifies a value for a bool index field.
bool bool = 6;
// timestamp specifies a value for a timestamp index field.
google.protobuf.Timestamp timestamp = 7;
// duration specifies a value for a duration index field.
google.protobuf.Duration duration = 8;
}
}