ソースを参照

Update HashtagController, improve trending hashtag endpoint

Daniel Supernault 2 年 前
コミット
4873c7dd4b
1 ファイル変更16 行追加6 行削除
  1. 16 6
      app/Http/Controllers/DiscoverController.php

+ 16 - 6
app/Http/Controllers/DiscoverController.php

@@ -181,22 +181,32 @@ class DiscoverController extends Controller
 	{
 		abort_if(!$request->user(), 403);
 
-		$res = Cache::remember('api:discover:v1.1:trending:hashtags', 3600, function() {
+		$res = Cache::remember('api:discover:v1.1:trending:hashtags', 43200, function() {
+			$minId = StatusHashtag::where('created_at', '>', now()->subDays(14))->first();
+			if(!$minId) {
+				return [];
+			}
 			return StatusHashtag::select('hashtag_id', \DB::raw('count(*) as total'))
+				->where('id', '>', $minId->id)
 				->groupBy('hashtag_id')
 				->orderBy('total','desc')
-				->where('created_at', '>', now()->subDays(90))
-				->take(9)
+				->take(20)
 				->get()
 				->map(function($h) {
-					$hashtag = $h->hashtag;
+					$hashtag = Hashtag::find($h->hashtag_id);
+					if(!$hashtag) {
+						return;
+					}
 					return [
-						'id' => $hashtag->id,
+						'id' => $h->hashtag_id,
 						'total' => $h->total,
 						'name' => '#'.$hashtag->name,
+						'hashtag' => $hashtag->name,
 						'url' => $hashtag->url()
 					];
-				});
+				})
+				->filter()
+				->values();
 		});
 		return $res;
 	}