X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=bin%2Fdebbugs-updatesqlcache;h=9422adfdab945a71e972b3033303a0f9941b99d8;hb=refs%2Fheads%2Fmaster;hp=0c00c590f1d456705e700e33c13c1a46f75e382c;hpb=e78ac0ab15da5fb8538da0992feba8814b76d0b2;p=debbugs.git diff --git a/bin/debbugs-updatesqlcache b/bin/debbugs-updatesqlcache index 0c00c59..9422adf 100755 --- a/bin/debbugs-updatesqlcache +++ b/bin/debbugs-updatesqlcache @@ -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', },