X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fp5-DBIx-Class-ResultSet-RecursiveUpdate;a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FResultSet%2FRecursiveUpdate.pm;h=b4ba9b8f57e630d76c8e947229279911cd525976;hp=f288135edd9f2bf01838c142aa3f85d02990ed5f;hb=f8d97e749df641d0da641007bc6fda336defe71d;hpb=34a44681170dc8a76ec09b1d655ed2c6d1d28e49 diff --git a/lib/DBIx/Class/ResultSet/RecursiveUpdate.pm b/lib/DBIx/Class/ResultSet/RecursiveUpdate.pm index f288135..b4ba9b8 100644 --- a/lib/DBIx/Class/ResultSet/RecursiveUpdate.pm +++ b/lib/DBIx/Class/ResultSet/RecursiveUpdate.pm @@ -2,7 +2,7 @@ use strict; use warnings; package DBIx::Class::ResultSet::RecursiveUpdate; -use version; our $VERSION = qv('0.005'); +use version; our $VERSION = qv('0.008'); use base qw(DBIx::Class::ResultSet); @@ -117,11 +117,14 @@ sub recursive_update { my @rows; my $result_source = $object->$name->result_source; my @updates; - if( ref $updates->{$name} ){ - @updates = @{ $updates->{$name} }; + if( ! defined $value ){ + next; + } + elsif( ref $value ){ + @updates = @{ $value }; } else{ - @updates = ( $updates->{$name} ); + @updates = ( $value ); } for my $elem ( @updates ) { if ( ref $elem ) { @@ -159,8 +162,13 @@ sub _update_relation { my ( $self, $name, $updates, $object, $info ) = @_; my $related_result = $self->related_resultset($name)->result_source->resultset; - my $resolved = - $self->result_source->resolve_condition( $info->{cond}, $name, $object ); + my $resolved; + if( $self->result_source->can( '_resolve_condition' ) ){ + $resolved = $self->result_source->_resolve_condition( $info->{cond}, $name, $object ); + } + else{ + $resolved = $self->result_source->resolve_condition( $info->{cond}, $name, $object ); + } # warn 'resolved: ' . Dumper( $resolved ); use Data::Dumper; $resolved = undef @@ -295,7 +303,7 @@ DBIx::Class::ResultSet::RecursiveUpdate - like update_or_create - but recursive =head1 VERSION -This document describes DBIx::Class::ResultSet::RecursiveUpdate version 0.004 +This document describes DBIx::Class::ResultSet::RecursiveUpdate version 0.006 =head1 SYNOPSIS @@ -303,14 +311,16 @@ This document describes DBIx::Class::ResultSet::RecursiveUpdate version 0.004 The functional interface: my $new_item = DBIx::Class::ResultSet::RecursiveUpdate::Functions::recursive_update({ - id => 1, - owned_dvds => [ - { - title => 'One Flew Over the Cuckoo's Nest' - } - ] - } - ); + resultset => $schema->resultset( 'Dvd' ), + updates => { + id => 1, + owned_dvds => [ + { + title => 'One Flew Over the Cuckoo's Nest' + } + ] + } + }); As ResultSet subclass: