class CassandraRecord::Statement

Public Class Methods

create(table_name, columns, values, options={}) click to toggle source
# File lib/cassandra_record/statement.rb, line 15
      def create(table_name, columns, values, options={})
        cql = <<-CQL
INSERT INTO #{table_name} (#{columns.join(", ")})
VALUES (#{value_placeholders(values).join(", ")})
        CQL

        cql.tap do |statement|
          statement << ttl(options[:ttl]) if options.has_key?(:ttl)
        end
      end
where(table_name, options={}) click to toggle source
# File lib/cassandra_record/statement.rb, line 4
def where(table_name, options={})
  cql = base_where_query(table_name)

  if options.present?
    cql << 'WHERE '
    cql << parse_where_clause_options(options)
  end

  cql << ';'
end

Private Class Methods

base_where_query(table_name) click to toggle source
# File lib/cassandra_record/statement.rb, line 40
      def base_where_query(table_name)
        cql = <<-CQL
SELECT *
FROM #{table_name}
        CQL
      end
parse_where_clause_options(options) click to toggle source
# File lib/cassandra_record/statement.rb, line 47
def parse_where_clause_options(options)
  return options if options.is_a?(String)

  clause_count = 0
  "".tap do |cql|
    options.each do |column, value|
      cql << ' AND' if clause_count > 0
      cql << " #{column.to_s} = #{Cassandra::Util.encode_object(value)}"
      clause_count += 1
    end
  end
end
ttl(secs) click to toggle source
# File lib/cassandra_record/statement.rb, line 28
def ttl(secs)
  "USING TTL #{secs}"
end
value_placeholders(values) click to toggle source
# File lib/cassandra_record/statement.rb, line 32
def value_placeholders(values)
  [].tap do |arr|
    values.count.times do
      arr << "?"
    end
  end
end