remove messages from CRON
[pxelator] / lib / PXElator / store.pm
index e246781..30b14da 100644 (file)
@@ -3,8 +3,76 @@ package store;
 use warnings;
 use strict;
 
-use CouchDB;
+use POSIX;
+use Time::HiRes qw/time/;
+use Data::Dump qw(dump);
 
-sub audit { CouchDB::audit(@_) }
+#use CouchDB;
+
+use MongoDB;
+
+my $conn = MongoDB::Connection->new;
+our $db = $conn->get_database( 'pxelator' );
+our $audit = $db->get_collection( 'audit' );
+
+
+sub audit {
+       my $data = pop @_;
+
+       my $url = join(' ', @_);
+       $url =~ s/\s+-\S+//g;   # remove command line options
+       $url =~ s/\W+/-/g;
+
+       my $time = time();
+
+       my @caller = caller(0);
+       $caller[3] = (caller(1))[3];
+       $caller[3] =~ s{^.+::}{}; # stip package name from sub
+       $data->{package} = {
+               time => $time,
+               name => $caller[0],
+               line => $caller[2],
+               caller  => $caller[3],
+       };
+
+       if ( $ENV{DEBUG} ) {
+
+               my $caller;
+               my $depth = 0;
+               while ( my @c = caller($depth) ) {
+                       push @$caller, [ @c ];
+                       $depth++;
+               }
+
+               $data->{caller} = $caller;
+
+       }
+
+#      carp 'audit ', dump($data);
+
+#      $time = int($time); # reduce granularity for url
+       $time = strftime("%Y-%m-%d.%H:%M:%S", localtime $time);
+       my $package = $caller[0];
+
+#      CouchDB::_store_audit( "$time.$package.$url" => $data );
+
+#      $data->{_id} = "$time.$package.$url";
+       $audit->insert( $data );
+}
+
+
+sub query {
+       my ( $from_t, $callback ) = @_;
+       my $q;
+       $q->{'package.time'} = { '$lt' => $from_t * 1 } if $from_t;
+#      $q->{'package.name'} = { '$ne' => 'syslogd' };
+       $q->{'tag'} = { '$ne' => 'CRON' };
+       warn "# query ", dump($q);
+       $audit->ensure_index({ 'package.name' => 1 });
+       my $cursor = $audit->query($q)->sort({ 'package.time' => -1 })->limit( 100 );
+       while( my $o = $cursor->next ) {
+               $callback->( $o );
+       }
+}
 
 1;