class Diary::Migrator

Attributes

db[R]

Public Class Methods

new(db) click to toggle source
# File lib/diary-ruby/database/migrator.rb, line 48
def initialize(db)
  @db = db.database
end

Public Instance Methods

migrate!() click to toggle source
# File lib/diary-ruby/database/migrator.rb, line 52
def migrate!
  exists = false
  db.execute( "SELECT name FROM sqlite_master WHERE type='table' AND name='versions';" ) do |row|
    if row
      exists = true
    end
  end

  if !exists
    db.execute(INITIALIZE)
  end

  MIGRATION_VERSIONS.each do |version|
    exists = false
    on_date = nil
    db.execute( "select rowid, migrated_at from versions WHERE version = '#{version}'" ) do |row|
      if row
        exists = true
        on_date = row[1]
      end
    end

    if !exists
      Diary.debug("UPDATING DATABASE TO VERSION #{ version }")
      if MIGRATIONS[version].is_a?(Array)
        MIGRATIONS[version].each do |statement|
          db.execute(statement)
        end
      else
        db.execute(MIGRATIONS[version])
      end
      db.execute("INSERT INTO versions VALUES ('#{version}', strftime('%Y-%m-%dT%H:%M:%S+0000'));")
    else
      Diary.debug("AT #{ version } SINCE #{ on_date }")
    end
  end
end