Mail-Decency
view release on metacpan or search on metacpan
lib/Mail/Decency/LogParser/Aggregator.pm view on Meta::CPAN
Intervals in strftime format for L<DateTime>
=cut
has interval_formats => ( is => 'rw', isa => 'ArrayRef[Str]', default => sub { [] } );
=head2 maintenance_ttl : Int
Maintenance Time To Live. In maintenance mode, all entries from the database older then (now - ttl) will be wiped.
=cut
has maintenance_ttl => ( is => 'rw', isa => 'Int', default => 86400 * 90 );
=head2 schema_definition : ArrayRef[Str]
Schema for Aggregator is:
=over
=item * Aggregator
=over
=item * (ip|from_domain|to_domain)
=over
=item * (ip|from_domain|to_domain)
Varchar 255 (39 for IP) ..
=item * type
Varchar 25 .. either sent, bounced or reject
=item * interval
Varchar 25 .. the interval value, such as '2010-06-17'
=item * format
Varchar 25 .. the interval format, such as '%Y-%m-%d'
=item * counter
Integer .. the amount
=item * last_update
Integer (timestamp) .. last time updated
=back
=back
=back
=cut
has schema_definition => ( is => 'ro', isa => 'HashRef[HashRef]', default => sub {
{
aggregator => {
ip => {
ip => [ varchar => 39 ],
type => [ varchar => 25 ], # bounced, sent, reject
interval => [ varchar => 25 ],
format => [ varchar => 25 ],
counter => 'integer',
transfer => 'integer',
last_update => 'integer',
-unique => [ 'ip', 'type', 'interval', 'format' ]
},
from_domain => {
from_domain => [ varchar => 255 ],
type => [ varchar => 25 ], # bounced, sent, reject
interval => [ varchar => 25 ],
format => [ varchar => 25 ],
counter => 'integer',
transfer => 'integer',
last_update => 'integer',
-unique => [ 'from_domain', 'type', 'interval', 'format' ]
},
to_domain => {
to_domain => [ varchar => 255 ],
type => [ varchar => 25 ], # bounced, sent, reject
interval => [ varchar => 25 ],
format => [ varchar => 25 ],
counter => 'integer',
transfer => 'integer',
last_update => 'integer',
-unique => [ 'to_domain', 'type', 'interval', 'format' ]
},
}
};
} );
=head1 METHODS
=head2 setup
=cut
sub setup {
my ( $self ) = @_;
$self->config->{ interval_formats } ||= [ '%Y-%m-%d', '%Y-%m', '%Y' ];
$self->interval_formats( $self->config->{ interval_formats } );
}
=head2 handle_data
Checks wheter incoming mail is whilist for final recipient
=cut
sub handle_data {
my ( $self, $parsed_ref ) = @_;
# no relevant
( run in 0.621 second using v1.01-cache-2.11-cpan-39bf76dae61 )