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

Returns a new instance of TableDefinition.



15
16
17
18
19
20
# File 'lib/cassandra_model/table_definition.rb', line 15

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(name, inquirer, data_set) ⇒ Object



5
6
7
8
9
10
11
12
13
# File 'lib/cassandra_model/table_definition.rb', line 5

def self.from_data_model(name, inquirer, data_set)
  partition_key = inquirer_partition_key(inquirer)
  partition_key.merge!(rk_shard: :int) if inquirer.is_sharding
  clustering_columns = table_set_clustering_columns(data_set)
  remaining_columns = table_set_remaining_columns(data_set)
  new(name: name, partition_key: partition_key,
      clustering_columns: clustering_columns,
      remaining_columns: remaining_columns)
end

Instance Method Details

#==(rhs) ⇒ Object



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

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

#name_in_cassandraObject



34
35
36
# File 'lib/cassandra_model/table_definition.rb', line 34

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

#table_idObject



30
31
32
# File 'lib/cassandra_model/table_definition.rb', line 30

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

#to_cql(options = {}) ⇒ Object



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

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