Sha256: 5e4945bd7e3b2f81e36691eb4a951da3958c6d528b5abce097120cc761027813

Contents?: true

Size: 949 Bytes

Versions: 1

Compression:

Stored size: 949 Bytes

Contents

# frozen_string_literal: true

module Dynamoid
  # @private
  module AdapterPlugin
    class AwsSdkV3
      class ProjectionExpressionConvertor
        attr_reader :expression, :name_placeholders

        def initialize(names, name_placeholders, name_placeholder_sequence)
          @names = names
          @name_placeholders = name_placeholders.dup
          @name_placeholder_sequence = name_placeholder_sequence

          build
        end

        private

        def build
          return if @names.nil? || @names.empty?

          clauses = @names.map do |name|
            if name.upcase.in?(Dynamoid::AdapterPlugin::AwsSdkV3::RESERVED_WORDS)
              placeholder = @name_placeholder_sequence.call
              @name_placeholders[placeholder] = name
              placeholder
            else
              name.to_s
            end
          end

          @expression = clauses.join(' , ')
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dynamoid-3.10.0 lib/dynamoid/adapter_plugin/aws_sdk_v3/projection_expression_convertor.rb