save selected backup_parts for burning
authorDobrica Pavlinusic <dpavlin@rot13.org>
Fri, 28 Jan 2011 15:55:37 +0000 (16:55 +0100)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Fri, 28 Jan 2011 15:55:37 +0000 (16:55 +0100)
bin/BackupPC_ASA_SearchUpdate
lib/BackupPC/CGI/BurnMedia.pm

index b921594..d3f9754 100755 (executable)
@@ -296,9 +296,8 @@ if ($opt->create) {
 
                create table archive_parts (
                        archive_id      int not null references archive(id) on delete cascade,
-                       backup_id       int not null references backups(id),
                        backup_part_id  int not null references backup_parts(id),
-                       primary key(archive_id, backup_id, backup_part_id)
+                       primary key(archive_id, backup_part_id)
                );
 
                create table archive_burned (
index 7fce5df..1a3a53a 100644 (file)
@@ -18,7 +18,7 @@ sub action() {
        my $dbh = DBI->connect($Conf{SearchDSN}, $Conf{SearchUser}, "", { RaiseError => 1, AutoCommit => 0 } );
 
        BackupPC::CGI::Lib::NewRequest();
-#      $cont = Dumper(%In);
+       $cont = Dumper(\%In);
        if (!defined($In{submitBurner})) {
                $title = eval(q{ ${h1($Lang->{Burn_media})}});
                $cont = Dumper(%In);
@@ -35,38 +35,21 @@ EOF
            
        } else {
 
-               my @selected_backup_ids;
+               my @selected_backup_parts;
 
-               my $total_size = 0;
-               my $selected = 0;
-
-               my $parts = 1;
                foreach my $key(keys(%In)) {
-                       if ($key =~ m/^fcb([0-9]+)_([0-9]+)_([0-9]+)$/gi) {
-
-                               my ($host_id, $backup_num, $backup_id) = ($1,$2,$3);
-                               push @selected_backup_ids, $backup_id;
-                               my $currSize = BackupPC::Search::getGzipSizeFromBackupID($backup_id);
-                               my $sth_size = $dbh->prepare(q{select inc_size from backups where id = ?});
-                               $sth_size -> execute( $backup_id );
-                               my $db_size = $sth_size->fetchrow_hashref()->{inc_size};
-
-                               if ($db_size != $currSize) {
-                                       $cont .= "NOT EQUAL!: [fs_size:$currSize, db_size:$db_size, backup_id:$backup_id] <br />";
-                               }
-                               
-                               if ($currSize > 0) {
-                                       $total_size += $currSize;
-                               } 
-                               $selected++;
-
-                               my ($this_part) = $dbh->selectrow_array("select parts from backups where id = ?", undef, $backup_id);
-                               $this_part--;
-                               $parts += $this_part;
-                       } 
+                       next unless $key =~ m/^fcb(\d+)/;
+                       push @selected_backup_parts, $1;
                }
 
-               if ($total_size > ($Conf{ArchiveMediaSize} * $parts)) {
+
+               my ($total_size) = $dbh->selectrow_array( q{
+                       SELECT sum(size) FROM backup_parts
+                       WHERE id IN ( }.join(',', @selected_backup_parts).q{ )
+               });
+
+
+               if ($total_size > ($Conf{ArchiveMediaSize})) {
                        $cont .= eval(' ${h2(Error)} ');
                        $cont .= join(' '
                                , "Selected backups size", unit($total_size)
@@ -98,40 +81,26 @@ EOF
 
                        $sth->execute($In{'note'}, $User, $total_size);
 
-                       foreach my $backup_id (@selected_backup_ids) {
-
-                               # link backups with archive
-                               my $sth = $dbh->prepare(q{
-                                       INSERT INTO archive_backup (
-                                               archive_id, backup_id
-                                       ) VALUES (
-                                               (SELECT last_value FROM archive_id_seq), ?
-                                       )
-                               });
-
-                               $sth->execute($backup_id);
-
-                               $dbh->commit();
-
-                       }
+                       my $sth = $dbh->prepare(q{
+                               INSERT INTO archive_parts (
+                                       archive_id, backup_part_id
+                               ) VALUES (
+                                       (SELECT last_value FROM archive_id_seq), ?
+                               )
+                       });
+                       $sth->execute($_) foreach @selected_backup_parts;
 
                        my ($dvd_nr) = $dbh->selectrow_array(qq{
                                select last_value from dvd_nr
                        });
 
-                       $dvd_nr ||= 'error';
+                       die "no dvd_nr" unless $dvd_nr;
 
                        $dbh->commit();
 
-                       my $db_size = 0;
-                       $sth = $dbh->prepare('SELECT SUM(gzip_size) AS suma FROM backups_on_dvds WHERE dvd_nr=?');
-                       $sth->execute($dvd_nr);
-                       $db_size = $sth->fetchrow_hashref()->{suma};
-                       $sth->finish();
-                       
                        $cont .= q{
-                               Archived following backups:
-                       } . join(", ", @selected_backup_ids) . q{
+                               Archived following backups parts:
+                       } . join(", ", @selected_backup_parts) . q{
                                <br/>with total size of
                        <b>} . unit($total_size)
                        . q{</b>