]> git.donarmstrong.com Git - debbugs.git/blobdiff - Debbugs/Package.pm
add _mergedwith_array for speed when filtering
[debbugs.git] / Debbugs / Package.pm
index 06d711862ac6bbaa05e5b2c1d02896541696008f..71a261937184d0083a0ffbc6748458404e013cd9 100644 (file)
@@ -262,7 +262,6 @@ sub _get_valid_version_info_from_db {
                        qw(bin_ver bin_pkg arch maintainer),
                       ],
                result_class => 'DBIx::Class::ResultClass::HashRefInflator',
-               order_by => {-desc => 'me.ver'}
               },
               );
     add_result_to_package($packages,$src_rs,
@@ -271,26 +270,58 @@ sub _get_valid_version_info_from_db {
                           \%src_packages,
                           \%bin_packages,
                          );
-    my $bin_rs = $s->resultset('BinVer')->
-       search({-or => [-and => {'bin_pkg.pkg' => [keys %bin_packages],
-                                 -or => {'suite.codename' => $common_dists,
-                                         'suite.suite_name' => $common_dists,
-                                        },
+    my $bin_assoc_rs =
+        $s->resultset('BinAssociation')->
+        search({-and => {'bin_pkg.pkg' => [keys %bin_packages],
+                         -or => {'suite.codename' => $common_dists,
+                                 'suite.suite_name' => $common_dists,
                                 },
-                        @bin_ver_search,
+                        }},
+               {join => [{'bin' =>
+                         [{'src_ver' => ['src_pkg',
+                                        'maintainer',
+                                       ]},
+                          'bin_pkg',
+                          'arch']},
+                         'suite',
+                      ],
+              'select' => [qw(src_pkg.pkg),
+                           qw(suite.codename),
+                           qw(suite.suite_name),
+                           qw(me.modified),
+                            qw(src_ver.ver),
+                           q(CONCAT(src_pkg.pkg,'/',src_ver.ver)),
+                           qw(bin.ver bin_pkg.pkg arch.arch),
+                           qw(maintainer.name),
+                           ],
+               'as' => [qw(src_pkg codename suite_name),
+                       qw(modified_time src_ver src_pkg_ver),
+                       qw(bin_ver bin_pkg arch maintainer),
+                      ],
+               result_class => 'DBIx::Class::ResultClass::HashRefInflator',
+              },
+              );
+    add_result_to_package($packages,$bin_assoc_rs,
+                          \%src_ver_packages,
+                          \%bin_ver_packages,
+                          \%src_packages,
+                          \%bin_packages,
+                         );
+    my $bin_rs = $s->resultset('BinVer')->
+        search({-or => [@bin_ver_search,
                        ],
                },
-              {join => ['bin_pkg',
-                      {'src_ver' => [{'src_associations' => 'suite'},
-                                     'src_pkg',
-                                     'maintainer',
-                                    ]},
-                       'arch',
-                       ],
-               'select' => [qw(src_pkg.pkg),
+             {join => ['bin_pkg',
+                      {'bin_associations' => 'suite'},
+                      {'src_ver' => ['src_pkg',
+                                     'maintainer',
+                                    ]},
+                       'arch',
+                      ],
+              'select' => [qw(src_pkg.pkg),
                            qw(suite.codename),
                            qw(suite.suite_name),
-                           qw(src_associations.modified),
+                           qw(bin_associations.modified),
                             qw(src_ver.ver),
                            q(CONCAT(src_pkg.pkg,'/',src_ver.ver)),
                            qw(me.ver bin_pkg.pkg arch.arch),
@@ -301,7 +332,6 @@ sub _get_valid_version_info_from_db {
                        qw(bin_ver bin_pkg arch maintainer),
                       ],
                result_class => 'DBIx::Class::ResultClass::HashRefInflator',
-               order_by => {-desc => 'me.ver'}
               },
               );
     add_result_to_package($packages,$bin_rs,
@@ -548,7 +578,7 @@ sub _create_version {
                    new(package => $self,
                        version => $v,
                        package_collection => $self->package_collection,
-                        $self->has_schema?(schema => $self->schema):(),
+                        $self->schema_argument,
                       );
        }
     } else {
@@ -559,7 +589,7 @@ sub _create_version {
                    new(package => $self,
                        version => $v,
                        package_collection => $self->package_collection,
-                        $self->has_schema?(schema => $self->schema):(),
+                        $self->schema_argument,
                       );
        }
     }
@@ -575,9 +605,16 @@ has 'package_collection' => (is => 'ro',
 
 sub _build_package_collection {
     my $self = shift;
-    return Debbugs::Collection::Package->new($self->has_schema?(schema => $self->schema):());
+    return Debbugs::Collection::Package->new($self->schema_argument)
+}
+
+sub CARP_TRACE {
+    my $self = shift;
+    return 'Debbugs::Package={package='.$self->qualified_name.'}';
 }
 
+__PACKAGE__->meta->make_immutable;
+no Mouse;
 
 1;