class Migrate::Storage::DB
Attributes
config[R]
Public Class Methods
new(config)
click to toggle source
# File lib/migrate/storage/db.rb, line 8 def initialize(config) @config = config end
Public Instance Methods
create_tables()
click to toggle source
Will create database model used by tool
# File lib/migrate/storage/db.rb, line 160 def create_tables raise "Implementation for creating tables not found" end
current_version()
click to toggle source
# File lib/migrate/storage/db.rb, line 87 def current_version self.extract_version self.exec_sql <<-eos SELECT * FROM #{config.version_number} LIMIT 1 eos end
delete(version)
click to toggle source
# File lib/migrate/storage/db.rb, line 132 def delete(version) self.exec_sql "DELETE FROM #{@config.version_info} WHERE version=#{version}" end
exec_sql(sql)
click to toggle source
Executes SQL
# File lib/migrate/storage/db.rb, line 169 def exec_sql(sql) raise "Implementation for executing SQL script not found" end
extract_version(results)
click to toggle source
# File lib/migrate/storage/db.rb, line 52 def extract_version(results) if results && results.count > 0 results[0]["version"] else raise VersionNotFound end end
get_migration(version)
click to toggle source
# File lib/migrate/storage/db.rb, line 116 def get_migration(version) res = self.exec_sql "SELECT * FROM #{@config.version_info} WHERE version=#{version}" if res && res.count > 0 res[0] else raise VersionNotFound end end
highest_version()
click to toggle source
# File lib/migrate/storage/db.rb, line 68 def highest_version self.extract_version self.exec_sql <<-eos SELECT version FROM #{@config.version_info} ORDER BY version DESC LIMIT 1 eos rescue VersionNotFound => e 0 end
list_migrations(selects, limit)
click to toggle source
# File lib/migrate/storage/db.rb, line 28 def list_migrations(selects, limit) self.exec_sql <<-eos SELECT #{(selects == nil ? "*" : selects)} FROM #{@config.version_info} ORDER BY last_up, version #{limit != nil ? "LIMIT #{limit}" : ""} eos end
log_down(version)
click to toggle source
# File lib/migrate/storage/db.rb, line 108 def log_down(version) self.exec_sql "UPDATE #{@config.version_info} SET last_down=now() WHERE version=#{version}" lowest_version = self.lowest_version version_to_save = lowest_version.to_i < version.to_i ? self.prev_version().to_i : 0 self.exec_sql "UPDATE #{@config.version_number} SET version=#{version_to_save}" end
log_up(version)
click to toggle source
# File lib/migrate/storage/db.rb, line 103 def log_up(version) self.exec_sql "UPDATE #{@config.version_info} SET last_up=now() WHERE version=#{version}" self.exec_sql "UPDATE #{@config.version_number} SET version=#{version}" end
lowest_version()
click to toggle source
# File lib/migrate/storage/db.rb, line 60 def lowest_version self.extract_version self.exec_sql <<-eos SELECT version FROM #{@config.version_info} ORDER BY version LIMIT 1 eos end
migrations_from(from)
click to toggle source
# File lib/migrate/storage/db.rb, line 44 def migrations_from(from) self.exec_sql <<-eos SELECT * FROM #{@config.version_info} WHERE version >= #{from} ORDER BY version eos end
migrations_range(from, to, is_up)
click to toggle source
# File lib/migrate/storage/db.rb, line 36 def migrations_range(from, to, is_up) self.exec_sql <<-eos SELECT * FROM #{@config.version_info} WHERE version >= #{from} AND version <= #{to} ORDER BY version #{!is_up ? "DESC" : ""} eos end
new_migration(version=0, description="")
click to toggle source
# File lib/migrate/storage/db.rb, line 16 def new_migration(version=0, description="") self.exec_sql <<-eos INSERT INTO #{@config.version_info} (version, description, created_date) VALUES(#{version}, '#{description}', now()) eos res = self.exec_sql <<-eos SELECT * FROM #{@config.version_info} ORDER BY version DESC LIMIT 1 eos res[0] end
next_version()
click to toggle source
# File lib/migrate/storage/db.rb, line 78 def next_version self.extract_version self.exec_sql <<-eos SELECT version FROM #{@config.version_info} WHERE version > (SELECT version FROM #{@config.version_number} LIMIT 1) ORDER BY version LIMIT 1 eos end
prev_version()
click to toggle source
# File lib/migrate/storage/db.rb, line 94 def prev_version self.extract_version self.exec_sql <<-eos SELECT version FROM #{@config.version_info} WHERE version < (SELECT version FROM #{@config.version_number} LIMIT 1) ORDER BY version DESC LIMIT 1 eos end
print(results, title="")
click to toggle source
# File lib/migrate/storage/db.rb, line 136 def print(results, title="") rows = [] headings = results[0].keys results.each do |result| row = [] result.each do |column, value| if column == "description" if value.length > 70 value = value.scan(/.{1,70}/).join("\n") end end row << value end rows << row end table = Terminal::Table.new :headings => headings, :rows => rows table.title = title puts table end
tables_exists?()
click to toggle source
# File lib/migrate/storage/db.rb, line 164 def tables_exists? raise "Implementation for checking if version tables already exists not found" end
tx()
click to toggle source
Creates new transaction. Should accept block.
# File lib/migrate/storage/db.rb, line 174 def tx raise "Implementation for starting new transaction not found" end
type()
click to toggle source
# File lib/migrate/storage/db.rb, line 12 def type @config.storage end
version_exists?(version)
click to toggle source
# File lib/migrate/storage/db.rb, line 125 def version_exists?(version) self.get_migration(version) true rescue VersionNotFound false end