Class: Migrate::Storage::DB
- Inherits:
-
Object
- Object
- Migrate::Storage::DB
- Defined in:
- lib/migrate/storage/db.rb
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
Instance Method Summary collapse
-
#create_tables ⇒ Object
Will create database model used by tool.
- #current_version ⇒ Object
- #delete(version) ⇒ Object
-
#exec_sql(sql) ⇒ Object
Executes SQL.
- #extract_version(results) ⇒ Object
- #get_migration(version) ⇒ Object
- #highest_version ⇒ Object
-
#initialize(config) ⇒ DB
constructor
A new instance of DB.
- #list_migrations(selects, limit) ⇒ Object
- #log_down(version) ⇒ Object
- #log_up(version) ⇒ Object
- #lowest_version ⇒ Object
- #migrations_range(from, to, is_up) ⇒ Object
- #new_migration(version = 0, description = "") ⇒ Object
- #next_version ⇒ Object
- #prev_version ⇒ Object
- #print(results, title = "") ⇒ Object
- #tables_exists? ⇒ Boolean
-
#tx ⇒ Object
Creates new transaction.
- #type ⇒ Object
- #version_exists?(version) ⇒ Boolean
Constructor Details
#initialize(config) ⇒ DB
Returns a new instance of DB.
8 9 10 |
# File 'lib/migrate/storage/db.rb', line 8 def initialize(config) @config = config end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
6 7 8 |
# File 'lib/migrate/storage/db.rb', line 6 def config @config end |
Instance Method Details
#create_tables ⇒ Object
Will create database model used by tool
152 153 154 |
# File 'lib/migrate/storage/db.rb', line 152 def create_tables raise "Implementation for creating tables not found" end |
#current_version ⇒ Object
79 80 81 82 83 84 |
# File 'lib/migrate/storage/db.rb', line 79 def current_version self.extract_version self.exec_sql <<-eos SELECT * FROM #{config.version_number} LIMIT 1 eos end |
#delete(version) ⇒ Object
124 125 126 |
# File 'lib/migrate/storage/db.rb', line 124 def delete(version) self.exec_sql "DELETE FROM #{@config.version_info} WHERE version=#{version}" end |
#exec_sql(sql) ⇒ Object
Executes SQL
161 162 163 |
# File 'lib/migrate/storage/db.rb', line 161 def exec_sql(sql) raise "Implementation for executing SQL script not found" end |
#extract_version(results) ⇒ Object
44 45 46 47 48 49 50 |
# File 'lib/migrate/storage/db.rb', line 44 def extract_version(results) if results && results.count > 0 results[0]["version"] else raise VersionNotFound end end |
#get_migration(version) ⇒ Object
108 109 110 111 112 113 114 115 |
# File 'lib/migrate/storage/db.rb', line 108 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 ⇒ Object
60 61 62 63 64 65 66 67 68 |
# File 'lib/migrate/storage/db.rb', line 60 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) ⇒ Object
28 29 30 31 32 33 34 |
# 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) ⇒ Object
100 101 102 103 104 105 106 |
# File 'lib/migrate/storage/db.rb', line 100 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) ⇒ Object
95 96 97 98 |
# File 'lib/migrate/storage/db.rb', line 95 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 ⇒ Object
52 53 54 55 56 57 58 |
# File 'lib/migrate/storage/db.rb', line 52 def lowest_version self.extract_version self.exec_sql <<-eos SELECT version FROM #{@config.version_info} ORDER BY version LIMIT 1 eos end |
#migrations_range(from, to, is_up) ⇒ Object
36 37 38 39 40 41 42 |
# 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 = "") ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 |
# 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 ⇒ Object
70 71 72 73 74 75 76 77 |
# File 'lib/migrate/storage/db.rb', line 70 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 ⇒ Object
86 87 88 89 90 91 92 93 |
# File 'lib/migrate/storage/db.rb', line 86 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 = "") ⇒ Object
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/migrate/storage/db.rb', line 128 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? ⇒ Boolean
156 157 158 |
# File 'lib/migrate/storage/db.rb', line 156 def tables_exists? raise "Implementation for checking if version tables already exists not found" end |
#tx ⇒ Object
Creates new transaction. Should accept block.
166 167 168 |
# File 'lib/migrate/storage/db.rb', line 166 def tx raise "Implementation for starting new transaction not found" end |
#type ⇒ Object
12 13 14 |
# File 'lib/migrate/storage/db.rb', line 12 def type @config.storage end |
#version_exists?(version) ⇒ Boolean
117 118 119 120 121 122 |
# File 'lib/migrate/storage/db.rb', line 117 def version_exists?(version) self.get_migration(version) true rescue VersionNotFound false end |