Module: CassandraMigrations::Migrator

Defined in:
lib/cassandra_migrations/migrator.rb

Constant Summary collapse

METADATA_TABLE =
'cassandra_migrations_metadata'

Class Method Summary collapse

Class Method Details

.read_current_versionObject



43
44
45
46
47
48
49
50
51
# File 'lib/cassandra_migrations/migrator.rb', line 43

def self.read_current_version
  begin
    Cassandra.select(METADATA_TABLE, :selection => "data_name='version'", :projection => 'data_value').first['data_value'].to_i
  rescue ::Cassandra::Errors::InvalidError => e # table cassandra_migrations_metadata does not exist
    Cassandra.execute("CREATE TABLE #{METADATA_TABLE} (data_name varchar PRIMARY KEY, data_value varchar)")
    Cassandra.write!(METADATA_TABLE, {:data_name => 'version', :data_value => '0'})
    return 0
  end
end

.rollback!(count = 1) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/cassandra_migrations/migrator.rb', line 22

def self.rollback!(count=1)
  current_version = read_current_version

  executed_migrations = get_all_migration_names.sort.reverse.select do |migration_name|
    get_version_from_migration_name(migration_name) <= current_version
  end

  down_count = 0

  if !executed_migrations.empty?
    count.times do |i|
      if executed_migrations[i]
        down(executed_migrations[i], executed_migrations[i+1])
        down_count += 1
      end
    end
  end

  down_count
end

.up_to_latest!Object



8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/cassandra_migrations/migrator.rb', line 8

def self.up_to_latest!
  current_version = read_current_version

  new_migrations = get_all_migration_names.sort.select do |migration_name|
    get_version_from_migration_name(migration_name) > current_version
  end

  if !new_migrations.empty?
    new_migrations.each { |migration| up(migration) }
  end

  new_migrations.size
end