Class: Masamune::Schema::TableReference

Inherits:
SimpleDelegator
  • Object
show all
Defined in:
lib/masamune/schema/table_reference.rb

Constant Summary collapse

DEFAULT_ATTRIBUTES =
{
  label:           nil,
  insert:          false,
  null:            false,
  default:         nil,
  unknown:         nil,
  natural_key:     false,
  denormalize:     false,
  multiple:        false,
  through:         [],
  degenerate:      false
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(table, opts = {}) ⇒ TableReference

Returns a new instance of TableReference.



43
44
45
46
47
48
49
# File 'lib/masamune/schema/table_reference.rb', line 43

def initialize(table, opts = {})
  super table
  @table = table
  DEFAULT_ATTRIBUTES.merge(opts).each do |name, value|
    public_send("#{name}=", value)
  end
end

Instance Method Details

#aliasObject



55
56
57
# File 'lib/masamune/schema/table_reference.rb', line 55

def alias
  [label, @table.name].compact.join('_')
end

#default(column = nil) ⇒ Object



71
72
73
74
75
76
# File 'lib/masamune/schema/table_reference.rb', line 71

def default(column = nil)
  return if @default == :null
  default_row = @table.rows.detect { |row| @default ? row.id == @default : row.default }
  return unless default_row
  default_row.name(column)
end

#foreign_keyObject



59
60
61
# File 'lib/masamune/schema/table_reference.rb', line 59

def foreign_key
  @table.surrogate_key
end

#foreign_key_nameObject



63
64
65
# File 'lib/masamune/schema/table_reference.rb', line 63

def foreign_key_name
  [label, @table.name, foreign_key.name].compact.join('_').to_sym
end

#foreign_key_typeObject



67
68
69
# File 'lib/masamune/schema/table_reference.rb', line 67

def foreign_key_type
  foreign_key.type
end

#idObject



51
52
53
# File 'lib/masamune/schema/table_reference.rb', line 51

def id
  [label, @table.id].compact.join('_').to_sym
end

#through=(columns) ⇒ Object



86
87
88
# File 'lib/masamune/schema/table_reference.rb', line 86

def through=(columns)
  @through = Array.wrap(columns)
end

#unknown(column = nil) ⇒ Object



78
79
80
81
82
83
84
# File 'lib/masamune/schema/table_reference.rb', line 78

def unknown(column = nil)
  return unless @unknown
  return if @unknown == :null
  unknown_row = @table.rows.detect { |row| row.id == @unknown }
  return unless unknown_row
  unknown_row.name(column)
end