Ignore:
Timestamp:
01/26/11 02:29:37 (13 years ago)
Author:
nanardon
Message:
  • optimize in a fester way
Location:
server/trunk/web/lib/Sophie/Controller
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • server/trunk/web/lib/Sophie/Controller/Search.pm

    r350 r351  
    191191    my ($self, $c, $searchspec, $deptype, $depname, $depsense, $depevr ) = @_; 
    192192 
    193         $c->model('BaseSearch')->best_rpm_filter($searchspec) 
    194         ->search({}, { select => [], join => [ 'Deps' ]})->search( 
     193        my $rs = $c->model('Base::Deps')->search( 
    195194        { 
    196195            -and => [ 
     
    199198            ($depsense 
    200199                ? ({-nest => \[ 
    201                     'rpmdepmatch(Deps.flags, Deps.evr, rpmsenseflag(?), ?)', 
     200                    'rpmdepmatch(flags, me.evr, rpmsenseflag(?), ?)', 
    202201                    [ plain_text => $depsense], 
    203202                    [ plain_text => $depevr ] 
     
    205204            : ()), 
    206205            ($searchspec->{pkgid} 
    207                 ? { 'Deps.pkgid' => $searchspec->{pkgid} } 
     206                ? { 'pkgid' => $searchspec->{pkgid} } 
    208207                : ()), 
    209208            ] 
    210209        }, 
    211210        { 
    212             '+select' => [ { rpmsenseflag => 'Deps.flags' }, 'Deps.depname', 
    213                 'Deps.evr' ], 
     211            '+select' => [ { rpmsenseflag => 'flags' }, 'depname', 
     212                'me.evr' ], 
    214213            '+as'     => [ qw(sense name evr) ], 
    215214 
    216215        } 
    217216    ); 
     217    if (exists($searchspec->{src})) { 
     218        $rs = $rs->search_related('Rpms', 
     219            { issrc => $searchspec->{src} ? 1 : 0 } 
     220        ) 
     221    } 
     222    return $c->model('BaseSearch')->apply_rpm_filter($rs, $searchspec); 
    218223} 
    219224 
     
    231236    $searchspec ||= {}; 
    232237 
    233     $c->model('BaseSearch')->best_rpm_filter($searchspec) 
    234         ->search({}, { select => [], join => [ 'Files' ]})->search( 
     238    my $rs = $c->model('Base::Files')->search( 
    235239        { 
    236240            -and => [ 
     
    242246                ($searchspec->{content} ? { has_content => 1 } : ()), 
    243247                ($searchspec->{pkgid} 
    244                     ? { 'Files.pkgid' => { IN => $searchspec->{pkgid} } } 
     248                    ? { 'pkgid' => { IN => $searchspec->{pkgid} } } 
    245249                    : ()), 
    246250            ], 
     
    248252        { 
    249253            '+select' => [ 
    250                 'Files.contents is NOT NULL as has_content', 
     254                'contents is NOT NULL as has_content', 
    251255                { rpmfilesmode => 'mode' }, 
    252                 map { 'Files.' . $_ } $c->model('Base::Files')->result_source->columns, 
    253256            ], 
    254             '+as' => [ qw(has_content perm), 
    255                 $c->model('Base::Files')->result_source->columns ], 
    256         } 
    257     ); 
     257            '+as' => [ qw(has_content perm), ] 
     258        } 
     259    ); 
     260    if (exists($searchspec->{src})) { 
     261        $rs = $rs->search_related('Rpms', 
     262            { issrc => $searchspec->{src} ? 1 : 0 } 
     263        ) 
     264    } 
     265    return $c->model('BaseSearch')->apply_rpm_filter($rs, $searchspec); 
    258266} 
    259267 
  • server/trunk/web/lib/Sophie/Controller/Search/Rpm.pm

    r350 r351  
    104104            $depsense, $depevr  
    105105        ], 
    106     )->get_column('Deps.pkgid'); 
     106    )->get_column('me.pkgid'); 
    107107    $c->stash->{rs} = $c->model('Base::Rpms')->search( 
    108108        { 
     
    135135 
    136136    my $filers = $c->forward('/search/file_rs', [ $searchspec, $file ]) 
    137         ->get_column('Files.pkgid'); 
     137        ->get_column('me.pkgid'); 
    138138    $c->stash->{rs} = $c->model('Base::Rpms')->search( 
    139139        { 
Note: See TracChangeset for help on using the changeset viewer.