Sha256: 2f74838ecd7811142c34aab6b10256af2e80283912eb6dc7d12292c330cac7ed

Contents?: true

Size: 1.62 KB

Versions: 3

Compression:

Stored size: 1.62 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_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 batch_put_attributes(domain,  attributes)
        sdb.batch_put_attributes domain, attributes
      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

3 entries across 3 versions & 1 rubygems

Version Path
sdbport-0.3.0 lib/sdbport/aws/simpledb.rb
sdbport-0.2.1 lib/sdbport/aws/simpledb.rb
sdbport-0.2.0 lib/sdbport/aws/simpledb.rb