#!/usr/bin/perl

use strict;
use warnings;

use MLDBM qw(DB_File Storable);
use Fcntl;
use Time::Local qw( timelocal_modern );

my $SUMMARYDB = "./SummaryDB.db";

my %data_db = ();
my %data = ();

tie (%data_db, 'MLDBM', $SUMMARYDB, O_RDWR|O_CREAT, 0644)
	or die "Can't open $SUMMARYDB:$!\n";

%data = %data_db;
untie (%data_db);

#reset the max time to 12/31/2020 23:59:59 in the local timezone

my $year = 2020;
my $mon = 11; # 0 - 11
my $mday = 31; # 1 - 31
my $hour = 23;
my $min = 59;
my $sec = 59;

my $unixtime = timelocal_modern($sec, $min, $hour, $mday, $mon, $year);

print "Current max time: $data{'max'}\n" if defined $data{'max'};

$data{'max'} = $unixtime;

print "Reset max time to $unixtime\n";

# Delete future data from SummaryDB

my $deletetime = $unixtime;
my $trimcounter = 0;

foreach my $entrytime (keys %{$data{'hourly'}}) {
	if ($entrytime > $deletetime) {
		delete($data{'hourly'}{$entrytime});
		$trimcounter++;
	}
}

print "Trimmed $trimcounter 'hourly' future entries from SummaryDB\n";

$trimcounter=0;

foreach my $entrytime (keys %{$data{'daily'}}) {
	if ($entrytime > $deletetime) {
		delete $data{'daily'}{$entrytime};
		$trimcounter++;
	}
}

print "Trimmed $trimcounter 'daily' future entries from SummaryDB\n";

$trimcounter=0;

foreach my $entrytime (keys %{$data{'monthly'}}) {
        if ($entrytime > $deletetime) {
                delete $data{'monthly'}{$entrytime};
                $trimcounter++;
        }
}

print "Trimmed $trimcounter 'monthly' future entries from SummaryDB\n";

tie (%data_db, 'MLDBM', $SUMMARYDB, O_RDWR|O_CREAT, 0644)
        or die "Can't open $SUMMARYDB:$!\n";
%data_db = %data;
untie (%data_db);
