diff options
Diffstat (limited to 'lib/Net/Riak/Object.pm')
-rw-r--r-- | lib/Net/Riak/Object.pm | 51 |
1 files changed, 37 insertions, 14 deletions
diff --git a/lib/Net/Riak/Object.pm b/lib/Net/Riak/Object.pm index 8e48dcb..aa8fbcd 100644 --- a/lib/Net/Riak/Object.pm +++ b/lib/Net/Riak/Object.pm @@ -73,31 +73,54 @@ sub store { $self->client->store_object($w, $dw, $self); } -sub i2index { - my($self, $args) = @_; +sub add_index { + my($self, $index, $data) = @_; - if ( defined($args) ) { - my %args = %{$args}; + if ( defined($index) && defined($data) ) { my $ref = undef; if ( defined($self->i2indexes) ) { $ref = $self->i2indexes; } - foreach my $i (keys %args) + + if ( length($index) > 4 && $index =~ /^.+_bin$/ && length($data) > 0 ) { + $ref->{$index} = $data; - #$i = lc($i); - print $i,"\n"; - if ( defined($args{$i}) && length($args{$i}) > 0 ) - { - $ref->{$i} = $args{$i}; - - } else { - delete $ref->{$i}; - } + } + if ( length($index) > 4 && $index =~ /^.+_int$/ && $data =~ /^\d+$/ ) + { + $ref->{$index} = $data; } $self->i2indexes($ref); } $self->i2indexes; } +sub remove_index { + my($self, $index, $data) = @_; + if ( defined($index) && defined($data) ) { + if ( defined($self->i2indexes) ) { + my $ref = $self->i2indexes; + + if ( $index =~ /^.+_bin$/ ) { + if ( defined($ref->{$index}) && $ref->{$index} eq $data ) + { + + delete(${$ref}{$index}); + } + $self->i2indexes($ref); + } + if ( $index =~ /^.+_int$/ ) { + if ( defined($ref->{$index}) && $ref->{$index} == $data ) + { + print "Deleting $index\n"; + delete(${$ref}{$index}); + } + $self->i2indexes($ref); + } + print Dumper($ref),"\n"; + } + } +} + sub status { my ($self) = @_; warn "DEPRECATED: status method will be removed in the 0.17 release, please use ->client->status."; |