use memcached session bucket for usage
[cloudstore.git] / lib / CloudStore / Couchbase.pm
index 30a859b..7585784 100644 (file)
@@ -12,7 +12,7 @@ use Data::Dump qw(dump);
 
 my $buckets = {
        files => 5800,
-       usage => 5801,
+       session => 5801,
 };
 
 sub new {
@@ -42,22 +42,28 @@ sub new {
 
 sub usage_decr {
        my ($self,$data) = @_;
-       $self->{usage}->decr( $data->{login} => $data->{size} );
+       $self->{session}->decr( $data->{login} . ':usage' => $data->{size} );
 }
 
 sub usage_incr {
        my ($self,$data) = @_;
-       $self->{usage}->incr( $data->{login} => $data->{size} );
+       $self->{session}->incr( $data->{login} . ':usage' => $data->{size} );
 }
 
 sub usage {
        my ($self,$data) = @_;
-       $self->{usage}->get( $data->{login} );
+       $self->{session}->get( $data->{login} . ':usage' );
+}
+
+sub _key {
+       my $data = shift;
+       #md5_base64( $data->{login} . '/' . $data->{file} );
+       $data->{login} . ':' . $data->{file};
 }
 
 sub file_set {
        my ($self,$data) = @_;
-       my $k = md5_base64( $data->{login} . '/' . $data->{file} );
+       my $k = _key $data;
        my $json = encode_json $data;
        $self->{files}->set( $k => $json );
        return $json;
@@ -65,7 +71,7 @@ sub file_set {
 
 sub file_get {
        my ($self,$data) = @_;
-       my $k = md5_base64( $data->{login} . '/' . $data->{file} );
+       my $k = _key $data;
        if ( my $json = $self->{files}->get($k) ) {
                return decode_json $json;
        }
@@ -90,7 +96,7 @@ sub new_file {
 sub remove_file {
        my ( $self, $data ) = @_;
        $self->usage_decr( $data );
-       my $k = md5_base64( $data->{login} . '/' . $data->{file} );
+       my $k = _key $data;
        $self->{files}->delete( $k );
 }
 
@@ -159,16 +165,18 @@ sub dedup {
                        my $new = "users/$data->{login}/blob/$dir$file";
                        if ( ! -e $new ) {
                                # create path from md5sum file
-                               my $dir = $1 if $new =~ m{^(.+)/[^/]+$};
-                               make_path $dir unless -d $dir;
+                               my $only_dir = $1 if $new =~ m{^(.+)/[^/]+$};
+                               make_path $only_dir unless -d $only_dir;
                                $imported += link "md5/$md5", $new;
-                               $self->new_file({
+                               my $fake = {
                                        login => $data->{login},
                                        host => $data->{host},
                                        file => $dir . $file,
                                        md5 => $md5,
                                        size => -s $new,
-                               });
+                               };
+                               $self->new_file($fake);
+                               warn "fake ",dump($fake);
                        } else {
                                md5pool $new => $md5;
                        }