class Rom::Dynamo::Gateway

Attributes

ddb[R]
options[R]

Public Class Methods

new(uri) click to toggle source
# File lib/rom/dynamo/repository.rb, line 9
def initialize(uri)
  uri = Addressable::URI.parse(uri)
  opts =  { region: uri.host }
  opts.merge!(uri.query_values) if uri.query
  opts.keys.each { |k| opts[k.to_sym] = opts.delete(k) }

  @options = opts
  @ddb = Aws::DynamoDB::Client.new(@options)
  @prefix = uri.path.gsub('/', '')
  @datasets = {}
end

Public Instance Methods

[](name) click to toggle source
# File lib/rom/dynamo/repository.rb, line 34
def [](name)
  @datasets["#{@prefix}#{name}"]
end
dataset(name) click to toggle source
# File lib/rom/dynamo/repository.rb, line 25
def dataset(name)
  name = "#{@prefix}#{name}"
  @datasets[name] ||= _has?(name) && Dataset.new(connection: @ddb, name: name)
end
dataset?(name) click to toggle source
# File lib/rom/dynamo/repository.rb, line 30
def dataset?(name)
  !!self[name]
end
use_logger(logger) click to toggle source
# File lib/rom/dynamo/repository.rb, line 21
def use_logger(logger)
  @logger = logger
end

Private Instance Methods

_has?(name) click to toggle source
# File lib/rom/dynamo/repository.rb, line 39
def _has?(name)
  @ddb.describe_table(table_name: name)
rescue Aws::DynamoDB::Errors::ResourceNotFoundException
  return false
end