]> git.donarmstrong.com Git - debbugs.git/blobdiff - Debbugs/Bugs.pm
allow specifying the dist in source_to_binary (for DB actions)
[debbugs.git] / Debbugs / Bugs.pm
index 3209e5250091341fb532ec2a98947570e0012f41..60217124dd067cb8b547731e6f14aeb234c0edd0 100644 (file)
@@ -506,10 +506,7 @@ sub get_bugs_by_db{
      my $s = $param{schema};
      my $keys = grep {$_ !~ $_non_search_key_regex} keys(%param);
      die "Need at least 1 key to search by" unless $keys;
-     my $rs = $param{schema}->resultset('Bug');
-     if (exists $param{package}) {
-        $rs = $rs->search({-or => {map 'bin_package.'}})
-     }
+     my $rs = $s->resultset('Bug');
      if (exists $param{severity}) {
          $rs = $rs->search({'severity.severity' =>
                            [make_list($param{severity})],
@@ -527,12 +524,21 @@ sub get_bugs_by_db{
          }
      }
      if (exists $param{correspondent}) {
-         $rs = $rs->search({'message_correspondents.addr' =>
-                           [make_list($param{correspondent})],
+        my $message_rs =
+            $s->resultset('Message')->
+            search({'correspondent.addr' =>
+                    [make_list($param{correspondent})],
+                   },
+                  {join => {message_correspondents => 'correspondent'},
+                   columns => ['id'],
+                   group_by => ['me.id'],
+                  },
+                  );
+         $rs = $rs->search({'bug_messages.message' =>
+                          {-in => $message_rs->get_column('id')->as_query()},
                           },
-                          {join => {correspondent =>
-                                   {bug_messages =>
-                                   {message => 'message_correspondents'}}}},
+                          {join => 'bug_messages',
+                         },
                           );
      }
      if (exists $param{affects}) {
@@ -552,8 +558,10 @@ sub get_bugs_by_db{
                           );
      }
      if (exists $param{package}) {
-         $rs = $rs->search({'bin_pkg.pkg' =>
-                           [make_list($param{package})],
+         $rs = $rs->search({-or => {'bin_pkg.pkg' =>
+                                   [make_list($param{package})],
+                                   'me.unknown.package' =>
+                                   [make_list($param{package})]},
                           },
                           {join => {bug_binpackages => 'bin_pkg'}});
      }