added users bucket
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 4 Sep 2011 16:09:40 +0000 (16:09 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 4 Sep 2011 16:09:40 +0000 (16:09 +0000)
couchbase/create.sh
lib/CloudStore/Couchbase.pm
t/Couchbase.t

index 99d7ecc..231d854 100755 (executable)
@@ -7,6 +7,7 @@ membase() {
 membase server-list
 membase server-info
 
+membase bucket-list | grep users && membase bucket-flush --bucket=users && membase bucket-delete --bucket=users
 membase bucket-list | grep files && membase bucket-flush --bucket=files && membase bucket-delete --bucket=files
 membase bucket-list | grep session && membase bucket-flush --bucket=session && membase bucket-delete --bucket=session
 
@@ -14,15 +15,21 @@ membase rebalance
 
 membase bucket-list
 
-membase bucket-create --bucket=files \
+membase bucket-create --bucket=users \
        --bucket-type=membase \
        --bucket-port=5800 \
        --bucket-ramsize=100 \
        --bucket-replica=1
 
+membase bucket-create --bucket=files \
+       --bucket-type=membase \
+       --bucket-port=5801 \
+       --bucket-ramsize=100 \
+       --bucket-replica=1
+
 membase bucket-create --bucket=session \
        --bucket-type=memcached \
-       --bucket-port=5801 \
+       --bucket-port=5802 \
        --bucket-ramsize=100
 
 membase bucket-flush --bucket=files
index de2d323..897e9db 100644 (file)
@@ -10,10 +10,12 @@ use Cache::Memcached;
 use Digest::MD5 qw(md5_base64);
 use Data::Dump qw(dump);
 use LWP::Simple;
+use Carp qw(confess);
 
 my $buckets = {
-       files => 5800,
-       session => 5801,
+       users => 5800,
+       files => 5801,
+       session => 5802,
 };
 
 sub new {
@@ -36,11 +38,38 @@ sub new {
 
        }
 
-       warn "# new ",dump $self;
+       warn "# new ",dump $self if $ENV{DEBUG};
 
        return $self;
 }
 
+sub json_set {
+       my ($self,$bucket,$key,$data) = @_;
+       confess "data not ref ",dump($data) unless ref $data;
+       my $json = encode_json $data;
+       $self->{$bucket}->set( $key => $json );
+       warn "## $bucket set $key $json\n";
+       return $json;
+}
+
+sub json_get {
+       my ($self,$bucket,$key,$data) = @_;
+       if ( my $json = $self->{$bucket}->get($key) ) {
+               warn "## $bucket get $key $json\n";
+               return decode_json $json;
+       }
+}
+
+sub user_set {
+       my ($self,$data) = @_;
+       $self->json_set( 'users', $data->{login}, $data );
+}
+
+sub user_get {
+       my ($self,$login) = @_;
+       $self->json_get( 'users', $login );
+}
+
 sub usage_decr {
        my ($self,$data) = @_;
        $self->{session}->decr( $data->{login} . ':usage' => $data->{size} );
@@ -79,7 +108,7 @@ sub usage_init {
        $self->{session}->set( $data->{login} . ':usage' => $usage );
 }
 
-sub _key {
+sub _file_key {
        my $data = shift;
        #md5_base64( $data->{login} . '/' . $data->{file} );
        $data->{login} . ':' . $data->{file};
@@ -87,18 +116,12 @@ sub _key {
 
 sub file_set {
        my ($self,$data) = @_;
-       my $k = _key $data;
-       my $json = encode_json $data;
-       $self->{files}->set( $k => $json );
-       return $json;
+       $self->json_set( 'files', _file_key($data), $data );
 }
 
 sub file_get {
        my ($self,$data) = @_;
-       my $k = _key $data;
-       if ( my $json = $self->{files}->get($k) ) {
-               return decode_json $json;
-       }
+       $self->json_get( 'files', _file_key($data) );
 }
 
 sub modify_file {
@@ -120,7 +143,7 @@ sub new_file {
 sub remove_file {
        my ( $self, $data ) = @_;
        $self->usage_decr( $data );
-       my $k = _key $data;
+       my $k = _file_key $data;
        $self->{files}->delete( $k );
 }
 
index 74a467a..e646aba 100755 (executable)
@@ -2,7 +2,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 11;
+use Test::More tests => 15;
 use Data::Dump qw(dump);
 
 use lib 'lib';
@@ -25,15 +25,22 @@ my $data =
   transfered => 10064,
 };
 
+my $user =
+{ login => 'test', quota => 12000 };
+
 ok my $r = CloudStore::Couchbase->new, 'new';
 
+ok $r->user_set($user), 'user_set';
+is_deeply $r->user_get($user->{login}), $user, 'user_get';
+
 ok($r->usage_init({ login => 'test' }), 'usage_init' );
 cmp_ok($r->{session}->get('test:usage'), '==',0, 'usage');
 
 ok my $j = $r->file_set($data), 'file_set';
 
 ok( my $f = $r->file_get($data), 'file_get' );
-diag 'file ',dump $f;
+diag 'file ',dump $f, $data;
+is_deeply $f, $data, 'same';
 
 ok( my $u = $r->usage_incr($data), 'usage_incr' );
 diag $u;
@@ -46,3 +53,4 @@ cmp_ok( $r->usage_decr($data), '==', 0, 'usage_decr' );
 ok my $d = $r->transfer($data), 'transfer';
 diag dump($d);
 
+ok($r->remove_file($data), 'remove_file');