Class: CassandraModel::TableDefinition

Inherits:
Object
  • Object
show all
Defined in:
lib/cassandra_model/table_definition.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ TableDefinition



22
23
24
25
26
27
# File 'lib/cassandra_model/table_definition.rb', line 22

def initialize(options)
  @partition_key = options[:partition_key].keys
  @clustering_columns = options[:clustering_columns].keys
  @name = options[:name]
  @columns = options[:partition_key].merge(options[:clustering_columns].merge(options[:remaining_columns]))
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



3
4
5
# File 'lib/cassandra_model/table_definition.rb', line 3

def name
  @name
end

Class Method Details

.from_data_model(table_name, inquirer, data_set) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/cassandra_model/table_definition.rb', line 5

def self.from_data_model(table_name, inquirer, data_set)
  partition_key = inquirer_partition_key(inquirer)
  if inquirer.shard_column
    if inquirer.shard_column.is_a?(Hash)
      column_name, type = inquirer.shard_column.first
      partition_key.merge!(:"rk_#{column_name}" => type)
    else
      partition_key.merge!(:"rk_#{inquirer.shard_column}" => :int)
    end
  end
  clustering_columns = table_set_clustering_columns(data_set)
  remaining_columns = table_set_remaining_columns(data_set)
  new(name: table_name, partition_key: partition_key,
      clustering_columns: clustering_columns,
      remaining_columns: remaining_columns)
end

Instance Method Details

#==(rhs) ⇒ Object



45
46
47
# File 'lib/cassandra_model/table_definition.rb', line 45

def ==(rhs)
  to_cql == rhs.to_cql
end

#name_in_cassandraObject



41
42
43
# File 'lib/cassandra_model/table_definition.rb', line 41

def name_in_cassandra
  "#{name}_#{table_id}"
end

#table_idObject



37
38
39
# File 'lib/cassandra_model/table_definition.rb', line 37

def table_id
  Digest::MD5.hexdigest(columns)
end

#to_cql(options = {}) ⇒ Object



29
30
31
32
33
34
35
# File 'lib/cassandra_model/table_definition.rb', line 29

def to_cql(options = {})
  table_name = options[:no_id] ? name : name_in_cassandra
  exists = if options[:check_exists]
             'IF NOT EXISTS '
           end
  "CREATE TABLE #{exists}#{table_name} (#{columns}, PRIMARY KEY #{primary_key})"
end