Class: Cequel::Schema::TableUpdater
- Inherits:
-
Object
- Object
- Cequel::Schema::TableUpdater
- Defined in:
- lib/cequel/schema/table_updater.rb
Overview
Encapsulates a series of schema modification statements that can be applied to an existing table
Class Method Summary collapse
-
.apply(keyspace, table_name) {|updater| ... } ⇒ void
Construct a table updater and apply the schema modifications to the given table.
Instance Method Summary collapse
-
#add_column(name, type) ⇒ void
Add a column to the table.
-
#add_list(name, type) ⇒ void
Add a list to the table.
-
#add_map(name, key_type, value_type) ⇒ void
Add a map to the table.
-
#add_set(name, type) ⇒ void
Add a set to the table.
-
#apply ⇒ void
private
Apply the schema modifications to the table schema in the database.
-
#change_properties(options) ⇒ void
Change one or more table storage properties.
-
#create_index(column_name, index_name = "#{table_name}_#{column_name}_idx") ⇒ void
Create a secondary index.
-
#drop_index(index_name) ⇒ void
Remove a secondary index.
-
#initialize(keyspace, table_name) ⇒ TableUpdater
constructor
A new instance of TableUpdater.
-
#rename_column(old_name, new_name) ⇒ void
Rename a column.
Constructor Details
#initialize(keyspace, table_name) ⇒ TableUpdater
Returns a new instance of TableUpdater.
27 28 29 30 |
# File 'lib/cequel/schema/table_updater.rb', line 27 def initialize(keyspace, table_name) @keyspace, @table_name = keyspace, table_name @statements = [] end |
Class Method Details
.apply(keyspace, table_name) {|updater| ... } ⇒ void
This method returns an undefined value.
Construct a table updater and apply the schema modifications to the given table.
18 19 20 |
# File 'lib/cequel/schema/table_updater.rb', line 18 def self.apply(keyspace, table_name, &block) new(keyspace, table_name).tap(&block).apply end |
Instance Method Details
#add_column(name, type) ⇒ void
This method returns an undefined value.
Add a column to the table
51 52 53 |
# File 'lib/cequel/schema/table_updater.rb', line 51 def add_column(name, type) add_data_column(Column.new(name, type(type))) end |
#add_list(name, type) ⇒ void
This method returns an undefined value.
Add a list to the table
62 63 64 |
# File 'lib/cequel/schema/table_updater.rb', line 62 def add_list(name, type) add_data_column(List.new(name, type(type))) end |
#add_map(name, key_type, value_type) ⇒ void
This method returns an undefined value.
Add a map to the table
85 86 87 |
# File 'lib/cequel/schema/table_updater.rb', line 85 def add_map(name, key_type, value_type) add_data_column(Map.new(name, type(key_type), type(value_type))) end |
#add_set(name, type) ⇒ void
This method returns an undefined value.
Add a set to the table
73 74 75 |
# File 'lib/cequel/schema/table_updater.rb', line 73 def add_set(name, type) add_data_column(Set.new(name, type(type))) end |
#apply ⇒ void
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
This method returns an undefined value.
Apply the schema modifications to the table schema in the database
40 41 42 |
# File 'lib/cequel/schema/table_updater.rb', line 40 def apply statements.each { |statement| keyspace.execute(statement) } end |
#change_properties(options) ⇒ void
This method returns an undefined value.
Change one or more table storage properties
108 109 110 111 112 |
# File 'lib/cequel/schema/table_updater.rb', line 108 def change_properties() properties = .map { |name, value| TableProperty.build(name, value).to_cql } add_stmt %Q|ALTER TABLE "#{table_name}" WITH #{properties.join(' AND ')}| end |
#create_index(column_name, index_name = "#{table_name}_#{column_name}_idx") ⇒ void
This method returns an undefined value.
Create a secondary index
122 123 124 |
# File 'lib/cequel/schema/table_updater.rb', line 122 def create_index(column_name, index_name = "#{table_name}_#{column_name}_idx") add_stmt %Q|CREATE INDEX "#{index_name}" ON "#{table_name}" ("#{column_name}")| end |
#drop_index(index_name) ⇒ void
This method returns an undefined value.
Remove a secondary index
132 133 134 |
# File 'lib/cequel/schema/table_updater.rb', line 132 def drop_index(index_name) add_stmt %Q|DROP INDEX IF EXISTS "#{index_name}"| end |
#rename_column(old_name, new_name) ⇒ void
This method returns an undefined value.
Rename a column
96 97 98 |
# File 'lib/cequel/schema/table_updater.rb', line 96 def rename_column(old_name, new_name) add_stmt %Q|ALTER TABLE "#{table_name}" RENAME "#{old_name}" TO "#{new_name}"| end |