class DatastaxRails::Cql::AlterColumnFamily

CQL generation for ALTER COLUMNFAMILY

Public Class Methods

new(cf_name) click to toggle source
# File lib/datastax_rails/cql/alter_column_family.rb, line 5
def initialize(cf_name)
  @cf_name = cf_name
  @action = nil
end

Public Instance Methods

add(column) click to toggle source
# File lib/datastax_rails/cql/alter_column_family.rb, line 10
def add(column)
  set_column(column)
  @action = 'ADD'
  self
end
alter(column) click to toggle source
# File lib/datastax_rails/cql/alter_column_family.rb, line 22
def alter(column)
  set_column(column)
  @action = 'ALTER'
  self
end
drop(column) click to toggle source
# File lib/datastax_rails/cql/alter_column_family.rb, line 16
def drop(column)
  set_column(column)
  @action = 'DROP'
  self
end
rename(col1, col2) click to toggle source
# File lib/datastax_rails/cql/alter_column_family.rb, line 28
def rename(col1, col2)
  set_column([col1, col2])
  @action = 'RENAME'
  self
end
set_column(column) click to toggle source
# File lib/datastax_rails/cql/alter_column_family.rb, line 34
def set_column(column) # rubocop:disable Style/AccessorMethodName
  fail ArgumentError, 'Only one operation allowed per CQL call' if @action
  @column = column
end
to_cql() click to toggle source
# File lib/datastax_rails/cql/alter_column_family.rb, line 39
def to_cql
  stmt = "ALTER COLUMNFAMILY #{@cf_name} "
  if (@action == 'ALTER')
    stmt << "ALTER #{@column.keys.first} TYPE #{@column.values.first}"
  elsif (@action == 'ADD')
    stmt << "ADD #{@column.keys.first} #{@column.values.first}"
  elsif (@action == 'DROP')
    stmt << "DROP #{@column}"
  elsif (@action == 'RENAME')
    stmt << "RENAME \"#{@column[0]}\" TO \"#{@column[1]}\""
  end

  stmt
end