Ignore:
Timestamp:
11/28/10 23:53:32 (14 years ago)
Author:
nanardon
Message:
  • make all test pass
  • make search more accessible
File:
1 edited

Legend:

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

    r44 r45  
    3232    if ($c->req->param('search')) { 
    3333        $c->session->{search} = $c->req->param('search'); 
    34         $c->forward('fuzzy', [ undef, $c->req->param('search') ]); 
     34        $c->forward('quick', [ undef, split(/\s/, $c->req->param('search')) ]); 
    3535        my $pager = $c->stash->{rs}->pager; 
    3636        $c->stash->{pager} = $pager; 
     
    3939        ]; 
    4040    } 
     41} 
     42 
     43sub adv :Local { 
     44    my ($self, $c) = @_; 
    4145} 
    4246 
     
    5054    if (!$c->req->xmlrpc->method) { 
    5155        $r->{page} = $c->req->param('page') || 1; 
    52         $r->{rows} = 25; 
     56        $r->{rows} = 20; 
    5357    } 
    5458    return $r; 
     
    7781                    : () 
    7882            } 
    79         )->search_related('Medias') 
    80         ->search_related('MediasPaths') 
     83        )->search_related('Medias', 
     84            { 
     85                ($searchspec->{media} ? (label => $searchspec->{media}) : ()), 
     86                ($searchspec->{media_group} 
     87                    ? (group_label => $searchspec->{media_group})  
     88                    : ()), 
     89            } 
     90        )->search_related('MediasPaths') 
    8191        ->search_related('Paths') 
    8292        ->search_related('Rpmfiles'); 
     
    214224} 
    215225 
     226sub quick : XMLRPCPath('/search/rpm/quick') { 
     227    my ($self, $c, $searchspec, @keywords) = @_; 
     228    my $tsquery = join(' & ', map { $_ =~ s/ /\\ /g; $_ } @keywords); 
     229    $c->stash->{rs} = $c->model('Base')->resultset('Rpms')->search( 
     230            { 
     231                -or => [ 
     232                    { -nest => \[ 
     233                        "to_tsvector('english', description) @@ to_tsquery(?)", 
     234                        [ plain_text => $tsquery], 
     235                    ], }, 
     236                    { 
     237                    name => [ @keywords ], 
     238                    }, 
     239                ], 
     240            (exists($searchspec->{src}) 
     241                ? (issrc => $searchspec->{src} ? 1 : 0) 
     242                : ()), 
     243            pkgid => 
     244            { IN => $c->forward('distrib_search', [ $searchspec 
     245                    ])->get_column('pkgid')->as_query, },  
     246 
     247 
     248        }, 
     249        { 
     250            %{$c->forward('search_param')}, 
     251        }, 
     252    ); 
     253    if ($c->req->xmlrpc->method) { 
     254        $c->stash->{xmlrpc} = [  
     255            $c->stash->{rs}->get_column('pkgid')->all 
     256        ]; 
     257    } 
     258} 
     259 
    216260sub description : XMLRPCPath('/search/rpm/description') { 
    217261    my ($self, $c, $searchspec, @keywords) = @_; 
    218262    my $tsquery = join(' & ', map { $_ =~ s/ /\\ /g; $_ } @keywords); 
    219     $c->stash->{xmlrpc} = [ map { $_->get_column('pkgid') } $c->model('Base')->resultset('Rpms')->search( 
     263    $c->stash->{rs} = $c->model('Base')->resultset('Rpms')->search( 
    220264        { 
    221265            -nest => \[ 
     
    241285            order_by => [ 'rank desc', 'name', 'evr using >>', 'issrc' ], 
    242286        }, 
    243     )->all ] 
    244  
     287    ); 
     288    if ($c->req->xmlrpc->method) { 
     289        $c->stash->{xmlrpc} = [  
     290            $c->stash->{rs}->get_column('pkgid')->all 
     291        ]; 
     292    } 
    245293} 
    246294 
Note: See TracChangeset for help on using the changeset viewer.