summaryrefslogtreecommitdiff
path: root/lib/Net/Riak/Bucket.pm
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lib/Net/Riak/Bucket.pm82
1 files changed, 15 insertions, 67 deletions
diff --git a/lib/Net/Riak/Bucket.pm b/lib/Net/Riak/Bucket.pm
index 2bc334e..19f5d94 100644
--- a/lib/Net/Riak/Bucket.pm
+++ b/lib/Net/Riak/Bucket.pm
@@ -1,16 +1,14 @@
package Net::Riak::Bucket;
-
-# ABSTRACT: Access and change information about a Riak bucket
-
-use JSON;
use Moose;
-use Carp;
use Net::Riak::Object;
-
+use Net::Riak::Types Client => {-as => 'Client_T'};
with 'Net::Riak::Role::Replica' => {keys => [qw/r w dw/]};
-with 'Net::Riak::Role::Base' => {
- classes => [{ name => 'client', required => 1, }]
-};
+
+has client => (
+ is => 'rw',
+ isa => Client_T,
+ required => 1,
+);
has name => (
is => 'ro',
@@ -37,20 +35,17 @@ sub allow_multiples {
my $self = shift;
if (my $val = shift) {
- my $bool = ($val == 1 ? JSON::true : JSON::false);
+ my $bool = ($val == 1 ? 1 : 0);
$self->set_property('allow_mult', $bool);
}
else {
- return $self->get_property('allow_mult');
+ return $self->get_property('allow_mult') ? 1 : 0;
}
}
sub get_keys {
my ($self, $params) = @_;
- my $key_mode = delete($params->{stream}) ? 'stream' : 'true';
- $params = { props => 'false', keys => $key_mode, %$params };
- my $properties = $self->get_properties($params);
- return $properties->{keys};
+ $self->client->get_keys($self->name, $params);
}
sub get {
@@ -66,12 +61,12 @@ sub get {
}
sub delete_object {
- my ($self, $key) = @_;
+ my ($self, $key, $dw) = @_;
Net::Riak::Object->new(
client => $self->client,
bucket => $self,
key => $key
- )->delete;
+ )->delete($dw);
}
sub set_property {
@@ -87,59 +82,12 @@ sub get_property {
sub get_properties {
my ($self, $params) = @_;
-
- # Callbacks require stream mode
- $params->{keys} = 'stream' if $params->{cb};
-
- $params->{props} = 'true' unless exists $params->{props};
- $params->{keys} = 'false' unless exists $params->{keys};
-
- my $request = $self->client->new_request(
- 'GET', [$self->client->prefix, $self->name], $params
- );
-
- my $response = $self->client->send_request($request);
-
- unless ($response->is_success) {
- die "Error getting bucket properties: ".$response->status_line."\n";
- }
-
- if ($params->{keys} ne 'stream') {
- return JSON::decode_json($response->content);
- }
-
- # In streaming mode, aggregate keys from the multiple returned chunk objects
- else {
- my $json = JSON->new;
- my $props = $json->incr_parse($response->content);
- if ($params->{cb}) {
- while (defined(my $obj = $json->incr_parse)) {
- $params->{cb}->($_) foreach @{$obj->{keys}};
- }
- return %$props ? { props => $props } : {};
- }
- else {
- my @keys = map { $_->{keys} && ref $_->{keys} eq 'ARRAY' ? @{$_->{keys}} : () }
- $json->incr_parse;
- return { props => $props, keys => \@keys };
- }
- }
+ $self->client->get_properties($self->name, $params);
}
sub set_properties {
my ($self, $props) = @_;
-
- my $request = $self->client->new_request(
- 'PUT', [$self->client->prefix, $self->name]
- );
-
- $request->header('Content-Type' => $self->content_type);
- $request->content(JSON::encode_json({props => $props}));
-
- my $response = $self->client->send_request($request);
- unless ($response->is_success) {
- die "Error setting bucket properties: ".$response->status_line."\n";
- }
+ $self->client->set_properties($self, $props);
}
sub new_object {
@@ -169,7 +117,7 @@ sub new_object {
my $obj2 = $bucket->new_object('foo2', {...});
$object->store;
- $bucket->delete_object($key);
+ $bucket->delete_object($key, 3); # optional w val
=head1 DESCRIPTION