diff --git a/PlayBot/commands/get/query.pm b/PlayBot/commands/get/query.pm index 40b7871a0a738e754820231d19ff0ce48e38d784..176823eedea17fda6b7415f581cf01cbb48c00cc 100644 --- a/PlayBot/commands/get/query.pm +++ b/PlayBot/commands/get/query.pm @@ -59,6 +59,14 @@ has 'id' => ( init_arg => undef ); +has 'date' => ( + is => 'ro', + isa => 'Int', + lazy => 0, + builder => '_build_date', + init_arg => undef, +); + sub _build_is_global { my $self = shift; @@ -109,6 +117,10 @@ sub _build_id { } } +sub _build_date { + return time; +} + sub _equals { my ($self, $query) = @_; diff --git a/PlayBot/utils/db/get.pm b/PlayBot/utils/db/get.pm index 73b3568781e4102c9dd3864f129e6ad3dc7a1f09..57af3bdeacaf781aa5c925c8780935539d089e52 100644 --- a/PlayBot/utils/db/get.pm +++ b/PlayBot/utils/db/get.pm @@ -36,14 +36,21 @@ sub get { my $result; if (defined $self->_queries->{$chan} and $self->_queries->{$chan} ~~ $query) { - $result = $self->_get_next($query); + if ($self->_queries->{$chan}->date < time - 3600*6) { + $self->_clean($chan); + $self->_init($query); + $self->_queries->{$chan} = $query; + } + + $query = $self->_queries->{$chan}; } else { $self->_init($query); $self->_queries->{$chan} = $query; - $result = $self->_get_next($query); } + $result = $self->_get_next($query); + # if id was precised, we (and so the user) know there is no more results $self->_clean($chan) if ($query->id >= 0);