diff options
author | Struan Donald <struan@fury.ukcod.org.uk> | 2011-06-08 15:21:52 +0100 |
---|---|---|
committer | Struan Donald <struan@fury.ukcod.org.uk> | 2011-06-08 15:21:52 +0100 |
commit | 3d7669eb42d6eb6584da5f57b46aac7a1826e498 (patch) | |
tree | a42a0aec22cf45885c74926009c4d1bcaf5be071 /perllib/FixMyStreet/DB/ResultSet/Problem.pm | |
parent | 636f8ac863d45d4db56543313b4fac01703ff713 (diff) | |
parent | 500190d03fcbfd8993f46b61bca9e12a7339dbc2 (diff) |
Merge branch 'migrate_to_catalyst' of ssh://struan@git.mysociety.org/data/git/public/fixmystreet into migrate_to_catalyst
Diffstat (limited to 'perllib/FixMyStreet/DB/ResultSet/Problem.pm')
-rw-r--r-- | perllib/FixMyStreet/DB/ResultSet/Problem.pm | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/perllib/FixMyStreet/DB/ResultSet/Problem.pm b/perllib/FixMyStreet/DB/ResultSet/Problem.pm index 835ab1b45..af850ecd0 100644 --- a/perllib/FixMyStreet/DB/ResultSet/Problem.pm +++ b/perllib/FixMyStreet/DB/ResultSet/Problem.pm @@ -4,6 +4,67 @@ use base 'DBIx::Class::ResultSet'; use strict; use warnings; +my $site_restriction; +my $site_key; + +sub set_restriction { + my ( $rs, $sql, $key, $restriction ) = @_; + $site_key = $key; + $site_restriction = $restriction; +} + +# Front page statistics + +sub recent_fixed { + my $rs = shift; + my $key = "recent_fixed:$site_key"; + my $result = Memcached::get($key); + unless ($result) { + $result = $rs->search( { + state => 'fixed', + lastupdate => { '>', \"current_timestamp-'1 month'::interval" }, + } )->count; + Memcached::set($key, $result, 3600); + } + return $result; +} + +sub recent_new { + my ( $rs, $interval ) = @_; + (my $key = $interval) =~ s/\s+//g; + $key = "recent_new:$site_key:$key"; + my $result = Memcached::get($key); + unless ($result) { + $result = $rs->search( { + state => [ 'confirmed', 'fixed' ], + confirmed => { '>', \"current_timestamp-'$interval'::interval" }, + } )->count; + Memcached::set($key, $result, 3600); + } + return $result; +} + +# Front page recent lists + +sub recent { + my ( $rs ) = @_; + my $key = "recent:$site_key"; + my $result = Memcached::get($key); + unless ($result) { + $result = $rs->search( { + state => [ 'confirmed', 'fixed' ] + }, { + columns => [ 'id', 'title' ], + order_by => { -desc => 'confirmed' }, + rows => 5, + } )->count; + Memcached::set($key, $result, 3600); + } + return $result; +} + +# Admin functions + sub timeline { my ( $rs, $restriction ) = @_; |