with 'APKPM::Gearman';
+my $redis_ttl = 30 * 60; # 30 min
+
sub prefix { 'Store_' }
sub process_name {
}
sub pg_insert {
- my ( $self, $table, $h ) = @_;
+ my ( $self, $base_table, $h ) = @_;
+
+ my $table = $base_table;
my @c;
warn "# using partition $table";
}
- if ( my $cols = $self->redis->get("pg.$table") ) {
+ if ( my $cols = $self->redis->get("columns.$table") ) {
@c = split(/\s+/,$cols);
} else {
my $sth = $self->dbh->prepare( "select * from $table limit 1" );
}
@c = @{ $sth->{NAME_lc} };
- $self->redis->set( "pg.$table" => join(' ',@c) );
- $self->redis->expire( "pg.$table" => 15 * 60 ); # refresh every 15 min
+ $self->redis->set( "columns.$table" => join(' ',@c) );
+ $self->redis->expire( "columns.$table" => $redis_ttl );
+
+ # web interface requires base table columns
+ $self->redis->set( "columns.$base_table" => join(' ',@c) );
+ $self->redis->expire( "columns.$base_table" => $redis_ttl );
}
my $sql = "INSERT INTO $table (" . join(',',@c) . ') values (' . join(',', map { '?' } 0 .. $#c) . ')';
$h_lc->{ lc $_ } = $h->{$_} foreach keys %$h;
if ( my $username = $h->{username} ) {
- my $key = join('.', 'table', $table, $username);
+ my $key = join('.', 'table', $base_table, $username);
$self->redis->set( $key => $self->e_json($h) );
- $self->redis->expire( $key => 15 * 60 ); # 15 min timeout
+ $self->redis->expire( $key => $redis_ttl );
}
$h_lc->{h} = $self->to_hstore( $h_lc->{h} ) if exists $h_lc->{h};