kaspernj/baza_migrations

View on GitHub
lib/baza_migrations/commands/create_table.rb

Summary

Maintainability
A
0 mins
Test Coverage
class BazaMigrations::Commands::CreateTable < BazaMigrations::Commands::Base
  def initialize(name)
    @name = name

    @columns = []
    @columns << {name: :id, type: :int, autoincr: true, primarykey: true}
  end

  def string(name, args = {})
    @columns << {name:, type: :string}.merge(default_args(args))
  end

  def text(name, args = {})
    @columns << {name:, type: :text}.merge(default_args(args))
  end

  def integer(name, args = {})
    @columns << {name:, type: :int}.merge(default_args(args))
  end

  def timestamps(args = {})
    @columns << {name: :created_at, type: :datetime}.merge(default_args(args))
    @columns << {name: :updated_at, type: :datetime}.merge(default_args(args))
  end

  def belongs_to(name, args = {})
    @columns << {name: "#{name}_id", type: :int, null: true}.merge(default_args(args))
  end

  def datetime(name, args = {})
    @columns << {name:, type: :datetime}.merge(default_args(args))
  end

  def sql
    db.tables.create(@name, {columns: @columns}, return_sql: true)
  end

  def changed_rollback_sql
    ["DROP TABLE `#{@name}`"]
  end
end