Sha256: 8167378a830e42b35199d9f16bab99ef01bab975c77b52c4bcc275fe80184366

Contents?: true

Size: 1.36 KB

Versions: 2

Compression:

Stored size: 1.36 KB

Contents

require 'crimp'
require 'alephant/lookup/lookup_location'

module Alephant
  module Lookup
    class LookupQuery
      attr_reader :table_name, :lookup_location

      def initialize(table_name, component_id, batch_version, opts)
        @client = AWS::DynamoDB::Client::V20120810.new
        @table_name = table_name
        @lookup_location = LookupLocation.new(component_id, batch_version, opts)
      end

      def run!
        lookup_location.tap do |l|
          l.location = s3_location_from(
            @client.query(to_q)
          )
        end
      end

      private

      def s3_location_from(result)
        result[:count] == 1 ? result[:member].first['location'][:s] : nil
      end

      def to_q
        {
          :table_name => table_name,
          :consistent_read => true,
          :select => 'SPECIFIC_ATTRIBUTES',
          :attributes_to_get => ['location'],
          :key_conditions => {
            'component_key' => {
              :comparison_operator => 'EQ',
              :attribute_value_list => [
                { 's' => @lookup_location.component_key }
              ],
            },
            'batch_version' => {
              :comparison_operator => 'EQ',
              :attribute_value_list => [
                { 'n' => @lookup_location.batch_version.to_s }
              ]
            }
          }
        }
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
alephant-lookup-0.1.4 lib/alephant/lookup/lookup_query.rb
alephant-lookup-0.1.3 lib/alephant/lookup/lookup_query.rb