Sha256: 6158ee4f51d1a88617a48c3676510720f17e0ee72789f48d7738e381fb7ce81c

Contents?: true

Size: 693 Bytes

Versions: 6

Compression:

Stored size: 693 Bytes

Contents

# frozen_string_literal: true

require 'securerandom'

module DynamoidAdvancedWhere
  module Nodes
    class ArrayLiteralNode
      attr_accessor :value, :attr_prefix

      def initialize(value)
        self.value = value
        self.attr_prefix = SecureRandom.hex
        freeze
      end

      def to_expression
        values = value.each_with_index.map do |_, idx|
          ":#{attr_prefix}#{idx}"
        end
        "(#{values.join(', ')})"
      end

      def expression_attribute_names
        {}
      end

      def expression_attribute_values
        value.each_with_index.map do |val, idx|
          [":#{attr_prefix}#{idx}", val]
        end.to_h
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
dynamoid_advanced_where-1.8.0 lib/dynamoid_advanced_where/nodes/array_literal_node.rb
dynamoid_advanced_where-1.7.1 lib/dynamoid_advanced_where/nodes/array_literal_node.rb
dynamoid_advanced_where-1.7.0 lib/dynamoid_advanced_where/nodes/array_literal_node.rb
dynamoid_advanced_where-1.6.0 lib/dynamoid_advanced_where/nodes/array_literal_node.rb
dynamoid_advanced_where-1.5.1 lib/dynamoid_advanced_where/nodes/array_literal_node.rb
dynamoid_advanced_where-1.5.0 lib/dynamoid_advanced_where/nodes/array_literal_node.rb