X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=data-worker.pl;h=9d321a9d9694ab66aada338ec5815524bfee2c8a;hb=2702b72c8e75347270043d82c63eb90d3cad2625;hp=af8a2bd53a7923405a72e23d598df5fd41cf23bf;hpb=9fdbc30a80f4761162c248b8a345ee5addfdd218;p=cloudstore.git diff --git a/data-worker.pl b/data-worker.pl index af8a2bd..9d321a9 100755 --- a/data-worker.pl +++ b/data-worker.pl @@ -6,30 +6,32 @@ use Data::Dump qw(dump); use DBI; use JSON::XS; -my $log = sub { - my $job = shift; +sub insert { + my ($table,$job) = @_; - my $json = decode_json $job->arg; - warn "## log ",dump( $json ); + my $hash = decode_json $job->arg; + + print "insert $table ",dump($hash),$/; my $dbh = DBI->connect_cached('DBI:Pg:dbname=cloudstore','','', { RaiseError => 1, AutoCommit => 1, }); - my @k = keys %$json; + my @k = keys %$hash; - my $sql = sprintf 'INSERT INTO log (%s) values (%s)', + my $sql = sprintf 'INSERT INTO %s (%s) values (%s)', $table, join(',',@k), join(',', map { '?' } @k); + warn "# $sql"; my $sth = $dbh->prepare($sql); - $sth->execute( map { $json->{$_} } @k ); + $sth->execute( map { $hash->{$_} } @k ); }; use Gearman::Worker; my $worker = Gearman::Worker->new; $worker->job_servers('127.0.0.1:4730'); -$worker->register_function( log => $log ); +$worker->register_function( rsync_transfer => sub { insert 'rsync_transfer' => shift } ); warn "$0 pid $$ waitng for jobs\n"; $worker->work while 1;