You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
237 lines
6.5 KiB
237 lines
6.5 KiB
6 years ago
|
// Copyright 2019 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.firestore.v1beta1;
|
||
|
|
||
|
import "google/firestore/v1beta1/document.proto";
|
||
|
import "google/protobuf/wrappers.proto";
|
||
|
import "google/api/annotations.proto";
|
||
|
|
||
|
option csharp_namespace = "Google.Cloud.Firestore.V1Beta1";
|
||
|
option go_package = "google.golang.org/genproto/googleapis/firestore/v1beta1;firestore";
|
||
|
option java_multiple_files = true;
|
||
|
option java_outer_classname = "QueryProto";
|
||
|
option java_package = "com.google.firestore.v1beta1";
|
||
|
option objc_class_prefix = "GCFS";
|
||
|
option php_namespace = "Google\\Cloud\\Firestore\\V1beta1";
|
||
|
|
||
|
|
||
|
// A Firestore query.
|
||
|
message StructuredQuery {
|
||
|
// A selection of a collection, such as `messages as m1`.
|
||
|
message CollectionSelector {
|
||
|
// The collection ID.
|
||
|
// When set, selects only collections with this ID.
|
||
|
string collection_id = 2;
|
||
|
|
||
|
// When false, selects only collections that are immediate children of
|
||
|
// the `parent` specified in the containing `RunQueryRequest`.
|
||
|
// When true, selects all descendant collections.
|
||
|
bool all_descendants = 3;
|
||
|
}
|
||
|
|
||
|
// A filter.
|
||
|
message Filter {
|
||
|
// The type of filter.
|
||
|
oneof filter_type {
|
||
|
// A composite filter.
|
||
|
CompositeFilter composite_filter = 1;
|
||
|
|
||
|
// A filter on a document field.
|
||
|
FieldFilter field_filter = 2;
|
||
|
|
||
|
// A filter that takes exactly one argument.
|
||
|
UnaryFilter unary_filter = 3;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// A filter that merges multiple other filters using the given operator.
|
||
|
message CompositeFilter {
|
||
|
// A composite filter operator.
|
||
|
enum Operator {
|
||
|
// Unspecified. This value must not be used.
|
||
|
OPERATOR_UNSPECIFIED = 0;
|
||
|
|
||
|
// The results are required to satisfy each of the combined filters.
|
||
|
AND = 1;
|
||
|
}
|
||
|
|
||
|
// The operator for combining multiple filters.
|
||
|
Operator op = 1;
|
||
|
|
||
|
// The list of filters to combine.
|
||
|
// Must contain at least one filter.
|
||
|
repeated Filter filters = 2;
|
||
|
}
|
||
|
|
||
|
// A filter on a specific field.
|
||
|
message FieldFilter {
|
||
|
// A field filter operator.
|
||
|
enum Operator {
|
||
|
// Unspecified. This value must not be used.
|
||
|
OPERATOR_UNSPECIFIED = 0;
|
||
|
|
||
|
// Less than. Requires that the field come first in `order_by`.
|
||
|
LESS_THAN = 1;
|
||
|
|
||
|
// Less than or equal. Requires that the field come first in `order_by`.
|
||
|
LESS_THAN_OR_EQUAL = 2;
|
||
|
|
||
|
// Greater than. Requires that the field come first in `order_by`.
|
||
|
GREATER_THAN = 3;
|
||
|
|
||
|
// Greater than or equal. Requires that the field come first in
|
||
|
// `order_by`.
|
||
|
GREATER_THAN_OR_EQUAL = 4;
|
||
|
|
||
|
// Equal.
|
||
|
EQUAL = 5;
|
||
|
|
||
|
// Contains. Requires that the field is an array.
|
||
|
ARRAY_CONTAINS = 7;
|
||
|
}
|
||
|
|
||
|
// The field to filter by.
|
||
|
FieldReference field = 1;
|
||
|
|
||
|
// The operator to filter by.
|
||
|
Operator op = 2;
|
||
|
|
||
|
// The value to compare to.
|
||
|
Value value = 3;
|
||
|
}
|
||
|
|
||
|
// The projection of document's fields to return.
|
||
|
message Projection {
|
||
|
// The fields to return.
|
||
|
//
|
||
|
// If empty, all fields are returned. To only return the name
|
||
|
// of the document, use `['__name__']`.
|
||
|
repeated FieldReference fields = 2;
|
||
|
}
|
||
|
|
||
|
// A filter with a single operand.
|
||
|
message UnaryFilter {
|
||
|
// A unary operator.
|
||
|
enum Operator {
|
||
|
// Unspecified. This value must not be used.
|
||
|
OPERATOR_UNSPECIFIED = 0;
|
||
|
|
||
|
// Test if a field is equal to NaN.
|
||
|
IS_NAN = 2;
|
||
|
|
||
|
// Test if an exprestion evaluates to Null.
|
||
|
IS_NULL = 3;
|
||
|
}
|
||
|
|
||
|
// The unary operator to apply.
|
||
|
Operator op = 1;
|
||
|
|
||
|
// The argument to the filter.
|
||
|
oneof operand_type {
|
||
|
// The field to which to apply the operator.
|
||
|
FieldReference field = 2;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// An order on a field.
|
||
|
message Order {
|
||
|
// The field to order by.
|
||
|
FieldReference field = 1;
|
||
|
|
||
|
// The direction to order by. Defaults to `ASCENDING`.
|
||
|
Direction direction = 2;
|
||
|
}
|
||
|
|
||
|
// A sort direction.
|
||
|
enum Direction {
|
||
|
// Unspecified.
|
||
|
DIRECTION_UNSPECIFIED = 0;
|
||
|
|
||
|
// Ascending.
|
||
|
ASCENDING = 1;
|
||
|
|
||
|
// Descending.
|
||
|
DESCENDING = 2;
|
||
|
}
|
||
|
|
||
|
// A reference to a field, such as `max(messages.time) as max_time`.
|
||
|
message FieldReference {
|
||
|
string field_path = 2;
|
||
|
}
|
||
|
|
||
|
// The projection to return.
|
||
|
Projection select = 1;
|
||
|
|
||
|
// The collections to query.
|
||
|
repeated CollectionSelector from = 2;
|
||
|
|
||
|
// The filter to apply.
|
||
|
Filter where = 3;
|
||
|
|
||
|
// The order to apply to the query results.
|
||
|
//
|
||
|
// Firestore guarantees a stable ordering through the following rules:
|
||
|
//
|
||
|
// * Any field required to appear in `order_by`, that is not already
|
||
|
// specified in `order_by`, is appended to the order in field name order
|
||
|
// by default.
|
||
|
// * If an order on `__name__` is not specified, it is appended by default.
|
||
|
//
|
||
|
// Fields are appended with the same sort direction as the last order
|
||
|
// specified, or 'ASCENDING' if no order was specified. For example:
|
||
|
//
|
||
|
// * `SELECT * FROM Foo ORDER BY A` becomes
|
||
|
// `SELECT * FROM Foo ORDER BY A, __name__`
|
||
|
// * `SELECT * FROM Foo ORDER BY A DESC` becomes
|
||
|
// `SELECT * FROM Foo ORDER BY A DESC, __name__ DESC`
|
||
|
// * `SELECT * FROM Foo WHERE A > 1` becomes
|
||
|
// `SELECT * FROM Foo WHERE A > 1 ORDER BY A, __name__`
|
||
|
repeated Order order_by = 4;
|
||
|
|
||
|
// A starting point for the query results.
|
||
|
Cursor start_at = 7;
|
||
|
|
||
|
// A end point for the query results.
|
||
|
Cursor end_at = 8;
|
||
|
|
||
|
// The number of results to skip.
|
||
|
//
|
||
|
// Applies before limit, but after all other constraints. Must be >= 0 if
|
||
|
// specified.
|
||
|
int32 offset = 6;
|
||
|
|
||
|
// The maximum number of results to return.
|
||
|
//
|
||
|
// Applies after all other constraints.
|
||
|
// Must be >= 0 if specified.
|
||
|
google.protobuf.Int32Value limit = 5;
|
||
|
}
|
||
|
|
||
|
// A position in a query result set.
|
||
|
message Cursor {
|
||
|
// The values that represent a position, in the order they appear in
|
||
|
// the order by clause of a query.
|
||
|
//
|
||
|
// Can contain fewer values than specified in the order by clause.
|
||
|
repeated Value values = 1;
|
||
|
|
||
|
// If the position is just before or just after the given values, relative
|
||
|
// to the sort order defined by the query.
|
||
|
bool before = 2;
|
||
|
}
|