module ActiveRemote::Bulk::Persistence::ClassMethods

Public Instance Methods

create_all(*records) click to toggle source

Create multiple records at the same time. Returns a collection of active remote objects from the passed records. Records that were not created are returned with error messages indicating what went wrong.

Examples

# A single hash
Tag.create_all({ :name => 'foo' })

# Hashes
Tag.create_all({ :name => 'foo' }, { :name => 'bar' })

# Active remote objects
Tag.create_all(Tag.new(:name => 'foo'), Tag.new(:name => 'bar'))

# Protobuf objects
Tag.create_all(Generic::Remote::Tag.new(:name => 'foo'), Generic::Remote::Tag.new(:name => 'bar'))

# Bulk protobuf object
Tag.create_all(Generic::Remote::Tags.new(:records => [ Generic::Remote::Tag.new(:name => 'foo') ])
# File lib/active_remote/bulk/persistence.rb, line 31
def create_all(*records)
  response = rpc.execute(:create_all, _parse_records(records))

  if response.respond_to?(:records)
    serialize_records(response.records)
  else
    raise ::ActiveRemote::Bulk::InvalidResponse
  end
end
delete_all(*records) click to toggle source

Delete multiple records at the same time. Returns a collection of active remote objects from the passed records. Records that were not deleted are returned with error messages indicating what went wrong.

Examples

# A single hash
Tag.delete_all({ :guid => 'foo' })

# Hashes
Tag.delete_all({ :guid => 'foo' }, { :guid => 'bar' })

# Active remote objects
Tag.delete_all(Tag.new(:guid => 'foo'), Tag.new(:guid => 'bar'))

# Protobuf objects
Tag.delete_all(Generic::Remote::Tag.new(:guid => 'foo'), Generic::Remote::Tag.new(:guid => 'bar'))

# Bulk protobuf object
Tag.delete_all(Generic::Remote::Tags.new(:records => [ Generic::Remote::Tag.new(:guid => 'foo') ])
# File lib/active_remote/bulk/persistence.rb, line 62
def delete_all(*records)
  response = rpc.execute(:delete_all, _parse_records(records))

  if response.respond_to?(:records)
    serialize_records(response.records)
  else
    raise ::ActiveRemote::Bulk::InvalidResponse
  end
end
destroy_all(*records) click to toggle source

Destroy multiple records at the same time. Returns a collection of active remote objects from the passed records. Records that were not destroyed are returned with error messages indicating what went wrong.

Examples

# A single hash
Tag.destroy_all({ :guid => 'foo' })

# Hashes
Tag.destroy_all({ :guid => 'foo' }, { :guid => 'bar' })

# Active remote objects
Tag.destroy_all(Tag.new(:guid => 'foo'), Tag.new(:guid => 'bar'))

# Protobuf objects
Tag.destroy_all(Generic::Remote::Tag.new(:guid => 'foo'), Generic::Remote::Tag.new(:guid => 'bar'))

# Bulk protobuf object
Tag.destroy_all(Generic::Remote::Tags.new(:records => [ Generic::Remote::Tag.new(:guid => 'foo') ])
# File lib/active_remote/bulk/persistence.rb, line 93
def destroy_all(*records)
  response = rpc.execute(:destroy_all, _parse_records(records))

  if response.respond_to?(:records)
    serialize_records(response.records)
  else
    raise ::ActiveRemote::Bulk::InvalidResponse
  end
end
update_all(*records) click to toggle source

Update multiple records at the same time. Returns a collection of active remote objects from the passed records. Records that were not updated are returned with error messages indicating what went wrong.

Examples

# A single hash
Tag.update_all({ :guid => 'foo', :name => 'baz' })

# Hashes
Tag.update_all({ :guid => 'foo', :name => 'baz' }, { :guid => 'bar', :name => 'qux' })

# Active remote objects
Tag.update_all(Tag.new(:guid => 'foo', :name => 'baz'), Tag.new(:guid => 'bar', :name => 'qux'))

# Protobuf objects
Tag.update_all(Generic::Remote::Tag.new(:guid => 'foo', :name => 'baz'), Generic::Remote::Tag.new(:guid => 'bar', :name => 'qux'))

# Bulk protobuf object
Tag.update_all(Generic::Remote::Tags.new(:records => [ Generic::Remote::Tag.new(:guid => 'foo', :name => 'baz') ])
# File lib/active_remote/bulk/persistence.rb, line 124
def update_all(*records)
  response = rpc.execute(:update_all, _parse_records(records))

  if response.respond_to?(:records)
    serialize_records(response.records)
  else
    raise ::ActiveRemote::Bulk::InvalidResponse
  end
end

Private Instance Methods

_parse_records(*records) click to toggle source
# File lib/active_remote/bulk/persistence.rb, line 136
def _parse_records(*records)
  records.flatten!

  if records.first.respond_to?(:attributes)
    records.collect!(&:attributes)
  else
    records.collect!(&:to_hash)
  end

  return records.first if records.first && records.first.key?(:records)

  # If we made it this far, build a bulk-formatted hash.
  { records: records }
end