extract couchdb view call
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 4 Sep 2011 21:47:41 +0000 (21:47 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 4 Sep 2011 21:47:41 +0000 (21:47 +0000)
lib/CloudStore/Couchbase.pm

index cc62539..d173c6e 100644 (file)
@@ -101,27 +101,36 @@ sub usage {
        $self->{session}->get( $login . ':usage' );
 }
 
+sub couchdb {
+       my $self = shift @_;
+       my $fmt  = shift @_;
+       my $url = sprintf $fmt, @_;
+
+       warn "# couchdb $url\n";
+       if ( my $json = get $url ) {
+               warn "## $url $json\n";
+               my $r = decode_json $json;
+               return $r;
+       }
+}
+
 sub usage_init {
-       my ($self,$data) = @_;
+       my ($self,$login) = @_;
+       $login = $login->{login} if ref $login;
 
        my $usage = 0;
 
-       my $url = sprintf
-               'http://localhost:5984/files/_design/files/_view/login_usage?group=true&connection_timeout=60000&limit=1&skip=0&start_key="%s"&end_key="%s"'
-               , $data->{login}
-               , $data->{login}
-       ;
+       if ( my $r = $self->couchdb(
+               'http://localhost:5984/files/_design/files/_view/login_usage?group=true&connection_timeout=60000&limit=1&skip=0&start_key="%s"&end_key="%s"&stale=update_after'
+               , $login
+               , $login
+       )) {
 
-       warn "usage from $url";
-       if ( my $json = get $url ) {
-               warn "# JSON = $json\n";
-               my $r = decode_json $json;
-               warn dump $r;
                $usage = $r->{rows}->[0]->{value};
                $usage = 0 unless defined $usage;
        }
 
-       $self->{session}->set( $data->{login} . ':usage' => $usage );
+       $self->{session}->set( $login . ':usage' => $usage );
 }
 
 sub _file_key {