NAME

App::SpamcupNG::Summary::Recorder - class to save Summary to SQLite3

SYNOPSIS

use App::SpamcupNG::Summary::Recorder;

# just pretend that $summary is an existing App::SpamcupNG::Summary instance
my $recorder = App::SpamcupNG::Summary::Recorder->new(
    '/some/path/database_file' );
$recorder->init;
$recorder->save($summary);

DESCRIPTION

This class is used to persist App::SpamcupNG::Summary instances to a SQLite3 database.

METHODS

new

Creates a new recorder instance.

Expects as parameter the complete path to a existing (or to create) SQLite 3 file.

init

Initialize the database if it doesn't exist yet. This is idempotent.

save

Persists a App::SpamcupNG::Summary instance to the database.

Returns "true" (in Perl terms) if everything goes fine.

DESTROY

Properly closes the SQLite 3 database file when the recorder instance goes out of scope.

QUERYING RESULTS

This is a sample query to checkout records in the database:

SELECT A.id,
  A.tracking_id,
  DATETIME(A.created, 'unixepoch') AS CREATED,
  B.name AS CHARSET,
  C.name AS CONTENT_TYPE,
  A.age,
  D.name AS MAILER,
  E.report_id,
  F.email
FROM summary A outer left join email_charset B on A.charset_id = B.id
INNER JOIN email_content_type C ON A.content_type_id = C.id
OUTER LEFT JOIN mailer D ON A.mailer_id = D.id
INNER JOIN summary_receiver E ON A.id = E.summary_id
INNER JOIN receiver F ON E.receiver_id = F.id;

SEE ALSO