X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FOrdered.pm;h=06e842c34e16776825d6e3f2bf20b47494b85f38;hb=f7f53a894c479aa594b9082ee461568fab8a81f3;hp=c9579a8fcef7b6f22e5cc3016f35c504f816d0bd;hpb=2e4ec773b3ab085e8813c15df03d9b4c1f4bf3dc;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Ordered.pm b/lib/DBIx/Class/Ordered.pm index c9579a8..06e842c 100644 --- a/lib/DBIx/Class/Ordered.pm +++ b/lib/DBIx/Class/Ordered.pm @@ -628,11 +628,10 @@ sub update { } my @res; - my $want = wantarray(); - if (not defined $want) { + if (not defined wantarray) { $self->next::method( \%upd, @_ ); } - elsif ($want) { + elsif (wantarray) { @res = $self->next::method( \%upd, @_ ); } else { @@ -640,7 +639,7 @@ sub update { } $guard->commit; - return $want ? @res : $res[0]; + return wantarray ? @res : $res[0]; } } @@ -660,11 +659,10 @@ sub delete { $self->move_last; my @res; - my $want = wantarray(); - if (not defined $want) { + if (not defined wantarray) { $self->next::method( @_ ); } - elsif ($want) { + elsif (wantarray) { @res = $self->next::method( @_ ); } else { @@ -672,7 +670,7 @@ sub delete { } $guard->commit; - return $want ? @res : $res[0]; + return wantarray ? @res : $res[0]; } =head1 METHODS FOR EXTENDING ORDERED @@ -761,11 +759,11 @@ sub _next_position_value { Shifts all siblings with B in the range @between (inclusive) by one position as specified by $direction (left if < 0, right if > 0). By default simply increments/decrements each -L value by 1, doing so in a way as to not violate +L value by 1, doing so in a way as to not violate any existing constraints. Note that if you override this method and have unique constraints -including the L the shift is not a trivial task. +including the L the shift is not a trivial task. Refer to the implementation source of the default method for more information. @@ -943,9 +941,23 @@ __END__ =head1 CAVEATS +=head2 Resultset Methods + +Note that all Insert/Create/Delete overrides are happening on +L methods only. If you use the +L versions of +L or +L, all logic present in this +module will be bypassed entirely (possibly resulting in a broken +order-tree). Instead always use the +L and +L methods, which will +invoke the corresponding L method on every +member of the given resultset. + =head2 Race Condition on Insert -If a position is not specified for an insert than a position +If a position is not specified for an insert, a position will be chosen based either on L or L, depending if there are already some items in the current group. The space of time between the