diff options
author | Kent Fredric <kentfredric@gmail.com> | 2013-02-14 16:39:31 +1300 |
---|---|---|
committer | Kent Fredric <kentfredric@gmail.com> | 2013-02-24 08:08:58 +1300 |
commit | 14fabbfd80d874fedfc7bbd648afc9804e1abc67 (patch) | |
tree | 08b738728312b9e96c12e3607acb72fee2b548e2 /scripts | |
parent | Bump C::V::Email (diff) | |
download | perl-overlay-14fabbfd80d874fedfc7bbd648afc9804e1abc67.tar.gz perl-overlay-14fabbfd80d874fedfc7bbd648afc9804e1abc67.tar.bz2 perl-overlay-14fabbfd80d874fedfc7bbd648afc9804e1abc67.zip |
[scripts] fix metacpan error
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/lib/metacpan.pm | 76 |
1 files changed, 39 insertions, 37 deletions
diff --git a/scripts/lib/metacpan.pm b/scripts/lib/metacpan.pm index 62d0d8d03..3164d29da 100644 --- a/scripts/lib/metacpan.pm +++ b/scripts/lib/metacpan.pm @@ -97,6 +97,25 @@ sub mcpan { # # Essentially returning exactly what CPAN does. # +sub _find_dist_all_apply_nest { + my ( $class, $q, $module, $latest ) = @_; + my $module_rules = + [ { term => { 'module.authorized' => 1 } }, { term => { 'module.indexed' => 1 } }, + { term => { 'module.name' => $module } }, ]; + my $nest = { + path => 'module', + query => { constant_score => { filter => { bool => { must => $module_rules, } } } }, + + #size => 5, + }; + my $must = [ { nested => $nest } ]; + if ($latest) { + unshift @{$must}, { term => { 'status' => 'latest' } }; + } + $q->{query} = { constant_score => { query => { bool => { must => $must } } } }; + +} + sub find_dist_all { my ( $class, $module, $opts ) = @_; @@ -108,46 +127,29 @@ sub find_dist_all { ]; my $q = { - - script_fields => { 'latest' => { script => q{ doc[ 'status' ].value == 'latest' } } }, - sort => [ - ( - $opts->{'sort-latest'} - ? ( - { - '_script' => { - script => q{ doc['status'].value == 'latest' ? 1 : 0 }, - type => 'number', - order => 'desc', - } - } - ) - : () - ), - { 'file.date' => 'desc' }, - ], + sort => [ { 'file.date' => 'desc' }, ], size => 5000, }; - if ( not defined $opts->{method} - or $opts->{method} eq 'nested' ) - { - my $module_rules = [ - { term => { 'module.authorized' => 1 } }, - { term => { 'module.indexed' => 1 } }, - { term => { 'module.name' => $module } }, - ]; - my $nest = { - path => 'module', - query => { constant_score => { filter => { bool => { must => $module_rules, } } } }, - #size => 5, - }; - $q->{query} = { - constant_score => { - query => - { bool => { must => [ ( $opts->{latest} ? { term => { 'status' => 'latest' } } : () ), { nested => $nest }, ], } } + $q->{script_fields} = { 'latest' => { 'metacpan_script' => 'status_is_latest' } }; + + #$q->{script_fields} = { 'latest' => { script => q{ doc[ 'status' ].value == 'latest' } } } + + if ( $opts->{'sort-latest'} ) { + + #$q->{script_fields} = { 'latest' => { script => q{ doc[ 'status' ].value == 'latest' } } }; + unshift @{ $q->{sort} }, + { + '_script' => { + script => q{ doc['status'].value == 'latest' ? 1 : 0 }, + type => 'number', + order => 'desc', } - }; + }; + } + + if ( not defined $opts->{method} or $opts->{method} eq 'nested' ) { + $class->_find_dist_all_apply_nest( $q, $module, $opts->{latest} ); } else { @@ -217,7 +219,7 @@ sub _skip_result { for my $package ( @{ $result->{fields}->{'_source.module'} } ) { return if $package->{name} eq $module - and ( ( not $package->{authorized} ) or ( not $package->{indexed} ) ); + and ( ( not $package->{authorized} ) or ( not $package->{indexed} ) ); } return 1; } |