Sha256: 1f24d63331ca6cb979b7b7f3a7bc5dd50536dfda8c4fd0991121b4ec77d90291

Contents?: true

Size: 1.63 KB

Versions: 3

Compression:

Stored size: 1.63 KB

Contents

require "crimp"
require "alephant/lookup/lookup_location"
require "alephant/logger"

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

      def initialize(table_name, component_id, opts, batch_version)
        @client = AWS::DynamoDB::Client::V20120810.new
        @table_name = table_name
        @lookup_location = LookupLocation.new(component_id, opts, batch_version)
        logger.info "LookupQuery#initialize: table name '#{table_name}', component id '#{component_id}', batch version '#{batch_version}', location '#{lookup_location}'"
      end

      def run!
        lookup_location.tap do |l|
          l.location = s3_location_from(
            @client.query(to_q)
          ).tap { |loc| logger.info "LookupQuery#run!: location '#{loc}'" }
        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

3 entries across 3 versions & 1 rubygems

Version Path
alephant-lookup-0.4.2 lib/alephant/lookup/lookup_query.rb
alephant-lookup-0.4.1 lib/alephant/lookup/lookup_query.rb
alephant-lookup-0.4.0 lib/alephant/lookup/lookup_query.rb