/[BackupPC]/trunk/lib/BackupPC/SearchLib.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/lib/BackupPC/SearchLib.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 51 by dpavlin, Sat Aug 20 16:40:11 2005 UTC revision 58 by dpavlin, Sun Aug 21 14:26:23 2005 UTC
# Line 7  use BackupPC::Attrib qw(:all); Line 7  use BackupPC::Attrib qw(:all);
7  use DBI;  use DBI;
8  use DateTime;  use DateTime;
9  use vars qw(%In $MyURL);  use vars qw(%In $MyURL);
10    use Time::HiRes qw/time/;
11    
12  my $on_page = 100;  my $on_page = 100;
13  my $pager_pages = 10;  my $pager_pages = 10;
# Line 98  sub getFiles($$) { Line 99  sub getFiles($$) {
99                  files.date                      AS date,                  files.date                      AS date,
100                  files.type                      AS filetype,                  files.type                      AS filetype,
101                  files.size                      AS size,                  files.size                      AS size,
102            };
103    
104            my $sql_dvd_cols = qq{
105                  dvds.name                       AS dvd                  dvds.name                       AS dvd
106          };          };
107    
# Line 106  sub getFiles($$) { Line 110  sub getFiles($$) {
110                          INNER JOIN shares       ON files.shareID=shares.ID                          INNER JOIN shares       ON files.shareID=shares.ID
111                          INNER JOIN hosts        ON hosts.ID = shares.hostID                          INNER JOIN hosts        ON hosts.ID = shares.hostID
112                          INNER JOIN backups      ON backups.num = files.backupNum and backups.hostID = hosts.ID                          INNER JOIN backups      ON backups.num = files.backupNum and backups.hostID = hosts.ID
113            };
114    
115            my $sql_dvd_from = qq{
116                          LEFT  JOIN dvds         ON dvds.ID = files.dvdid                          LEFT  JOIN dvds         ON dvds.ID = files.dvdid
117          };          };
118    
# Line 126  sub getFiles($$) { Line 133  sub getFiles($$) {
133    
134          my ($results) = $sth->fetchrow_array();          my ($results) = $sth->fetchrow_array();
135    
136          $sth = $dbh->prepare(qq{ select $sql_cols $sql_from $sql_where $sql_order });          $sth = $dbh->prepare(qq{ select $sql_cols $sql_dvd_cols $sql_from $sql_dvd_from $sql_where $sql_order });
137          $sth->execute( $offset );          $sth->execute( $offset );
138    
139          my @ret;          my @ret;
# Line 156  sub getFiles($$) { Line 163  sub getFiles($$) {
163  sub getBackupsNotBurned() {  sub getBackupsNotBurned() {
164    
165          my $dbh = DBI->connect($dsn, $db_user, "", { RaiseError => 1, AutoCommit => 1 } );          my $dbh = DBI->connect($dsn, $db_user, "", { RaiseError => 1, AutoCommit => 1 } );
166        my $sql = q{          my $sql = q{
167            SELECT          SELECT
168              hosts.ID         AS hostID,                  hosts.ID                AS hostid,
169              hosts.name       AS host,                  min(hosts.name)         AS host,
170              backups.num      AS backupno,                  backups.num             AS backupno,
171              backups.type     AS type,                  min(backups.type)       AS type,
172              backups.date     AS date                  min(backups.date)       AS date
173            FROM backups, shares, files, hosts          FROM backups, shares, files, hosts
174            WHERE          WHERE
175              backups.num    = files.backupNum  AND                  backups.num     = files.backupNum       AND
176              shares.ID      = files.shareID    AND                            shares.ID       = files.shareID         AND        
177              backups.hostID = shares.hostID    AND                  backups.hostID  = shares.hostID         AND
178              hosts.ID       = backups.hostID   AND                  hosts.ID        = backups.hostID        AND
179              files.dvdid    IS NULL                  files.dvdid     IS NULL
180            GROUP BY          GROUP BY
181              backups.hostID, backups.num                  backups.hostID, backups.num, hosts.id
182        };          ORDER BY min(backups.date)
183        my $st = $dbh -> prepare( $sql );          };
184        my @ret = ();          my $sth = $dbh->prepare( $sql );
185        $st -> execute();          my @ret;
186            $sth->execute();
187        while ( my $row = $st -> fetchrow_hashref() )  
188          {                    while ( my $row = $sth->fetchrow_hashref() ) {      
189              push(@ret, {                  push(@ret, {
190                           'host'     => $row->{'host'},                           'host'         => $row->{'host'},
191                           'hostid'   => $row->{'hostID'},                           'hostid'       => $row->{'hostid'},
192                           'backupno' => $row->{'backupno'},                           'backupno'     => $row->{'backupno'},
193                           'type'     => $row->{'type'},                           'type'         => $row->{'type'},
194                           'date'     => $row->{'date'}                           'date'         => $row->{'date'},
195                             'age'          => sprintf("%0.1f", ( (time() - $row->{'date'}) / 86400 ) ),
196                         }                         }
197              );                  );
198          }          }
199                
200        return @ret;                return @ret;      
201    }  }
202    
203  sub displayBackupsGrid()  sub displayBackupsGrid()
204    {    {
# Line 229  EOF3 Line 237  EOF3
237          if ($addForm) {          if ($addForm) {
238              $retHTML .= "<td class=\"tableheader\"><input type=\"checkbox\" name=\"allFiles\" onClick=\"checkAll('allFiles');\"></td>";              $retHTML .= "<td class=\"tableheader\"><input type=\"checkbox\" name=\"allFiles\" onClick=\"checkAll('allFiles');\"></td>";
239          }          }
240          $retHTML .=  qq{<td class="tableheader">Host</td><td class="tableheader">Backup no</td><td class="tableheader">Type</td><td class="tableheader">date</td></tr>};          $retHTML .=  qq{
241                    <td class="tableheader">Host</td>
242                    <td class="tableheader">Backup no</td>
243                    <td class="tableheader">Type</td>
244                    <td class="tableheader">date</td>
245                    <td class="tableheader">age/days</td>
246                    </tr>
247            };
248    
249          my @backups = getBackupsNotBurned();          my @backups = getBackupsNotBurned();
250          my $backup;          my $backup;
251    
252          if ($addForm) {          if ($addForm) {
253                  $retHTML .= qq{<tr><td colspan=7 style="tableheader">                  $retHTML .= qq{
254                            <tr><td colspan=7 style="tableheader">
255                          <input type="submit" value="Burn selected backups on medium" name="submitBurner">                          <input type="submit" value="Burn selected backups on medium" name="submitBurner">
256                          </td></tr>};                          </td></tr>
257                    };
258          }          }
259    
260          foreach $backup(@backups) {          foreach $backup(@backups) {
# Line 246  EOF3 Line 263  EOF3
263                            
264                  $retHTML .= "<tr>";                  $retHTML .= "<tr>";
265                  if ($addForm) {                  if ($addForm) {
266                          $retHTML .= qq{<td class="fview"><input type="checkbox" name="fcb} .                          $retHTML .= '<td class="fview"><input type="checkbox" name="fcb' .
267                                  $backup->{'hostid'}."_".$backup->{'backupno'} .                                  $backup->{'hostid'}.'_'.$backup->{'backupno'} .
268                                  qq{" value="} . $backup->{'hostid'}."_".$backup->{'backupno'} .                                  '" value="' . $backup->{'hostid'}.'_'.$backup->{'backupno'} .
269                                  qq{"></td>};                                  '"></td>';
270                  }                            }          
271                            
272                  $retHTML .= '<td class="fviewborder">' . $backup->{'host'} . '</td>' .                  $retHTML .= '<td class="fviewborder">' . $backup->{'host'} . '</td>' .
273                          '<td class="fviewborder">' . $backup->{'backupno'} . '</td>' .                          '<td class="fviewborder">' . $backup->{'backupno'} . '</td>' .
274                          '<td class="fviewborder">' . $backup->{'type'} . '</td>' .                          '<td class="fviewborder">' . $backup->{'type'} . '</td>' .
275                          '<td class="fviewborder">' . epoch_to_iso( $backup->{'date'} ) . '<td>' .                          '<td class="fviewborder">' . epoch_to_iso( $backup->{'date'} ) . '</td>' .
276                            '<td class="fviewborder">' . $backup->{'age'} . '</td>' .
277                          '</tr>';                          '</tr>';
278          }          }
279    
# Line 278  sub displayGrid($$$$) { Line 296  sub displayGrid($$$$) {
296                  $retHTML .= qq{<input type="hidden" value="results" name="search_results">};                  $retHTML .= qq{<input type="hidden" value="results" name="search_results">};
297          }          }
298    
299            my $start_t = time();
300    
301          my ($results, $files) = getFiles($where, $offset);          my ($results, $files) = getFiles($where, $offset);
302    
303            my $dur_t = time() - $start_t;
304            my $dur = sprintf("%0.4fs", $dur_t);
305    
306          my ($from, $to) = (($offset * $on_page) + 1, ($offset * $on_page) + $on_page);          my ($from, $to) = (($offset * $on_page) + 1, ($offset * $on_page) + $on_page);
307    
308          $retHTML .= qq{          $retHTML .= qq{
309          <br/>Found $results files, showing $from - $to          <br/>Found <b>$results files</b> showing <b>$from - $to</b> (took $dur)
310          <table style="fview" width="100%">          <table style="fview" width="100%">
311                  <tr>                  <tr>
312                  <td class="tableheader">Share</td>                  <td class="tableheader">Share</td>

Legend:
Removed from v.51  
changed lines
  Added in v.58

  ViewVC Help
Powered by ViewVC 1.1.26