class Radical::Migration

Public Class Methods

change(&block) click to toggle source
# File lib/radical/migration.rb, line 6
def change(&block)
  @change = block
end
create_table(name, &block) click to toggle source
# File lib/radical/migration.rb, line 18
def create_table(name, &block)
  return drop_table(name) if @change && @rollback

  table = Table.new(name)

  block.call(table)

  "create table #{name} ( id integer primary key, #{table.columns.join(',')} )"
end
down(&block) click to toggle source
# File lib/radical/migration.rb, line 14
def down(&block)
  @down = block
end
drop_table(name) click to toggle source
# File lib/radical/migration.rb, line 28
def drop_table(name)
  "drop table #{name}"
end
migrate!(db:, version:) click to toggle source
# File lib/radical/migration.rb, line 32
def migrate!(db:, version:)
  db.execute(@change&.call || @up&.call)
  db.execute 'insert into radical_migrations (version) values (?)', [version]
end
rollback!(db:, version:) click to toggle source
# File lib/radical/migration.rb, line 37
def rollback!(db:, version:)
  @rollback = true

  db.execute(@change&.call || @down&.call)
  db.execute 'delete from radical_migrations where version = ?', [version]
end
up(&block) click to toggle source
# File lib/radical/migration.rb, line 10
def up(&block)
  @up = block
end