Sha256: f25a005dc28427c448598e9d6c7659d6a40c812afc2def251395b9bdfb10819a
Contents?: true
Size: 1.03 KB
Versions: 1
Compression:
Stored size: 1.03 KB
Contents
require 'addressable/uri' require 'rom/gateway' module Rom module Dynamo class Gateway < ROM::Gateway attr_reader :ddb, :options 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 def use_logger(logger) @logger = logger end def dataset(name) name = "#{@prefix}#{name}" @datasets[name] ||= _has?(name) && Dataset.new(connection: @ddb, name: name) end def dataset?(name) !!self[name] end def [](name) @datasets["#{@prefix}#{name}"] end private def _has?(name) @ddb.describe_table(table_name: name) rescue Aws::DynamoDB::Errors::ResourceNotFoundException return false end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rom-dynamo-0.14.0 | lib/rom/dynamo/repository.rb |