NAME
Handel::Components::Constraints - Column constraints for schemas
SYNOPSIS
package
MySchema::Table;
use
strict;
use
warnings;
__PACKAGE__->load_components(
'+Handel::Component::Constraints'
);
__PACKAGE__->add_constraint(
'column'
,
'Constraint Name'
=> \
&checker
);
1;
DESCRIPTION
Handel::Components::Constraints is a simple way to validate column data during inserts/updates using subroutines. It mostly acts as a compatibility layer for subclasses that used add_constraint
when Handel used Class::DBI.
There is no real reason to load this component into your schema table classes directly. If you add constraints using Handel::Storage->add_constraint, this component will be loaded into the appropriate schema source class automatically.
METHODS
add_constraint
Adds a named constraint for the specified column.
__PACKAGE__->add_constraint(
'quantity'
,
'Check Quantity'
=> \
%check_qty
);
Note: Always use the real column name in the database, not the accessor alias for the column.
check_constraints
This loops through all of the configured constraints, calling the specified \&sub. Each sub will receive the following arguments:
sub
mysub {
my
(
$value
,
$source
,
$column
, \
%data
) =
@_
;
if
(
$value
) {
return
1;
}
else
{
return
0;
};
};
- value
-
The value of the column to be checked.
- source
-
The result object for the row being updated/inserted.
- column
-
The name of the column being checked.
- data
-
A hash reference containing all of the columns and their values. Changing any values in the hash will also change the value inserted/updated in the database.
insert
Calls check_constraints
and then inserts the row. See "insert" in DBIx::Class::Row for more information about insert.
update
Calls check_constraints
and then updates the row. See "update" in DBIx::Class::Row for more information about update.