diff options
author | matthewt <matthewt@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7> | 2007-09-12 18:11:34 +0000 |
---|---|---|
committer | matthewt <matthewt@03d0b0b2-0e1a-0410-a411-fdb2f4bd65d7> | 2007-09-12 18:11:34 +0000 |
commit | 7adfd53f17f66ffe93763e944ed1d3fc52a369dc (patch) | |
tree | 19e599e74419b41cbbe651fd226b81e8b73551d3 /lib/Reaction/InterfaceModel/Action/DBIC/Result/Update.pm | |
parent | c728c97cb1061330e63c7cc048e768ef74988fe6 (diff) | |
download | reaction-7adfd53f17f66ffe93763e944ed1d3fc52a369dc.tar.gz reaction-7adfd53f17f66ffe93763e944ed1d3fc52a369dc.zip |
moved shit to trunk
Diffstat (limited to 'lib/Reaction/InterfaceModel/Action/DBIC/Result/Update.pm')
-rw-r--r-- | lib/Reaction/InterfaceModel/Action/DBIC/Result/Update.pm | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/lib/Reaction/InterfaceModel/Action/DBIC/Result/Update.pm b/lib/Reaction/InterfaceModel/Action/DBIC/Result/Update.pm new file mode 100644 index 0000000..a1387ef --- /dev/null +++ b/lib/Reaction/InterfaceModel/Action/DBIC/Result/Update.pm @@ -0,0 +1,66 @@ +package Reaction::InterfaceModel::Action::DBIC::Result::Update; + +use Reaction::InterfaceModel::Action; +use Reaction::Types::DBIC; +use Reaction::Class; + +class Update is 'Reaction::InterfaceModel::Action', which { + + does 'Reaction::InterfaceModel::Action::DBIC::Role::CheckUniques'; + + has '+target_model' => (isa => 'DBIx::Class::Row'); + + implements BUILD => as { + my ($self) = @_; + my $tm = $self->target_model; + foreach my $attr ($self->parameter_attributes) { + my $writer = $attr->get_write_method; + my $name = $attr->name; + my $tm_attr = $tm->meta->find_attribute_by_name($name); + next unless ref $tm_attr; + my $tm_reader = $tm_attr->get_read_method; + $self->$writer($tm->$tm_reader); + } + }; + + implements do_apply => as { + my $self = shift; + my $args = $self->parameter_hashref; + my $model = $self->target_model; + foreach my $name (keys %$args) { + my $tm_attr = $model->meta->find_attribute_by_name($name); + next unless ref $tm_attr; + my $tm_writer = $tm_attr->get_write_method; + $model->$tm_writer($args->{$name}); + } + $model->update; + return $model; + }; + +}; + +1; + +=head1 NAME + +Reaction::InterfaceModel::Action::DBIC::Result::Update + +=head1 DESCRIPTION + +=head2 target_model + +=head2 error_for_attribute + +=head2 sync_all + +=head2 BUILD + +=head1 AUTHORS + +See L<Reaction::Class> for authors. + +=head1 LICENSE + +See L<Reaction::Class> for the license. + +=cut |