Class: Fresco::TableBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/fresco/schema_builder.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name) ⇒ TableBuilder

Returns a new instance of TableBuilder.



49
50
51
52
53
# File 'lib/fresco/schema_builder.rb', line 49

def initialize(name)
  @name         = name
  @columns      = []
  @foreign_keys = []
end

Instance Attribute Details

#columnsObject (readonly)

Returns the value of attribute columns.



47
48
49
# File 'lib/fresco/schema_builder.rb', line 47

def columns
  @columns
end

#foreign_keysObject (readonly)

Returns the value of attribute foreign_keys.



47
48
49
# File 'lib/fresco/schema_builder.rb', line 47

def foreign_keys
  @foreign_keys
end

Instance Method Details

#column(name, type, **opts) ⇒ Object

‘type:` is one of :int, :str, :bool. `opts` is open — common keys: primary_key (Bool), null (Bool), index (:unique or any truthy), default (literal or Proc — M5+).



58
59
60
# File 'lib/fresco/schema_builder.rb', line 58

def column(name, type, **opts)
  @columns << { name: name, type: type }.merge(opts)
end

#foreign_key(column_name, references:) ⇒ Object

Foreign-key metadata for the generated migration runner (M5+) and for M6+ join-helper codegen (‘post.user`, `user.posts`). M4 only captures the entry — no SQL is emitted from it yet, and no methods on the model class reflect it. Convention: the column itself is declared with `column :user_id, :int` separately; this entry records the FK relationship only.



68
69
70
# File 'lib/fresco/schema_builder.rb', line 68

def foreign_key(column_name, references:)
  @foreign_keys << { column: column_name, references: references }
end