File tree Expand file tree Collapse file tree 6 files changed +29
-70
lines changed Expand file tree Collapse file tree 6 files changed +29
-70
lines changed Original file line number Diff line number Diff line change @@ -80,20 +80,10 @@ sub _cache_key_for_user {
8080
8181sub _add_fav_list_to_stash {
8282 my ( $self , $c , $size ) = @_ ;
83-
8483 my $user = $c -> user;
85-
86- my $faves_cv = $c -> model(' API::Favorite' )-> by_user( $user -> id, $size );
87- my $faves_data = $faves_cv -> recv ;
88- my $faves = [
89- sort { $b -> {date } cmp $a -> {date } }
90- map { $_ -> {fields } } @{ $faves_data -> {hits }{hits } }
91- ];
92-
84+ my $faves = $c -> model(' API::Favorite' )-> by_user( $user -> id, $size );
9385 $c -> stash( { faves => $faves } );
94-
9586 return $user ;
96-
9787}
9888
9989__PACKAGE__ -> meta-> make_immutable;
Original file line number Diff line number Diff line change @@ -54,27 +54,7 @@ sub index : Chained('root') PathPart('') Args(0) {
5454 $c -> detach(' /not_found' ) unless ( $author -> {pauseid } );
5555
5656 my $took = $data -> {took };
57- my $faves = [];
58-
59- if ( $author -> {user } ) {
60- my $faves_data
61- = $c -> model(' API::Favorite' )-> by_user( $author -> {user } )-> recv ;
62- $took += $faves_data -> {took } || 0;
63-
64- my @all_fav = map { $_ -> {fields }-> {distribution } }
65- @{ $faves_data -> {hits }-> {hits } };
66- my $noLatest = $c -> model(' API::Release' )-> no_latest(@all_fav );
67- $took += $noLatest -> {took } || 0;
68-
69- $faves = [
70- map {
71- my $distro = $_ -> {fields }-> {distribution };
72- $noLatest -> {no_latest }-> {$distro } ? () : $_ -> {fields };
73- } @{ $faves_data -> {hits }-> {hits } }
74- ];
75- single_valued_arrayref_to_scalar($faves );
76- $faves = [ sort { $b -> {date } cmp $a -> {date } } @{$faves } ];
77- }
57+ my $faves = $c -> model(' API::Favorite' )-> by_user( $author -> {user } );
7858
7959 my $releases = [ map { $_ -> {fields } } @{ $data -> {hits }-> {hits } } ];
8060 single_valued_arrayref_to_scalar($releases );
Original file line number Diff line number Diff line change @@ -12,17 +12,12 @@ sub recent : Local : Args(0) {
1212 my @faves = map { $_ -> {_source } } @{ $data -> {hits }-> {hits } };
1313 my @user_ids = map { $_ -> {user } } @faves ;
1414
15- my $authors
16- = $c -> model(' API::Author' )-> by_user( \@user_ids )-> recv -> {hits }
17- -> {hits };
18-
19- my %author_for_user_id
20- = map { $_ -> {fields }-> {user } => $_ -> {fields }-> {pauseid } } @{$authors };
15+ my $authors = $c -> model(' API::Author' )-> by_user( \@user_ids );
16+ my %author_for_user_id = map { $_ -> {user } => $_ -> {pauseid } } @{$authors };
2117
2218 foreach my $fave (@faves ) {
23- if ( exists $author_for_user_id { $fave -> {user } } ) {
24- $fave -> {clicked_by_author } = $author_for_user_id { $fave -> {user } };
25- }
19+ next unless exists $author_for_user_id { $fave -> {user } };
20+ $fave -> {clicked_by_author } = $author_for_user_id { $fave -> {user } };
2621 }
2722
2823 $c -> stash(
Original file line number Diff line number Diff line change @@ -120,23 +120,15 @@ sub author : Local : Args(1) {
120120 $c -> detach( ' /not_found' , [] );
121121 }
122122
123- my $faves_cv = $author_info -> {user }
124- && $c -> model(' API::Favorite' )-> by_user( $author_info -> {user } );
125- my $faves_data
126- = $faves_cv
127- ? [
128- map { single_valued_arrayref_to_scalar($_ ) }
129- map { $_ -> {fields } } @{ $faves_cv -> recv -> {hits }{hits } }
130- ]
131- : [];
123+ my $faves = $c -> model(' API::Favorite' )-> by_user( $author_info -> {user } );
132124
133125 $c -> stash-> {feed } = $self -> build_feed(
134126 host => $c -> config-> {web_host },
135127 title => " Recent CPAN activity of $author - MetaCPAN" ,
136128 entries => [
137129 sort { $b -> {date } cmp $a -> {date } }
138130 @{ $self -> _format_release_entries($release_data ) },
139- @{ $self -> _format_favorite_entries( $author , $faves_data ) }
131+ @{ $self -> _format_favorite_entries( $author , $faves ) }
140132 ],
141133 );
142134}
Original file line number Diff line number Diff line change @@ -3,6 +3,8 @@ package MetaCPAN::Web::Model::API::Author;
33use Moose;
44use namespace::autoclean;
55
6+ use Ref::Util qw( is_arrayref ) ;
7+
68extends ' MetaCPAN::Web::Model::API' ;
79
810=head1 NAME
@@ -94,15 +96,20 @@ sub search {
9496
9597sub by_user {
9698 my ( $self , $users ) = @_ ;
97-
98- my $query = return $self -> request(
99- ' /author/_search' ,
100- {
101- query => { terms => { user => $users } },
102- fields => [qw( user pauseid) ],
103- size => 100
104- }
105- );
99+ return [] unless $users ;
100+
101+ my $ret ;
102+ if ( is_arrayref($users ) ) {
103+ return unless @{$users };
104+ $ret = $self -> request( ' /author/by_user' , undef , { user => $users } );
105+ }
106+ else {
107+ $ret = $self -> request(" /author/by_user/$users " );
108+ }
109+ return unless $ret ;
110+
111+ my $data = $ret -> recv ;
112+ return ( exists $data -> {authors } ? $data -> {authors } : [] );
106113}
107114
108115__PACKAGE__ -> meta-> make_immutable;
Original file line number Diff line number Diff line change @@ -77,16 +77,11 @@ sub get {
7777sub by_user {
7878 my ( $self , $user , $size ) = @_ ;
7979 $size ||= 250;
80- return $self -> request(
81- ' /favorite/_search' ,
82- {
83- query => { match_all => {} },
84- filter => { term => { user => $user }, },
85- sort => [' distribution' ],
86- fields => [qw( date author distribution) ],
87- size => $size ,
88- }
89- );
80+ my $ret = $self -> request( " /favorite/by_user/$user " , { size => $size } );
81+ return unless $ret ;
82+ my $data = $ret -> recv ;
83+ return [] unless exists $data -> {favorites };
84+ return $data -> {favorites };
9085}
9186
9287sub recent {
You can’t perform that action at this time.
0 commit comments