sub mk_epoch_date($$) {
my ($name,$suffix) = @_;
- my $yyyy = $param->{ $name . '_year_' . $suffix} || return undef;
- my $mm .= $param->{ $name . '_month_' . $suffix} ||
- ( $suffix eq 'from' ? 1 : 12);
- my $dd .= $param->{ $name . '_day_' . $suffix} ||
- ( $suffix eq 'from' ? 1 : 31);
+ my $yyyy = $param->{ $name . '_year_' . $suffix} || return undef;
+ my $mm = $param->{ $name . '_month_' . $suffix};
+ my $dd = $param->{ $name . '_day_' . $suffix};
$yyyy =~ s/\D//g;
- $mm =~ s/\D//g;
- $dd =~ s/\D//g;
-
- my $h = my $m = my $s = 0;
- if ($suffix eq 'to') {
- $h = 23;
- $m = 59;
- $s = 59;
- }
+ $mm =~ s/\D//g;
+ $dd =~ s/\D//g;
my $dt = new DateTime(
- year => $yyyy,
- month => $mm,
- day => $dd,
- hour => $h,
- minute => $m,
- second => $s,
+ year => $yyyy,
+ month => $mm || 1,
+ day => $dd || 1,
+ hour => 0,
+ minute => 0,
+ second => 0,
);
+ if ( $suffix eq 'to' && ( ! $mm || ! $dd ) ) {
+ $dt += DateTime::Duration->new( years => 1 ) if ! $mm;
+ $dt += DateTime::Duration->new( months => 1 ) if ! $dd;
+ $dt -= DateTime::Duration->new( days => 1 );
+ }
+
print STDERR "mk_epoch_date($name,$suffix) [$yyyy-$mm-$dd] = " . $dt->ymd . " " . $dt->hms . "\n";
return $dt->epoch || 'NULL';
}
# do we have to add tables for burned media?
if ( $param->{burned} ) {
$sql_from .= qq{
- LEFT OUTER JOIN archive_backup on archive_backup.backup_id = backups.id
- LEFT OUTER JOIN archive_burned on archive_burned.archive_id = archive_backup.archive_id
+ LEFT OUTER JOIN archive_backup_parts on backup_id = backups.id
+ LEFT OUTER JOIN archive_burned on archive_burned.archive_id = archive_id
};
}
$sth_archived ||= $dbh->prepare(qq{
select
- dvd_nr, note,
+ archive.dvd_nr, note,
count(archive_burned.copy) as copies
from archive
inner join archive_burned on archive_burned.archive_id = archive.id
- inner join archive_backup on archive.id = archive_backup.archive_id
- inner join backups on backups.id = archive_backup.backup_id
+ inner join archive_backup_parts on archive.id = archive_backup_parts.archive_id
+ inner join backups on backups.id = archive_backup_parts.backup_id
inner join hosts on hosts.id = backups.hostid
inner join shares on shares.id = backups.shareid
where hosts.name = ? and shares.name = ? and backups.num = ?
- group by dvd_nr, note
+ group by archive.dvd_nr, note
});
my @mediums;