Sha256: 2baceb78c7ebdeca7c43f1b4e69c04e502bdf583220706405146447da6fdd8e9

Contents?: true

Size: 1.02 KB

Versions: 4

Compression:

Stored size: 1.02 KB

Contents

# encoding: utf-8

module QueryBuilder::CQL

  module Modifiers

    # Provides USING clauses for statements with various options
    #
    module UsingOptions

      # Adds USING clause to the statement
      #
      # @param [Hash] options
      #
      # @return [QueryBuilder::Core::Statement] updated statement
      #
      def using(options)
        options
          .map { |key, value| Clause.new(property: key, value: value) }
          .inject(self, :<<)
      end

      private

      def maybe_using
        list = clauses(:using)
        ["USING", list.sort.join(" AND ")] if list.any?
      end

      # The clause for adding to a statement
      #
      # @api private
      #
      class Clause < Base

        type :using
        attribute :property, required: true
        attribute :value, required: true

        # @private
        def to_s
          "#{property.upcase} #{cql_literal[value]}"
        end

      end # class Clause

    end # module UsingOptions

  end # module Modifiers

end # module QueryBuilder::CQL

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
query_builder-0.0.4 lib/query_builder/cql/modifiers/using_options.rb
query_builder-0.0.3 lib/query_builder/cql/modifiers/using_options.rb
query_builder-0.0.2 lib/query_builder/cql/modifiers/using_options.rb
query_builder-0.0.1 lib/query_builder/cql/modifiers/using_options.rb