]> git.donarmstrong.com Git - debbugs.git/blobdiff - bin/debbugs-updatesqlcache
Support 7 digit bugs in bugspam.cgi
[debbugs.git] / bin / debbugs-updatesqlcache
index 0c00c590f1d456705e700e33c13c1a46f75e382c..9422adfdab945a71e972b3033303a0f9941b99d8 100755 (executable)
@@ -96,7 +96,7 @@ use Debbugs::Status qw(bug_presence read_bug);
 use Debbugs::DB;
 use DateTime;
 use File::stat;
-use List::MoreUtils qw(natatime);
+use List::AllUtils qw(natatime uniq);
 use POSIX qw(ceil);
 
 my %options =
@@ -107,7 +107,7 @@ my %options =
      quiet           => 0,
      quick           => 0,
      archived        => 0,
-     service         => $config{debbugs_db},
+     service         => $config{database},
      progress        => 0,
     );
 
@@ -131,6 +131,8 @@ $DEBUG = $options{debug};
 
 my %subcommands =
     ('update' => {function => \&update_cache,
+                 arguments => {'suites|suite=s@' => 0,
+                              },
                },
      'help' => {function => sub {pod2usage({verbose => 2});}}
     );
@@ -193,12 +195,25 @@ sub update_cache {
     # get all of the possible architectures that we might care about
     # select distinct s.codename,a.arch from bin_associations ba join bin_ver bv on ba.bin=bv.id join suite s on ba.suite=s.id join arch a on bv.arch=a.id;
 
-    my @suites =
-       $s->resultset('Suite')->
-       search_rs({active => 1,
-                 },
-                {result_class => 'DBIx::Class::ResultClass::HashRefInflator'}
-                )->all();
+    my @suites;
+    if (exists $opts->{suites}) {
+       @suites =
+           $s->resultset('Suite')->
+           search_rs({active => 1,
+                      -or => {codename => [make_list($opts->{suites})],
+                              suite_name => [make_list($opts->{suites})],
+                             },
+                     },
+                    {result_class => 'DBIx::Class::ResultClass::HashRefInflator'}
+                    )->all();
+     } else {
+       @suites = 
+           $s->resultset('Suite')->
+           search_rs({active => 1,
+                     },
+                    {result_class => 'DBIx::Class::ResultClass::HashRefInflator'}
+                    )->all();
+    }
     my @bugs;
     my $bugs;
     if ($options->{quick}) {
@@ -222,29 +237,28 @@ sub update_cache {
        # select all bugs which are in packages which have had a binary
        # association modified
        push @bugs,
-           map {$_->{'bug_binpackages.id'}}
+           map {$_->{bug_binpackages}{bug}}
            $s->resultset('BinAssociation')->
            search_rs({'me.modified' => {'>=',$last_query_time},
                      },
-                    {columns => [qw(bug_binpackage.id)],
+                    {columns => [qw(bug_binpackages.bug)],
                      join => {bin =>
-                             {bin_vers =>
                              {bin_pkg =>
-                              'bug_binpackage'
-                             }}},
+                              'bug_binpackages'
+                             }},
                      result_class => 'DBIx::Class::ResultClass::HashRefInflator',
                     },
                     )->all();
        # or a source association modified
        push @bugs,
-           map {$_->{'bug_srcpackages.id'}}
+           map {$_->{bug_srcpackages}{bug}}
            $s->resultset('SrcAssociation')->
            search_rs({'me.modified' => {'>=',$last_query_time},
                      },
-                    {columns => [qw(bug_srcpackage.id)],
+                    {columns => [qw(bug_srcpackages.bug)],
                      join => {source =>
                              {src_pkg =>
-                              'bug_srcpackage'
+                              'bug_srcpackages'
                              }},
                      result_class => 'DBIx::Class::ResultClass::HashRefInflator',
                     },