From d312f965af0d1db94fb016ec4a1a5c673864ca59 Mon Sep 17 00:00:00 2001 From: Alexandre Morignot <erdnaxeli@cervoi.se> Date: Thu, 19 Feb 2015 00:34:41 +0100 Subject: [PATCH] Sam::commands::list uses ORM --- Sam/commands/list.pm | 83 +++++++++++++++++--------------------------- 1 file changed, 32 insertions(+), 51 deletions(-) diff --git a/Sam/commands/list.pm b/Sam/commands/list.pm index d90ee11..e563781 100644 --- a/Sam/commands/list.pm +++ b/Sam/commands/list.pm @@ -1,5 +1,10 @@ package Sam::commands::list; +use strict; + +use DateTime; +use Sam::Event::Manager; + require Exporter; our @ISA = qw(Exporter); our @EXPORT_OK = qw(exec); @@ -12,67 +17,43 @@ sub exec { my $chan = shift; my $sth; - if ($chan->[0] =~ /^#/) { - $sth = $dbh->prepare_cached('SELECT id, title, DATE_FORMAT(date, "%d/%m/%Y"), place, description, link - FROM sam - WHERE date > NOW() - ORDER BY date - LIMIT 2' - ); - } else { - $sth = $dbh->prepare_cached('SELECT id, title, DATE_FORMAT(date, "%d/%m/%Y"), place, description, link - FROM sam - WHERE date > NOW() - ORDER BY date' - ); - } - - unless (defined $sth) { - $log->error("Couldn't prepare querie; aborting"); - return; - } - - $sth->execute() - or $log->error("Couldn't finish transaction: " . $dbh->errstr); + my $events = Sam::Event::Manager->get_events( + query => + [ + date => { 'gt' => DateTime->now() }, + ], + sort_by => 'date', + limit => ($chan->[0] =~ /^#/) ? 2 : 10, + ); - if (!$sth->rows) { + if (scalar @{$events} == 0) { $irc->yield(privmsg => $chan => "Aucune soirée à venir enregistrée, on se fait bien chier…"); return; } - while ($row = $sth->fetch) { - $msg = "[".$row->[0]."] ".$row->[1]." le ".$row->[2]; - $msg .= " @ ".$row->[3] if ($row->[3]); - $msg .= " : ".$row->[4] if ($row->[4]); - $msg .= " <".$row->[5].">" if ($row->[5]); + foreach (@{$events}) { + my $msg = "[".$_->id."] ".$_->title; + $msg .=" le ".$_->date->strftime('%d/%m/%Y'); + $msg .= " @ ".$_->place if ($_->place); + $msg .= " : ".$_->description if ($_->description); + $msg .= " <".$_->link.">" if ($_->link); $irc->yield(privmsg => $chan => $msg); } - if ($chan->[0] =~ /^#/) { - $sth = $dbh->prepare_cached('SELECT count(*) - FROM sam - where date > ?' - ); - - unless (defined $sth) { - $log->error("Couldn't prepare querie; aborting"); - return; - } + my $events_nb = Sam::Event::Manager->get_events_count( + query => [ date => { 'gt' => DateTime->now() } ] + ); - $sth->execute(scalar time) - or $log->error("Couldn't finish transaction: " . $dbh->errstr); + $events_nb -= 2; + $events_nb -= 8 if ($chan->[0] !~ /^#/); # query - $row = $sth->fetch; - $events = $row->[0] - 2; - - if ($events > 0) { - $msg = $events . " autre"; - $msg .= "s" if ($events > 1); - $msg .= " soirée"; - $msg .= "s" if ($events > 1); - $msg .= " sur http://nightiies.iiens.net/sam/"; - $irc->yield(privmsg => $chan => $msg); - } + if ($events_nb > 0) { + my $msg = $events_nb . " autre"; + $msg .= "s" if ($events_nb > 1); + $msg .= " soirée"; + $msg .= "s" if ($events_nb > 1); + $msg .= " sur http://nightiies.iiens.net/sam/"; + $irc->yield(privmsg => $chan => $msg); } } -- GitLab