class Curator::Riak::DataStore

Public Instance Methods

_bucket(name) click to toggle source
# File lib/curator/riak/data_store.rb, line 76
def _bucket(name)
  client.bucket(_bucket_name(name))
end
_bucket_name(name) click to toggle source
# File lib/curator/riak/data_store.rb, line 80
def _bucket_name(name)
  bucket_prefix + ":" + name
end
_deserialize(data) click to toggle source
# File lib/curator/riak/data_store.rb, line 84
def _deserialize(data)
  deserialized_data = data.dup
  deserialized_data["created_at"] = Time.parse(data["created_at"]) if data["created_at"]
  deserialized_data["updated_at"] = Time.parse(data["updated_at"]) if data["updated_at"]
  deserialized_data
end
_find_key_by_index(bucket, index_name, query) click to toggle source
# File lib/curator/riak/data_store.rb, line 91
def _find_key_by_index(bucket, index_name, query)
  bucket.get_index("#{index_name}_bin", query)
end
bucket_prefix() click to toggle source
# File lib/curator/riak/data_store.rb, line 15
def bucket_prefix
  "#{Curator.config.bucket_prefix}:#{Curator.config.environment}"
end
client() click to toggle source
# File lib/curator/riak/data_store.rb, line 7
def client
  return @client if @client
  return @client = Curator.config.client if Curator.config.client

  yml_config = YAML.load(File.read(Curator.config.riak_config_file))[Curator.config.environment]
  @client = ::Riak::Client.new(yml_config)
end
delete(bucket_name, key) click to toggle source
# File lib/curator/riak/data_store.rb, line 19
def delete(bucket_name, key)
  bucket = _bucket(bucket_name)
  object = bucket.get(key)
  object.delete
end
find_all(bucket_name) click to toggle source
# File lib/curator/riak/data_store.rb, line 50
def find_all(bucket_name)
  bucket = _bucket(bucket_name)
  bucket.keys.map { |key| find_by_key(bucket_name, key) }
end
find_by_attribute(bucket_name, index_name, query) click to toggle source
# File lib/curator/riak/data_store.rb, line 65
def find_by_attribute(bucket_name, index_name, query)
  return [] if query.nil?
  bucket = _bucket(bucket_name)
  begin
    keys = _find_key_by_index(bucket, index_name.to_s, query)
    keys.map { |key| find_by_key(bucket_name, key) }
  rescue ::Riak::ProtobuffsFailedRequest => failed_request
    raise failed_request unless failed_request.not_found?
  end
end
find_by_key(bucket_name, key) click to toggle source
# File lib/curator/riak/data_store.rb, line 55
def find_by_key(bucket_name, key)
  bucket = _bucket(bucket_name)
  begin
    object = bucket.get(key)
    { :key => object.key, :data => _deserialize(object.data) } unless object.data.empty?
  rescue ::Riak::ProtobuffsFailedRequest => failed_request
    raise failed_request unless failed_request.not_found?
  end
end
ping() click to toggle source
# File lib/curator/riak/data_store.rb, line 25
def ping
  client.ping
end
save(options) click to toggle source
# File lib/curator/riak/data_store.rb, line 38
def save(options)
  bucket = _bucket(options[:collection_name])
  object = ::Riak::RObject.new(bucket, options[:key])
  object.content_type = options.fetch(:content_type, "application/json")
  object.data = options[:value]
  options.fetch(:index, {}).each do |index_name, index_data|
    object.indexes["#{index_name}_bin"].merge(Array(index_data))
  end
  result = object.store
  result.key
end
settings(bucket_name) click to toggle source
# File lib/curator/riak/data_store.rb, line 29
def settings(bucket_name)
  _bucket(bucket_name).props.dup.freeze
end
update_settings!(bucket_name, updated_settings) click to toggle source
# File lib/curator/riak/data_store.rb, line 33
def update_settings!(bucket_name, updated_settings)
  return true if updated_settings.empty?
  _bucket(bucket_name).props = updated_settings
end