Changeset 143


Ignore:
Timestamp:
12/19/10 13:25:57 (13 years ago)
Author:
nanardon
Message:
  • add search/{binaries,sources}()
File:
1 edited

Legend:

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

    r135 r143  
    566566} 
    567567 
     568sub sources : XMLRPCPath('/search/rpm/sources') { 
     569    my ( $self, $c, $searchspec, $pkgid ) = @_; 
     570 
     571    my $distrs = $c->forward('distrib_search', [ $searchspec, 1 ]); 
     572    my $sourcerpm = $c->forward('/rpms/queryformat', [ $pkgid, '%{SOURCERPM}' ]); 
     573    my $nosourcerpm = $sourcerpm; 
     574    $nosourcerpm =~ s/\.src.rpm$/\.nosrc.rpm/; 
     575 
     576    $c->stash->{xmlrpc} = [ $c->model('Base::Rpms')->search( 
     577        { 
     578            -and => [ 
     579                { pkgid => { 
     580                    IN => $c->model('Base::RpmFile')->search( 
     581                        { filename => [ $sourcerpm, $nosourcerpm ] } 
     582                    )->get_column('pkgid')->as_query 
     583                }, }, 
     584                ($distrs  
     585                    ? ({ pkgid => { IN => $distrs->get_column('pkgid')->as_query, }, },) 
     586                    : ()), 
     587            ], 
     588        } 
     589    )->get_column('pkgid')->all ]; 
     590} 
     591 
     592sub binaries : XMLRPCPath('/search/rpm/binaries') { 
     593    my ( $self, $c, $searchspec, $pkgid ) = @_; 
     594 
     595    my $distrs = $c->forward('distrib_search', [ $searchspec, 1 ]); 
     596    my $sourcerpm = $c->forward('/rpms/queryformat', [ $pkgid, 
     597            '%{NAME}-%{VERSION}-%{RELEASE}.src.rpm' ]); 
     598    my $nosourcerpm = $sourcerpm; 
     599    $nosourcerpm =~ s/\.src.rpm$/\.nosrc.rpm/; 
     600 
     601    my $tagrs = $c->model('Base')->resultset('Tags') 
     602        ->search({ tagname => 'sourcerpm', value => [ $sourcerpm, $nosourcerpm ] }) 
     603        ->get_column('pkgid'); 
     604    $c->stash->{xmlrpc} = [ $c->model('Base::Rpms')->search( 
     605        { 
     606            -and => [ 
     607                { issrc => 0 }, 
     608                { pkgid => 
     609                    { IN => $tagrs->as_query, }, 
     610                }, 
     611                ($distrs  
     612                    ? ({ pkgid => { IN => $distrs->get_column('pkgid')->as_query, }, }) 
     613                    : ()), 
     614            ] 
     615        }, 
     616        { 
     617            order_by => [ qw(arch name), 'evr using >>' ], 
     618        }, 
     619    )->get_column('pkgid')->all ]; 
     620 
     621} 
     622 
    568623sub file_search : XMLRPCPath('/search/file/byname') { 
    569624    my ( $self, $c, $searchspec, $file) = @_; 
Note: See TracChangeset for help on using the changeset viewer.