Sha256: 720c22914ab185ff3e5ebcf48229df040b4abfea13feca5cdfdc5c15df65451a

Contents?: true

Size: 1.73 KB

Versions: 1

Compression:

Stored size: 1.73 KB

Contents

require 'fog'

module Sdbport
  module AWS
    class SimpleDB

      def initialize(args)
        @access_key = args[:access_key]
        @secret_key = args[:secret_key]
        @region     = args[:region]
      end

      def domains
        sdb.list_domains.body['Domains']
      end

      def domain_exists?(domain)
        domains.include? domain
      end

      def create_domain_unless_present(domain)
        sdb.create_domain(domain) unless domain_exists?(domain)
      end

      def select(query, options = {})
        sdb.select(query, options).body
      end

      def select_and_follow_tokens(query, options = {})
        data = {}
        next_token = nil
        final_token = false
        while true
          options.merge! 'NextToken' => next_token
          chunk = sdb.select(query, options).body
          data.merge! chunk['Items']
          next_token = chunk['NextToken']
          return data unless next_token
        end
      end

      def count(domain)
        body = sdb.select("SELECT count(*) FROM `#{domain}`").body
        body['Items']['Domain']['Count'].first.to_i
      end

      def domain_empty?(domain)
        count(domain).zero?
      end

      def put_attributes(domain, key, attributes, options = {})
        sdb.put_attributes domain, key, attributes, options
      end

      def delete_domain(domain)
        sdb.delete_domain(domain)
      end

      def delete(domain, key)
        sdb.delete_attributes domain, key
      end

      private

      def sdb
        options =  { :aws_access_key_id     => @access_key,
                     :aws_secret_access_key => @secret_key,
                     :region                => @region }

        @sdb ||= Fog::AWS::SimpleDB.new options
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sdbport-0.1.1 lib/sdbport/aws/simpledb.rb