class Google::Cloud::Spanner::Database::Job::List

# List

List is a special case Array with additional values for database operations.

Attributes

grpc[RW]

@private The gRPC page enumerable object.

service[RW]

@private The gRPC Service object.

Public Class Methods

from_grpc(grpc, service) click to toggle source

@private

New Database::Job::List from a `Gapic::PagedEnumerable<Google::Longrunning::Operation>` object. Operation object is a database operation.

# File lib/google/cloud/spanner/database/job/list.rb, line 152
def self.from_grpc grpc, service
  operations_client = \
    service.databases.instance_variable_get "@operations_client"
  jobs = new(Array(grpc.response.operations).map do |job_grpc|
    Job.from_grpc \
      Gapic::Operation.new(job_grpc, operations_client),
      service
  end)
  jobs.grpc = grpc
  jobs.service = service
  jobs
end
new(arr = []) click to toggle source

@private Create a new Database::Job::List with an array of Google::Lognrunning::Operation instances.

Calls superclass method
# File lib/google/cloud/spanner/database/job/list.rb, line 41
def initialize arr = []
  super arr
end

Public Instance Methods

all(&block) click to toggle source

Retrieves remaining results by repeatedly invoking {#next} until {#next?} returns `false`. Calls the given block once for each result, which is passed as the argument to the block.

An Enumerator is returned if no block is given.

This method will make repeated API calls until all remaining results are retrieved. (Unlike `#each`, for example, which merely iterates over the results returned by a single API call.) Use with caution.

@yield [job] The block for accessing each database job. @yieldparam [Google::Cloud::Spanner::Database::Job] job The

database job object.

@return [Enumerator]

@example Iterating each database job by passing a block:

require "google/cloud/spanner"

spanner = Google::Cloud::Spanner.new

instance = spanner.instance "my-instance"

jobs = instance.database_operations
jobs.all do |job|
  puts job.database.database_id
end

@example Using the enumerator by not passing a block:

require "google/cloud/spanner"

spanner = Google::Cloud::Spanner.new

instance = spanner.instance "my-instance"

jobs = instance.database_operations
all_database_ids = jobs.all.map do |job|
  job.database.database_id
end
# File lib/google/cloud/spanner/database/job/list.rb, line 133
def all &block
  return enum_for :all unless block_given?

  results = self
  loop do
    results.each(&block)
    break unless next?
    grpc.next_page
    results = self.class.from_grpc grpc, service
  end
end
next() click to toggle source

Retrieve the next page of database jobs.

@return [Google::Cloud::Spanner::Database::Job::List]

@example

require "google/cloud/spanner"

spanner = Google::Cloud::Spanner.new

instance = spanner.instance "my-instance"

jobs = instance.database_operations
if jobs.next?
  next_jobs = jobs.next
end
# File lib/google/cloud/spanner/database/job/list.rb, line 83
def next
  ensure_service!

  return nil unless next?
  grpc.next_page
  self.class.from_grpc grpc, service
end
next?() click to toggle source

Whether there is a next page of database jobs.

@return [Boolean]

@example

require "google/cloud/spanner"

spanner = Google::Cloud::Spanner.new

instance = spanner.instance "my-instance"

jobs = instance.database_operations
if jobs.next?
  next_jobs = jobs.next
end
# File lib/google/cloud/spanner/database/job/list.rb, line 62
def next?
  grpc.next_page?
end

Protected Instance Methods

ensure_service!() click to toggle source

Raise an error unless an active service is available.

# File lib/google/cloud/spanner/database/job/list.rb, line 169
def ensure_service!
  raise "Must have active connection" unless @service
end