Class: Cequel::Schema::TableUpdater

Inherits:
Object
  • Object
show all
Defined in:
lib/cequel/schema/table_updater.rb

Overview

Encapsulates a series of schema modification statements that can be applied to an existing table

Since:

  • 1.0.0

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(keyspace, table_name) ⇒ TableUpdater

Returns a new instance of TableUpdater.

Since:

  • 1.0.0



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.

Yield Parameters:

  • updater (TableUpdater)

    instance of updater whose modifications will be applied to the named table

Since:

  • 1.0.0



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

Since:

  • 1.0.0



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

Since:

  • 1.0.0



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

Since:

  • 1.0.0



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

Since:

  • 1.0.0



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

#applyvoid

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

Since:

  • 1.0.0



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

See Also:

Since:

  • 1.0.0



117
118
119
120
121
# File 'lib/cequel/schema/table_updater.rb', line 117

def change_properties(options)
  properties = options
    .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

Since:

  • 1.0.0



131
132
133
# File 'lib/cequel/schema/table_updater.rb', line 131

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_column(name) ⇒ void

This method returns an undefined value.

Remove a column

Since:

  • 1.0.0



105
106
107
# File 'lib/cequel/schema/table_updater.rb', line 105

def drop_column(name)
  add_stmt %Q|ALTER TABLE "#{table_name}" DROP "#{name}"|
end

#drop_index(index_name) ⇒ void

This method returns an undefined value.

Remove a secondary index

Since:

  • 1.0.0



141
142
143
# File 'lib/cequel/schema/table_updater.rb', line 141

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

Since:

  • 1.0.0



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