added ping store and refactored common code
[APKPM.git] / lib / APKPM / Store.pm
index 3dd8ad6..ae0d42a 100644 (file)
@@ -16,14 +16,26 @@ sub process_name {
        return "$orig ($job_name)";
 }
 
-sub ADSL : Job : MinProcesses(1) : MaxProcesses(5) : Decode(d_json) {
-       my ( $self, $job, $workload ) = @_;
+
+sub pg_insert {
+       my ( $self, $table, $h ) = @_;
 
        my $dbh = DBI->connect_cached('DBI:Pg:dbname=apkpm','','', {
                RaiseError => 1,
                AutoCommit => 1,
        });
 
+       my @c = keys %$h;
+
+       my $sql = "INSERT INTO $table (" . join(',',@c) . ') values (' . join(',', map { '?' } 0 .. $#c) . ')';
+       warn $sql;
+       my $sth = $dbh->prepare($sql);
+       $sth->execute( map { $h->{$_} } @c );
+}
+
+sub ADSL : Job : MinProcesses(1) : MaxProcesses(5) : Decode(d_json) {
+       my ( $self, $job, $workload ) = @_;
+
        my $h = $workload->{ADSL} || die "no ADSL in ",dump $workload;
        foreach my $c ( qw(ip username) ) {
                $h->{$c} = $workload->{$c} || die "no $c in ",dump $workload;
@@ -31,12 +43,12 @@ sub ADSL : Job : MinProcesses(1) : MaxProcesses(5) : Decode(d_json) {
 
        warn "# ADSL ", dump $h;
 
-       my @c = keys %$h;
-
-       my $sql = 'INSERT INTO adsl (' . join(',',@c) . ') values (' . join(',', map { '?' } 0 .. $#c) . ')';
-       warn $sql;
-       my $sth = $dbh->prepare($sql);
-       $sth->execute( map { $h->{$_} } @c );
+       $self->pg_insert(adsl => $h)
 }
 
+sub ping : Job : MinProcesses(1) : MaxProcesses(5) : Decode(d_json) {
+       my ( $self, $job, $workload ) = @_;
+
+       $self->pg_insert(ping => $workload);
+}
 1;