aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/DB/ResultSet/Alert.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/FixMyStreet/DB/ResultSet/Alert.pm')
-rw-r--r--perllib/FixMyStreet/DB/ResultSet/Alert.pm50
1 files changed, 50 insertions, 0 deletions
diff --git a/perllib/FixMyStreet/DB/ResultSet/Alert.pm b/perllib/FixMyStreet/DB/ResultSet/Alert.pm
new file mode 100644
index 000000000..5848265f1
--- /dev/null
+++ b/perllib/FixMyStreet/DB/ResultSet/Alert.pm
@@ -0,0 +1,50 @@
+package FixMyStreet::DB::ResultSet::Alert;
+use base 'DBIx::Class::ResultSet';
+
+use strict;
+use warnings;
+
+sub timeline_created {
+ my ( $rs, $restriction ) = @_;
+
+ my $prefetch =
+ FixMyStreet::App->model('DB')->schema->storage->sql_maker->quote_char ?
+ [ qw/alert_type user/ ] :
+ [ qw/alert_type/ ];
+
+ return $rs->search(
+ {
+ whensubscribed => { '>=', \"ms_current_timestamp()-'7 days'::interval" },
+ confirmed => 1,
+ %{ $restriction },
+ },
+ {
+ prefetch => $prefetch,
+ }
+ );
+}
+
+sub timeline_disabled {
+ my ( $rs, $restriction ) = @_;
+
+ return $rs->search(
+ {
+ whendisabled => { '>=', \"ms_current_timestamp()-'7 days'::interval" },
+ %{ $restriction },
+ },
+ );
+}
+
+sub summary_count {
+ my ( $rs, $restriction ) = @_;
+
+ return $rs->search(
+ $restriction,
+ {
+ group_by => ['confirmed'],
+ select => [ 'confirmed', { count => 'id' } ],
+ as => [qw/confirmed confirmed_count/]
+ }
+ );
+}
+1;