3 use base qw(Gearman::Driver::Worker);
6 use Data::Dump qw(dump);
11 sub prefix { 'Store_' }
14 my ( $self, $orig, $job_name ) = @_;
15 warn "# process_name $orig $job_name\n";
16 return "$orig ($job_name)";
20 DBI->connect_cached('DBI:Pg:dbname=apkpm','','', {
27 my ( $self, $table, $h ) = @_;
32 my $sql = "INSERT INTO $table (" . join(',',@c) . ') values (' . join(',', map { '?' } 0 .. $#c) . ')';
34 my $sth = $self->dbh->prepare($sql);
35 $sth->execute( map { $h->{$_} } @c );
38 sub ADSL : Job : Decode(d_json) {
39 my ( $self, $job, $workload ) = @_;
41 my $h = $workload->{ADSL} || die "no ADSL in ",dump $workload;
42 foreach my $c ( qw(ip username) ) {
43 $h->{$c} = $workload->{$c} || die "no $c in ",dump $workload;
46 warn "# ADSL ", dump $h;
48 $self->pg_insert(adsl => $h)
51 sub ping : Job : Decode(d_json) {
52 my ( $self, $job, $workload ) = @_;
54 $self->pg_insert(ping => $workload);
57 sub voice : Job : Decode(d_json) {
58 my ( $self, $job, $workload ) = @_;
59 $self->pg_insert(voice => $workload);
62 sub insert_table : Job : Decode(d_json) {
63 my ( $self, $job, $workload ) = @_;
64 my $table = delete $workload->{_table} || die "no _table";
65 $self->pg_insert($table => $workload);
68 sub sql : Job : Encode(e_json) {
69 my ( $self, $job, $workload ) = @_;
71 my $sth = $self->dbh->prepare($workload);
72 my $rows = $sth->execute;
74 warn "# $rows rows get_username_table $workload\n";
77 columns => $sth->{NAME},
78 rows => $sth->fetchall_arrayref,