Update Discover apis

This commit is contained in:
Daniel Supernault 2022-08-23 22:34:22 -06:00
parent a1083511f0
commit 243fcac7d5
No known key found for this signature in database
GPG key ID: 0DEF1C662C9033F7
2 changed files with 22 additions and 16 deletions

View file

@ -123,7 +123,7 @@ class DiscoverController extends Controller
public function trendingApi(Request $request) public function trendingApi(Request $request)
{ {
abort_if(config('instance.discover.public') == false && !Auth::check(), 403); abort_if(config('instance.discover.public') == false && !$request->user(), 403);
$this->validate($request, [ $this->validate($request, [
'range' => 'nullable|string|in:daily,monthly,yearly', 'range' => 'nullable|string|in:daily,monthly,yearly',
@ -179,21 +179,25 @@ class DiscoverController extends Controller
public function trendingHashtags(Request $request) public function trendingHashtags(Request $request)
{ {
$res = StatusHashtag::select('hashtag_id', \DB::raw('count(*) as total')) abort_if(!$request->user(), 403);
->groupBy('hashtag_id')
->orderBy('total','desc') $res = Cache::remember('api:discover:v1.1:trending:hashtags', 3600, function() {
->where('created_at', '>', now()->subDays(90)) return StatusHashtag::select('hashtag_id', \DB::raw('count(*) as total'))
->take(9) ->groupBy('hashtag_id')
->get() ->orderBy('total','desc')
->map(function($h) { ->where('created_at', '>', now()->subDays(90))
$hashtag = $h->hashtag; ->take(9)
return [ ->get()
'id' => $hashtag->id, ->map(function($h) {
'total' => $h->total, $hashtag = $h->hashtag;
'name' => '#'.$hashtag->name, return [
'url' => $hashtag->url('?src=dsh1') 'id' => $hashtag->id,
]; 'total' => $h->total,
}); 'name' => '#'.$hashtag->name,
'url' => $hashtag->url()
];
});
});
return $res; return $res;
} }

View file

@ -112,6 +112,8 @@ Route::group(['prefix' => 'api'], function() use($middleware) {
Route::group(['prefix' => 'discover'], function () use($middleware) { Route::group(['prefix' => 'discover'], function () use($middleware) {
Route::get('accounts/popular', 'Api\ApiV1Controller@discoverAccountsPopular')->middleware($middleware); Route::get('accounts/popular', 'Api\ApiV1Controller@discoverAccountsPopular')->middleware($middleware);
Route::get('posts/trending', 'DiscoverController@trendingApi')->middleware($middleware);
Route::get('posts/hashtags', 'DiscoverController@trendingHashtags')->middleware($middleware);
}); });
}); });