#!/usr/bin/perl

use strict;
use warnings;

use lib '/app/tools/common/lib';
use Common::Session;
use Common::Amazon::SQS::EmailSent;

my $dbx = Common::Session::getdbx('admindb');

eval {
    my $sqs = Common::Amazon::SQS::EmailSent->new;
    while ( my $message = $sqs->get_message ) {
        my $data       = $sqs->parse_message($message);
        my $total_recs = 0;
        foreach my $row ( @{$data} ) {
            my $rec = $dbx->resultset('Report::SqsEmailSent')->update_or_new( $row, { 'key' => 'uidx_email_address' } );
            if ( $rec->in_storage ) {
                $rec->updated_at(Common::Session::mysql_now);
                $rec->update;
            } else {
                $rec->created_at(Common::Session::mysql_now);
                $rec->insert;
            }
            $total_recs++ if defined $rec;
        }
        if ( $total_recs == scalar @{$data} ) {
            $sqs->delete_message($message);
        } else {
			logMessage('error','not all messages were logged to the database - freezing message');
            $sqs->freeze_message( $message, 120 );
        }
    }
};
if ($@) {
    my $err;
}

