summaryrefslogtreecommitdiff
path: root/third_party/googleapis/google/firestore/v1beta1/query.proto
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/googleapis/google/firestore/v1beta1/query.proto')
-rw-r--r--third_party/googleapis/google/firestore/v1beta1/query.proto300
1 files changed, 300 insertions, 0 deletions
diff --git a/third_party/googleapis/google/firestore/v1beta1/query.proto b/third_party/googleapis/google/firestore/v1beta1/query.proto
new file mode 100644
index 0000000..cfb5401
--- /dev/null
+++ b/third_party/googleapis/google/firestore/v1beta1/query.proto
@@ -0,0 +1,300 @@
+// Copyright 2021 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";
+
+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";
+option ruby_package = "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;
+
+ // The given `field` is less than the given `value`.
+ //
+ // Requires:
+ //
+ // * That `field` come first in `order_by`.
+ LESS_THAN = 1;
+
+ // The given `field` is less than or equal to the given `value`.
+ //
+ // Requires:
+ //
+ // * That `field` come first in `order_by`.
+ LESS_THAN_OR_EQUAL = 2;
+
+ // The given `field` is greater than the given `value`.
+ //
+ // Requires:
+ //
+ // * That `field` come first in `order_by`.
+ GREATER_THAN = 3;
+
+ // The given `field` is greater than or equal to the given `value`.
+ //
+ // Requires:
+ //
+ // * That `field` come first in `order_by`.
+ GREATER_THAN_OR_EQUAL = 4;
+
+ // The given `field` is equal to the given `value`.
+ EQUAL = 5;
+
+ // The given `field` is not equal to the given `value`.
+ //
+ // Requires:
+ //
+ // * No other `NOT_EQUAL`, `NOT_IN`, `IS_NOT_NULL`, or `IS_NOT_NAN`.
+ // * That `field` comes first in the `order_by`.
+ NOT_EQUAL = 6;
+
+ // The given `field` is an array that contains the given `value`.
+ ARRAY_CONTAINS = 7;
+
+ // The given `field` is equal to at least one value in the given array.
+ //
+ // Requires:
+ //
+ // * That `value` is a non-empty `ArrayValue` with at most 10 values.
+ // * No other `IN` or `ARRAY_CONTAINS_ANY` or `NOT_IN`.
+ IN = 8;
+
+ // The given `field` is an array that contains any of the values in the
+ // given array.
+ //
+ // Requires:
+ //
+ // * That `value` is a non-empty `ArrayValue` with at most 10 values.
+ // * No other `IN` or `ARRAY_CONTAINS_ANY` or `NOT_IN`.
+ ARRAY_CONTAINS_ANY = 9;
+
+ // The value of the `field` is not in the given array.
+ //
+ // Requires:
+ //
+ // * That `value` is a non-empty `ArrayValue` with at most 10 values.
+ // * No other `IN`, `ARRAY_CONTAINS_ANY`, `NOT_IN`, `NOT_EQUAL`,
+ // `IS_NOT_NULL`, or `IS_NOT_NAN`.
+ // * That `field` comes first in the `order_by`.
+ NOT_IN = 10;
+ }
+
+ // The field to filter by.
+ FieldReference field = 1;
+
+ // The operator to filter by.
+ Operator op = 2;
+
+ // The value to compare to.
+ Value value = 3;
+ }
+
+ // A filter with a single operand.
+ message UnaryFilter {
+ // A unary operator.
+ enum Operator {
+ // Unspecified. This value must not be used.
+ OPERATOR_UNSPECIFIED = 0;
+
+ // The given `field` is equal to `NaN`.
+ IS_NAN = 2;
+
+ // The given `field` is equal to `NULL`.
+ IS_NULL = 3;
+
+ // The given `field` is not equal to `NaN`.
+ //
+ // Requires:
+ //
+ // * No other `NOT_EQUAL`, `NOT_IN`, `IS_NOT_NULL`, or `IS_NOT_NAN`.
+ // * That `field` comes first in the `order_by`.
+ IS_NOT_NAN = 4;
+
+ // The given `field` is not equal to `NULL`.
+ //
+ // Requires:
+ //
+ // * A single `NOT_EQUAL`, `NOT_IN`, `IS_NOT_NULL`, or `IS_NOT_NAN`.
+ // * That `field` comes first in the `order_by`.
+ IS_NOT_NULL = 5;
+ }
+
+ // 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;
+ }
+ }
+
+ // A reference to a field, such as `max(messages.time) as max_time`.
+ message FieldReference {
+ string field_path = 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;
+ }
+
+ // 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 sort direction.
+ enum Direction {
+ // Unspecified.
+ DIRECTION_UNSPECIFIED = 0;
+
+ // Ascending.
+ ASCENDING = 1;
+
+ // Descending.
+ DESCENDING = 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;
+}