Sha256: aee7da226b6e2cc688d6d8250399e5e690e366674746c8d7ac69918a8334a794

Contents?: true

Size: 865 Bytes

Versions: 1

Compression:

Stored size: 865 Bytes

Contents

require 'cassanity/increment'
require 'cassanity/decrement'

module Cassanity
  module ArgumentGenerators
    class SetClause

      # Internal
      def call(args = {})
        set = args.fetch(:set)
        cql, variables, sets = '', [], []

        set.each do |key, value|
          case value
          when Cassanity::Increment, Cassanity::Decrement, Cassanity::Addition, Cassanity::Removal, Cassanity::SetAddition, Cassanity::SetRemoval
            sets << "#{key} = #{key} #{value.symbol} ?"
            variables << value.value
          when Cassanity::CollectionItem
            sets << "#{key}[?] = ?"
            variables << value.key << value.value
          else
            sets << "#{key} = ?"
            variables << value
          end
        end
        cql << " SET #{sets.join(', ')}"

        [cql, *variables]
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cassanity-0.6.0 lib/cassanity/argument_generators/set_clause.rb