diff options
Diffstat (limited to 'lib/Net')
-rw-r--r-- | lib/Net/Riak/MapReduce.pm | 23 | ||||
-rw-r--r-- | lib/Net/Riak/Object.pm | 51 |
2 files changed, 43 insertions, 31 deletions
diff --git a/lib/Net/Riak/MapReduce.pm b/lib/Net/Riak/MapReduce.pm index 03a3dd3..14e4007 100644 --- a/lib/Net/Riak/MapReduce.pm +++ b/lib/Net/Riak/MapReduce.pm @@ -48,10 +48,17 @@ sub add { my $self = shift; my $arg = shift; + if (ref $arg eq 'ARRAY') { + do{ + $self->add_input($arg); + }while(my $arg = shift @_); + return $self; + } + if (!scalar @_) { if (blessed($arg)) { - $self->add_object($arg); - } else { + $self->add_object($arg); + } else { $self->add_bucket($arg); } } @@ -246,12 +253,22 @@ The MapReduce object allows you to build up and run a map/reduce operations on R =head2 add -arguments: bucketname or object +arguments: bucketname or arrays or L<Net::Riak::Object> return: a Net::Riak::MapReduce object Add inputs to a map/reduce operation. This method takes three different forms, depending on the provided inputs. You can specify either a RiakObject, a string bucket name, or a bucket, key, and additional arg. +Create a MapReduce job + + my $mapred = $riak->add( ["alice","p1"],["alice","p2"],["alice","p5"] ); + +Add your inputs to a MapReduce job + + $mapred->add( ["alice","p1"],["alice","p2"] ); + $mapred->add( "alice", "p5" ); + $mapred->add( $riak->bucket("alice")->get("p6") ); + =head2 add_object =head2 add_bucket_key_data diff --git a/lib/Net/Riak/Object.pm b/lib/Net/Riak/Object.pm index 656d71a..a012fbf 100644 --- a/lib/Net/Riak/Object.pm +++ b/lib/Net/Riak/Object.pm @@ -83,7 +83,7 @@ sub store { } my $response = $self->client->send_request($request); - $self->populate($response, [200, 300]); + $self->populate($response, [200, 204, 300]); $self; } @@ -219,38 +219,33 @@ sub sibling { $obj; } + +sub _build_link { + my ($self,$obj,$tag) = @_; + blessed $obj && $obj->isa('Net::Riak::Link') + ? $obj + : Net::Riak::Link->new( + bucket => $self->bucket, + key => $self->key, + tag => $tag || $self->bucket->name, + ); +} + +around [qw{append_link remove_link add_link}] => sub{ + my $next = shift; + my $self = shift; + $self->$next($self->_build_link(@_)); +}; + sub add_link { - my ($self, $obj, $tag) = @_; - my $new_link; - if (blessed $obj && $obj->isa('Net::Riak::Link')) { - $new_link = $obj; - } - else { - $new_link = Net::Riak::Link->new( - bucket => $self->bucket, - key => $self->key, - tag => $tag || $self->bucket->name, - ); - } - $self->remove_link($new_link); - $self->append_link($new_link); + my ($self, $link) = @_; + $self->remove_link($link); + $self->append_link($link); $self; } sub remove_link { - my ($self, $obj, $tag) = @_; - my $new_link; - if (blessed $obj && $obj->isa('Net::Riak::Link')) { - $new_link = $obj; - } - else { - $new_link = Net::Riak::Link->new( - bucket => $self->bucket, - key => $self->key, - tag => $tag || '' - ); - } - + my ($self, $link) = @_; # XXX purge links! } |