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
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