Sha256: 8fed38833e2676c3ad1f6bfbfa1084d84ec3d5044964d9f1e9d51f508131c99d

Contents?: true

Size: 1.01 KB

Versions: 4

Compression:

Stored size: 1.01 KB

Contents

# encoding: utf-8

module QueryBuilder::CQL

  module Modifiers

    # Provides PRIMARY KEY clause for a statement
    #
    module PrimaryKey

      # Defines a primary key for the table
      #
      # @param [#to_s, Array<#to_s>] columns
      #
      # @return [QueryBuilder::Core::Statement] updated statement
      #
      def primary_key(*columns)
        self << Clause.new(columns: columns)
      end

      private

      def maybe_columns
        "(#{(clauses(:column) + clauses(:primary_key)).compact.join(", ")})"
      end

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

        unique
        type :primary_key
        attribute :columns, required: true

        # Returns the CQL representation of the clause
        #
        # @return [String]
        #
        def to_s
          ["PRIMARY KEY", "(#{columns.join(", ")})"].join(" ")
        end

      end # class Clause

    end # module PrimaryKey

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