App-Basis-Queue
view release on metacpan or search on metacpan
lib/App/Basis/Queue.pm view on Meta::CPAN
These are completely removed from the database
B<Parameters>
Hash of
=over
=item queue
Name of the queue, wildcard allowed
=item before (optional)
Unix epoch or parsable datetime before which items should be purged
defaults to 'now'
=back
B<Example usage>
my $before = $queue->stats( queue => 'queue_name', before => '2015-11-24') ;
$queue->purge_tasks( queue => 'queue_name') ;
my $after = $queue->stats( queue => 'queue_name') ;
say "removed " .( $before->{total_records} - $after->{total_records}) ;
=cut
sub purge_tasks
{
my $self = shift ;
my $params = @_ % 2 ? shift : {@_} ;
if ( ref($params) ne 'HASH' ) {
warn "purge_tasks accepts a hash or a hashref of parameters" ;
return 0 ;
}
$params->{queue} ||= $self->{default_queue} ;
my $qname = $params->{queue} ;
# SQL wildcard replace
$qname =~ s/\*/%/g ;
try {
if ( !defined $params->{before} ) {
$params->{before} = _parse_datetime( time() ) ;
} else {
$params->{before} = _parse_datetime( $params->{before} ) ;
}
}
catch {
warn(
"this does not look like a datetime value I can use: '$params->{before}'"
) ;
$params->{before} = _parse_datetime( time() ) ;
} ;
# TODO: add in expired items too, plus the and processed=1 or process_failure =1 looks a bit wrong
my $sql = "WHERE queue_name LIKE ?
AND processed = 1
OR process_failure = 1
AND msg_type = ?
AND added <= ?" ;
my $resp = $self->_delete_db_record( $self->{prefix} . "_queue",
$sql, [ $qname, MSG_TASK, $params->{before} ] ) ;
# return the number of items deleted
return $resp->{row_count} ;
}
# -----------------------------------------------------------------------------
=head2 purge_chatter
purge will remove all chatter messages.
These are completely removed from the database
B<Parameters>
Hash of
=over
=item queue
Name of the queue, wildcard allowed
=item before (optional)
Unix epoch or parsable datetime before which items should be purged
defaults to 'now'
=back
B<Example usage>
my $del = $queue->purge_chatter( queue => 'queue_name', before => '2015-11-24') ;
say "removed $del messages" ;
=cut
sub purge_chatter
{
my $self = shift ;
my $params = @_ % 2 ? shift : {@_} ;
if ( ref($params) ne 'HASH' ) {
warn "purge_chatter accepts a hash or a hashref of parameters" ;
return 0 ;
}
$params->{queue} ||= $self->{default_queue} ;
my $qname = $params->{queue} ;
# SQL wildcard replace
( run in 0.981 second using v1.01-cache-2.11-cpan-39bf76dae61 )