Sha256: f7c0e4c4e5f9dbc2f2d296e3b9fad97038fffaf6dcb8478c8fe2bb7f55dc9472

Contents?: true

Size: 1.06 KB

Versions: 4

Compression:

Stored size: 1.06 KB

Contents

# encoding: utf-8

module QueryBuilder::CQL

  module Modifiers

    # Provides WHERE clauses for clustered columns in statements
    #
    module WhereClustered

      # Adds WHERE clause to the statement
      #
      # @param [Hash] options
      #
      # @return [QueryBuilder::Core::Statement] updated statement
      #
      def where_clustered(options)
        self << Clause.new(columns: options.keys, values: options.values)
      end

      private

      def maybe_where
        list = clauses(:where)
        ["WHERE", list.join(" AND ")] if list.any?
      end

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

        type :where
        attribute :columns, required: true
        attribute :values,  required: true

        def to_s
          [
            "(#{columns.join(", ")})",
            "(#{values.map { |value| cql_literal[value] }.join(", ")})"
          ].join(" = ")
        end

      end # class Clause

    end # module WhereClustered

  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/where_clustered.rb
query_builder-0.0.3 lib/query_builder/cql/modifiers/where_clustered.rb
query_builder-0.0.2 lib/query_builder/cql/modifiers/where_clustered.rb
query_builder-0.0.1 lib/query_builder/cql/modifiers/where_clustered.rb