Class: Fresco::TableBuilder
- Inherits:
-
Object
- Object
- Fresco::TableBuilder
- Defined in:
- lib/fresco/schema_builder.rb
Instance Attribute Summary collapse
-
#columns ⇒ Object
readonly
Returns the value of attribute columns.
-
#foreign_keys ⇒ Object
readonly
Returns the value of attribute foreign_keys.
Instance Method Summary collapse
-
#column(name, type, **opts) ⇒ Object
‘type:` is one of :int, :str, :bool.
-
#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`).
-
#initialize(name) ⇒ TableBuilder
constructor
A new instance of TableBuilder.
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
#columns ⇒ Object (readonly)
Returns the value of attribute columns.
47 48 49 |
# File 'lib/fresco/schema_builder.rb', line 47 def columns @columns end |
#foreign_keys ⇒ Object (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 |