/usr/local/CPAN/Foorum/Foorum/ResultSet/Hit.pm
package Foorum::ResultSet::Hit;
use strict;
use warnings;
our $VERSION = '1.001000';
use base 'DBIx::Class::ResultSet';
sub register {
my ( $self, $object_type, $object_id, $object_hit ) = @_;
my $schema = $self->result_source->schema;
my $cache = $schema->cache();
# we update table 'hit' then use Foorum::TheSchwartz::Worker::Hit to update
# the real table every 5 minutes
# the status field is time(), after update in real, that will be 0
my $hit = $self->search(
{ object_type => $object_type,
object_id => $object_id,
}
)->first;
my $return_hit;
if ($hit) {
$return_hit = $hit->hit_all + 1;
$hit->update(
{ hit_new => \'hit_new + 1',
hit_all => \'hit_all + 1',
last_update_time => time(),
}
);
} else {
$return_hit = $object_hit || 0;
$return_hit++;
$self->create(
{ object_type => $object_type,
object_id => $object_id,
hit_new => 1,
hit_all => $return_hit,
hit_today => 0,
hit_yesterday => 0,
hit_weekly => 0,
hit_monthly => 0,
last_update_time => time(),
}
);
}
return $return_hit;
}
1;