Changeset 122


Ignore:
Timestamp:
12/13/10 04:53:13 (13 years ago)
Author:
nanardon
Message:
  • add search dependencies functions
File:
1 edited

Legend:

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

    r96 r122  
    333333    my $distrs = $c->forward('distrib_search', [ $searchspec, 1 ]); 
    334334 
    335     my $deprs = $c->model('Base')->resultset('Deps')->search( 
     335    my $deprs = $c->model('Base::Deps')->search( 
    336336        { 
    337337            deptype => $deptype, 
     
    496496    $searchspec ||= {}; 
    497497 
     498    my $distrs = $c->forward('distrib_search', [ $searchspec, 1 ]); 
    498499    my @col = qw(dirname basename md5 size pkgid count); 
    499     my $filers = $c->stash->{rs} = $c->model('Base::Files') 
     500    $c->stash->{rs} = $c->model('Base::Files') 
    500501    ->search( 
    501502        { 
     
    506507                basename => $basename, 
    507508                ($searchspec->{content} ? { has_content => 1 } : ()), 
    508                 pkgid => { 
    509                     IN => $c->forward('distrib_search', 
    510                         [ $searchspec ])->get_column('pkgid')->as_query, 
    511                 }, 
     509                ($distrs  
     510                    ? (pkgid => { IN => $distrs->get_column('pkgid')->as_query, },) 
     511                    : ()), 
    512512            ], 
    513513        }, 
     
    528528} 
    529529 
     530sub dep_search : XMLRPCPath('/search/dep/match') { 
     531    my ($self, $c, $searchspec, $deptype, $depname, $depsense, $depevr) = @_; 
     532 
     533    my $distrs = $c->forward('distrib_search', [ $searchspec, 1 ]); 
     534    $c->stash->{rs} = $c->model('Base::Deps')->search( 
     535        { 
     536            -and => [ 
     537            { deptype => $deptype }, 
     538            { depname => $depname }, 
     539            ($depsense 
     540                ? ({-nest => \[ 
     541                    'rpmdepmatch(flags, evr, rpmsenseflag(?), ?)', 
     542                    [ plain_text => $depsense], 
     543                    [ plain_text => $depevr ] 
     544                ]}) 
     545            : ()), 
     546            ($distrs  
     547                ? ({ pkgid => { IN => $distrs->get_column('pkgid')->as_query, 
     548                        },}) 
     549                : ()), 
     550            (exists($searchspec->{src}) 
     551                ? { pkgid => { IN => $c->model('Base::Rpms')->search( 
     552                            { issrc => $searchspec->{src} ? 1 : 0 } 
     553                        )->get_column('pkgid')->as_query, }, } 
     554                : ()), 
     555            ] 
     556        }, 
     557        { 
     558            'select' => [ 'rpmsenseflag("flags")', qw(depname evr flags pkgid) ], 
     559            'as'     => [ qw(sense name evr flags pkgid) ], 
     560 
     561        } 
     562    ); 
     563 
     564    $c->stash->{column} = [ qw(name sense evr flags pkgid) ]; 
     565    $c->forward('format_search', $searchspec); 
     566} 
     567 
    530568=head1 AUTHOR 
    531569 
Note: See TracChangeset for help on using the changeset viewer.