class Convergence::Table
Attributes
columns[RW]
foreign_keys[RW]
indexes[RW]
table_name[RW]
table_options[RW]
Public Class Methods
new(table_name, options = {})
click to toggle source
# File lib/convergence/table.rb, line 47 def initialize(table_name, options = {}) @table_name = table_name @table_options = options.reject { |k| k == :id } @columns = {} @indexes = {} @foreign_keys = {} end
Public Instance Methods
boolean(column_name, options = {})
click to toggle source
# File lib/convergence/table.rb, line 17 def boolean(column_name, options = {}) case options[:default] when TrueClass options[:default] = 1 when FalseClass options[:default] = 0 end tinyint(column_name, options.merge(limit: 1)) end
foreign_key(key_columns, options = {})
click to toggle source
# File lib/convergence/table.rb, line 33 def foreign_key(key_columns, options = {}) if options[:reference].nil? || options[:reference_column].nil? fail ArgumentError.new("#{@table_name} - #{key_columns}: require reference/reference_column parameters") end key_name = options[:name] key_name = "#{table_name}_#{[key_columns].flatten.join('_')}_fk" if key_name.nil? @foreign_keys[key_name] = Convergence::ForeignKey.new( key_name, key_columns, options[:reference], [options[:reference_column]].flatten, options.reject { |k, _v| k == :reference || k == :reference_column }) end
index(index_columns, options = {})
click to toggle source
# File lib/convergence/table.rb, line 27 def index(index_columns, options = {}) index_name = options[:name] index_name = "index_#{table_name}_on_#{[index_columns].flatten.join('_')}" if index_name.nil? @indexes[index_name] = Convergence::Index.new(index_name, index_columns, options) end