Red.git | docs/api/MetamodelX/Red/ | Model.md
MetamodelX::Red::Model
----------------------
### method column-names
```raku
method column-names(
|
) returns Mu
```
Returns a list of columns names.of the model.
### method constraints
```raku
method constraints(
|
) returns Mu
```
Returns a hash of model constraints classified by type.
### method references
```raku
method references(
|
) returns Mu
```
Returns a hash of foreign keys of the model.
### method table
```raku
method table(
Mu \type
) returns Mu
```
Returns the table name for the model.
### method as
```raku
method as(
Mu \type
) returns Mu
```
Returns the table alias
### method orig
```raku
method orig(
Mu \type
) returns Mu
```
Returns the original model
### method rs-class-name
```raku
method rs-class-name(
Mu \type
) returns Mu
```
Returns the name of the ResultSeq class
### method columns
```raku
method columns(
|
) returns Mu
```
Returns a list of columns
### method migration-hash
```raku
method migration-hash(
\model
) returns Hash(Any)
```
Returns a hash with the migration hash
### method id-values
```raku
method id-values(
Red::Model:D $model
) returns Mu
```
Returns a liast of id values
### method default-nullable
```raku
method default-nullable(
|
) returns Mu
```
Check if the model is nullable by default.
### method unique-constraints
```raku
method unique-constraints(
\model
) returns Mu
```
Returns all columns with the unique counstraint
### method attr-to-column
```raku
method attr-to-column(
|
) returns Mu
```
A map from attr to column
### method compose
```raku
method compose(
Mu \type
) returns Mu
```
Compose
### method add-reference
```raku
method add-reference(
$name,
Red::Column $col
) returns Mu
```
Creates a new reference (foreign key).
### method add-unique-constraint
```raku
method add-unique-constraint(
Mu:U \type,
&columns
) returns Mu
```
Creates a new unique constraint.
### multi method add-pk-constraint
```raku
multi method add-pk-constraint(
Mu:U \type,
&columns
) returns Mu
```
Creates a new primary key constraint.
### multi method add-pk-constraint
```raku
multi method add-pk-constraint(
Mu:U \type,
@columns
) returns Mu
```
Creates the primary key constraint.
### method add-column
```raku
method add-column(
::T Red::Model:U \type,
Red::Attr::Column $attr
) returns Mu
```
Creates a new column and adds it to the model.
### multi method rs
```raku
multi method rs(
Mu:U $
) returns Red::ResultSeq
```
Returns the ResultSeq
### multi method all
```raku
multi method all(
$obj
) returns Red::ResultSeq
```
Alias for C<.rs()>
### method temp
```raku
method temp(
|
) returns Mu
```
Sets model as a temporary table
### multi method create-table
```raku
multi method create-table(
\model where { ... },
Bool :unless-exists(:$if-not-exists) where { ... },
*%pars
) returns Mu
```
Creates table unless table already exists
### multi method create-table
```raku
multi method create-table(
\model where { ... },
:$with where { ... },
:if-not-exists($unless-exists) where { ... }
) returns Mu
```
Creates table
### method apply-row-phasers
```raku
method apply-row-phasers(
$obj,
Mu:U $phase
) returns Mu
```
Applies phasers
### multi method save
```raku
multi method save(
$obj,
Bool :$insert! where { ... },
Bool :$from-create,
:$with where { ... }
) returns Mu
```
Saves that object on database (create a new row)
### multi method save
```raku
multi method save(
$obj,
Bool :$update! where { ... },
:$with where { ... }
) returns Mu
```
Saves that object on database (update the row)
### multi method save
```raku
multi method save(
$obj,
:$with where { ... }
) returns Mu
```
Generic save, calls C<.^save: :insert> if C<.^is-on-db> or C<.^save: :update> otherwise
### multi method create
```raku
multi method create(
\model where { ... },
*%orig-pars,
:$with where { ... }
) returns Mu
```
Creates a new object and saves it on DB It accepts a list os pairs (the same as C<.new>) And Lists and/or Hashes for relationships
### multi method delete
```raku
multi method delete(
\model,
:$with where { ... }
) returns Mu
```
Deletes row from database
### multi method load
```raku
multi method load(
Red::Model:U \model,
|ids
) returns Mu
```
Loads object from the DB
### multi method new-with-id
```raku
multi method new-with-id(
Red::Model:U \model,
%ids,
:$with where { ... }
) returns Mu
```
Creates a new object setting ids with this values
### multi method new-with-id
```raku
multi method new-with-id(
Red::Model:U \model,
|ids
) returns Mu
```
Creates a new object setting the id
### multi method search
```raku
multi method search(
Red::Model:U \model,
&filter,
:$with where { ... }
) returns Mu
```
Receives a `Block` of code and returns a `ResultSeq` using the `Block`'s return as filter
### multi method search
```raku
multi method search(
Red::Model:U \model,
Red::AST $filter,
:$with where { ... }
) returns Mu
```
Receives a `AST` of code and returns a `ResultSeq` using that `AST` as filter
### multi method search
```raku
multi method search(
Red::Model:U \model,
*%filter,
:$with where { ... }
) returns Mu
```
Receives a hash of `AST`s of code and returns a `ResultSeq` using that `AST`s as filter Usually passed unique values as IDs or columns with unique counstraint
### multi method find
```raku
multi method find(
|c
) returns Mu
```
Finds a specific row using the same data as search()