]> git.donarmstrong.com Git - debbugs.git/blobdiff - Debbugs/Bugs.pm
set field_match to be a state variable
[debbugs.git] / Debbugs / Bugs.pm
index d6fbd3b2b11a34ea019a7fd52ace4ca6eed791c9..93967e2cb2f8b885a022cfa9cfe2e5cf7eb3d89f 100644 (file)
@@ -510,24 +510,24 @@ sub get_bugs_by_db{
         $rs = $rs->search({-or => {map 'bin_package.'}})
      }
      if (exists $param{severity}) {
-         $rs = $rs->search({-or => {map {('severity.severity' => $_)}
-                                   make_list($param{severity})},
+         $rs = $rs->search({'severity.severity' =>
+                           [make_list($param{severity})],
                           },
                           {join => 'severity'},
                           );
      }
      for my $key (qw(owner submitter done)) {
          if (exists $param{$key}) {
-             $rs = $rs->search({-or => {map {("${key}.addr" => $_)}
-                                       make_list($param{$key})},
+             $rs = $rs->search({"${key}.addr" =>
+                               [make_list($param{$key})],
                               },
                               {join => $key},
                               );
          }
      }
      if (exists $param{correspondent}) {
-         $rs = $rs->search({-or => {map {('message_correspondents.addr' => $_)}
-                                   make_list($param{correspondent})},
+         $rs = $rs->search({'message_correspondents.addr' =>
+                           [make_list($param{correspondent})],
                           },
                           {join => {correspondent =>
                                    {bug_messages =>
@@ -535,10 +535,11 @@ sub get_bugs_by_db{
                           );
      }
      if (exists $param{affects}) {
-         $rs = $rs->search({-or => {map {('bin_pkg.pkg' => $_,
-                                         'src_pkg.pkg' => $_,
-                                        )}
-                                   make_list($param{affects}),
+        my @aff_list = make_list($param{affects});
+         $rs = $rs->search({-or => {'bin_pkg.pkg' =>
+                                   [@aff_list],
+                                   'src_pkg.pkg' =>
+                                   [@aff_list],
                                   },
                           },
                           {join => [{bug_affects_binpackages => 'bin_pkg'},
@@ -548,17 +549,18 @@ sub get_bugs_by_db{
                           );
      }
      if (exists $param{package}) {
-         $rs = $rs->search({-or => {map {('bin_pkg.pkg' => $_)}
-                                   make_list($param{package})},
+         $rs = $rs->search({'bin_pkg.pkg' =>
+                           [make_list($param{package})],
                           },
                           {join => {bug_binpackages => 'bin_pkg'}});
      }
      if (exists $param{maintainer}) {
-        $rs = $rs->search({-or => {map {(correspondent => $_ eq '' ? undef : $_,
-                                         correspondent2 => $_ eq '' ? undef : $_,
-                                        )}
-                                   make_list($param{maintainer})
-                                  }
+        my @maint_list =
+            map {$_ eq '' ? undef : $_}
+            make_list($param{maintainer});
+        $rs = $rs->search({-or => {correspondent => [@maint_list],
+                                   correspondent2 => [@maint_list],
+                                  },
                           },
                          {join => {bug_affects_binpackage =>
                                   {bin_pkg =>
@@ -828,7 +830,7 @@ sub __handle_pkg_src_and_maint{
      return grep {$packages{$_} >= $package_keys} keys %packages;
 }
 
-state %field_match = (
+state $field_match = {
     'subject' => \&__contains_field_match,
     'tags' => sub {
         my ($field, $values, $status) = @_; 
@@ -844,14 +846,14 @@ state %field_match = (
     'originator' => \&__contains_field_match,
     'forwarded' => \&__contains_field_match,
     'owner' => \&__contains_field_match,
-);
+};
 
 sub __bug_matches {
     my ($hash, $status) = @_;
     foreach my $key( keys( %$hash ) ) {
         my $value = $hash->{$key};
-       next unless exists $field_match{$key};
-       my $sub = $field_match{$key};
+       next unless exists $field_match->{$key};
+       my $sub = $field_match->{$key};
        if (not defined $sub) {
            die "No defined subroutine for key: $key";
        }