Class: Google::Cloud::Datastore::Filter

Inherits:
Object
  • Object
show all
Defined in:
lib/google/cloud/datastore/filter.rb

Overview

Filter

Represents the filter criteria for a datastore query.

Examples:

Run a query with a simple property filter.

require "google/cloud/datastore"

datastore = Google::Cloud::Datastore.new

filter = Google::Cloud::Datastore::Filter.new("done", "=", "false")

query = Google::Cloud::Datastore::Query.new
query.kind("Task")
     .where(filter)

tasks = datastore.run query

Construct a composite filter with a logical OR.

require "google/cloud/datastore"

datastore = Google::Cloud::Datastore.new

filter = Google::Cloud::Datastore::Filter.new("done", "=", "false")
                                         .or("priority", ">=", "4")

query = Google::Cloud::Datastore::Query.new
query.kind("Task")
     .where(filter)

tasks = datastore.run query

Construct a composite filter by combining multiple filters.

require "google/cloud/datastore"

datastore = Google::Cloud::Datastore.new

filter_1 = Google::Cloud::Datastore::Filter.new("done", "=", "false")
filter_2 = Google::Cloud::Datastore::Filter.new("priority", ">=", "4")
filter = filter_1.or(filter_2)

query = Google::Cloud::Datastore::Query.new
query.kind("Task")
     .where(filter)

tasks = datastore.run query

Instance Method Summary collapse

Constructor Details

#initialize(name, operator, value) ⇒ Filter

Creates a new Filter.

Examples:

require "google/cloud/datastore"

filter = Google::Cloud::Datastore::Filter.new("done", "=", "false")


81
82
83
# File 'lib/google/cloud/datastore/filter.rb', line 81

def initialize name, operator, value
  @grpc = create_property_filter name, operator, value
end

Instance Method Details

#and(name, operator, value) ⇒ Object #and(filter) ⇒ Object

Joins two filters with an AND operator.

Examples:

Join the filter with a property filter

require "google/cloud/datastore"

datastore = Google::Cloud::Datastore.new

filter = Google::Cloud::Filter.new("done", "=", false)
                              .and("priority", ">=", 4)

Join the filter with a filter object

require "google/cloud/datastore"

datastore = Google::Cloud::Datastore.new

filter_1 = Google::Cloud::Filter.new("done", "=", false)
filter_2 = Google::Cloud::Filter.new("priority", ">=", 4)

filter = filter_1.and(filter_2)

Overloads:

  • #and(name, operator, value) ⇒ Object

    Joins the filter with a property filter

    Parameters:

    • name (String)
    • operator (String)
    • value
  • #and(filter) ⇒ Object

    Joins the filter with a Filter object

    Parameters:



116
117
118
# File 'lib/google/cloud/datastore/filter.rb', line 116

def and name_or_filter, operator = nil, value = nil
  combine_filters composite_filter_and, name_or_filter, operator, value
end

#or(name, operator, value) ⇒ Object #or(filter) ⇒ Object

Joins two filters with an OR operator.

Examples:

Join the filter with a property filter

require "google/cloud/datastore"

datastore = Google::Cloud::Datastore.new

filter = Google::Cloud::Filter.new("done", "=", false)
                              .or("priority", ">=", 4)

Join the filter with a filter object

require "google/cloud/datastore"

datastore = Google::Cloud::Datastore.new

filter_1 = Google::Cloud::Filter.new("done", "=", false)
filter_2 = Google::Cloud::Filter.new("priority", ">=", 4)

filter = filter_1.or(filter_2)

Overloads:

  • #or(name, operator, value) ⇒ Object

    Joins the filter with a property filter

    Parameters:

    • name (String)

      The property to filter by.

    • operator (String)

      The operator to filter by. Defaults to nil.

    • value (Object)

      The value to compare the property to. Defaults to nil. Possible values are:

      • Integer
      • Float/BigDecimal
      • String
      • Boolean
      • Array
      • Date/Time
      • StringIO
      • Google::Cloud::Datastore::Key
      • Google::Cloud::Datastore::Entity
      • nil
  • #or(filter) ⇒ Object

    Joins the filter with a Filter object

    Parameters:



162
163
164
# File 'lib/google/cloud/datastore/filter.rb', line 162

def or name_or_filter, operator = nil, value = nil
  combine_filters composite_filter_or, name_or_filter, operator, value
end