Sha256: 9d9dc2a6c60729b647fe7c5083ad06d4e454451f8809c9a159a89e2d1868ffac

Contents?: true

Size: 1.09 KB

Versions: 4

Compression:

Stored size: 1.09 KB

Contents

# encoding: utf-8

module QueryBuilder::CQL

  module Modifiers

    # Provides CLUSTERING ORDER clauses for statements
    #
    module ClusteringOrder

      # Adds CLUSTERNING ORDER clause to the statement
      #
      # @param [#to_s] name The name of the column
      # @param [:asc, :desc] order The order of clustering
      #
      # @return [QueryBuilder::Core::Statement] updated statement
      #
      def clustering_order(name, order = :asc)
        self << Clause.new(name: name, desc: order.equal?(:desc))
      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

        unique
        type :with
        attribute :name, required: true
        attribute :desc, default: false

        # @private
        def to_s
          "CLUSTERING ORDER BY (#{name} #{desc ? "DESC" : "ASC"})"
        end

      end # class Clause

    end # module ClusteringOrder

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