Skip to content

Commit

Permalink
use new /favorite/agg_dists_user API endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
mickeyn committed Nov 26, 2016
1 parent 03a7125 commit 3ad5aaa
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 0 deletions.
67 changes: 67 additions & 0 deletions lib/MetaCPAN/Document/Favorite.pm
Expand Up @@ -104,5 +104,72 @@ sub recent {
);
}

sub agg_dists_user {
my ( $self, $req ) = @_;
my $user = $req->read_param('user');
my @distributions = $req->read_param('distribution');
return unless @distributions;

my $query = {
filtered => {
query => { match_all => {} },
filter => {
or => [
map { { term => { 'distribution' => $_ } } }
@distributions
]
}
}
};

my $aggs = {
favorites => {
terms => {
field => 'distribution',
size => scalar @distributions,
},
}
};

if ($user) {
$aggs->{'myfavorites'} = {
filter => { term => { 'user' => $user } },
aggregations => {
enteries => {
terms => { field => 'distribution' }
}
}
};
}

my $data = $self->es->search(
index => $self->index->name,
type => 'favorite',
body => {
query => $query,
aggs => $aggs,
size => 0,
}
);

my $favorites = { map { $_->{key} => $_->{doc_count} }
@{ $data->{aggregations}->{favorites}->{buckets} } };

my $myfavorites = {};
if ($user) {
$myfavorites = {
map { $_->{key} => $_->{doc_count} } @{
$data->{aggregations}->{myfavorites}->{entries}->{buckets}
}
};
}

return +{
took => $data->{took},
favorites => $favorites,
myfavorites => $myfavorites,
};
}

__PACKAGE__->meta->make_immutable;
1;
8 changes: 8 additions & 0 deletions lib/MetaCPAN/Server/Controller/Favorite.pm
Expand Up @@ -69,5 +69,13 @@ sub recent : Path('recent') : Args(0) {
$c->stash($data);
}

# endpoint: /favorite/agg_dists_user
# optional: [&fields=<field>][&sort=<sort_key>][&size=N][&page=N]
sub agg_dists_user : Path('agg_dists_user') : Args(0) {
my ( $self, $c ) = @_;
my $data = $self->model($c)->raw->agg_dists_user( $c->req );
$c->stash($data);
}

__PACKAGE__->meta->make_immutable;
1;

0 comments on commit 3ad5aaa

Please sign in to comment.