class DeepStore::DAO
Constants
- Result
Attributes
adapter[R]
bucket[R]
codec[R]
resource_class[R]
Public Class Methods
new(data = {})
click to toggle source
# File lib/deep_store/dao.rb, line 7 def initialize(data = {}) @adapter = data.fetch(:adapter, DeepStore.adapter) @bucket = data.fetch(:bucket, DeepStore.settings.bucket) @codec = data.fetch(:codec) end
Public Instance Methods
delete(key)
click to toggle source
# File lib/deep_store/dao.rb, line 37 def delete(key) adapter.delete_object(bucket: bucket, key: key) end
expand_path(path)
click to toggle source
# File lib/deep_store/dao.rb, line 41 def expand_path(path) keys = [] marker = nil while (objects = remote_objects_for(path, marker)).any? keys.concat(objects.map(&:key)) marker = objects.last.key end keys.uniq end
get(key)
click to toggle source
# File lib/deep_store/dao.rb, line 21 def get(key) stream = Tempfile.new stream.binmode object = adapter.get_object(bucket: bucket, key: key, response_target: stream) Result.new(object: object, stream: codec.decode(stream)) rescue Aws::S3::Errors::NoSuchKey raise DeepStore::Errors::RecordNotFound rescue Aws::S3::Errors::NotFound raise DeepStore::Errors::RecordNotFound end
head(key)
click to toggle source
# File lib/deep_store/dao.rb, line 13 def head(key) adapter.head_object(bucket: bucket, key: key) rescue Aws::S3::Errors::NoSuchKey raise DeepStore::Errors::RecordNotFound rescue Aws::S3::Errors::NotFound raise DeepStore::Errors::RecordNotFound end
put(key, stream)
click to toggle source
# File lib/deep_store/dao.rb, line 32 def put(key, stream) encoded_stream = codec.encode(stream) adapter.put_object(bucket: bucket, key: key, body: encoded_stream) end
Private Instance Methods
remote_objects_for(path, marker = nil)
click to toggle source
# File lib/deep_store/dao.rb, line 55 def remote_objects_for(path, marker = nil) adapter.list_objects(bucket: bucket, prefix: path, marker: marker, max_keys: 50).contents end