Jelajahi Sumber

Update InternalApiController

Daniel Supernault 6 tahun lalu
induk
melakukan
fa6c3dd3f6
1 mengubah file dengan 25 tambahan dan 18 penghapusan
  1. 25 18
      app/Http/Controllers/InternalApiController.php

+ 25 - 18
app/Http/Controllers/InternalApiController.php

@@ -125,16 +125,19 @@ class InternalApiController extends Controller
     {
     {
         $profile = Auth::user()->profile;
         $profile = Auth::user()->profile;
         $pid = $profile->id;
         $pid = $profile->id;
-        //$following = Cache::get('feature:discover:following:'.$profile->id, []);
-        $following = Follower::whereProfileId($pid)->pluck('following_id');
-
-        $filtered = UserFilter::whereUserId($pid)
-                    ->whereFilterableType('App\Profile')
-                    ->whereIn('filter_type', ['mute', 'block'])
-                    ->pluck('filterable_id')->toArray();
-        $following = array_merge($following->push($pid)->toArray(), $filtered);
+        $following = Cache::remember('feature:discover:following:'.$pid, 60, function() use ($pid) {
+            return Follower::whereProfileId($pid)->pluck('following_id');
+        });
+        $filters = Cache::remember("user:filter:list:$pid", 60, function() use($pid) {
+            return UserFilter::whereUserId($pid)
+            ->whereFilterableType('App\Profile')
+            ->whereIn('filter_type', ['mute', 'block'])
+            ->pluck('filterable_id')->toArray();
+        });
+        $following = array_merge($following, $filters);
 
 
-        $people = Profile::select('id', 'name', 'username')
+        $people = Cache::remember('feature:discover:people:'.$pid, 15, function() use ($following) {
+            return Profile::select('id', 'name', 'username')
             ->with('avatar')
             ->with('avatar')
             ->inRandomOrder()
             ->inRandomOrder()
             ->whereHas('statuses')
             ->whereHas('statuses')
@@ -143,16 +146,20 @@ class InternalApiController extends Controller
             ->whereIsPrivate(false)
             ->whereIsPrivate(false)
             ->take(3)
             ->take(3)
             ->get();
             ->get();
+        });
 
 
-        $posts = Status::select('id', 'caption', 'profile_id')
-          ->whereHas('media')
-          ->whereIsNsfw(false)
-          ->whereVisibility('public')
-          ->whereNotIn('profile_id', $following)
-          ->withCount(['comments', 'likes'])
-          ->orderBy('created_at', 'desc')
-          ->take(21)
-          ->get();
+        $posts = Cache::remember('feature:discover:posts:'.$pid, 60, function() use ($following) {
+            return Status::select('id', 'caption', 'profile_id')
+              ->whereNull('in_reply_to_id')
+              ->whereNull('reblog_of_id')
+              ->whereIsNsfw(false)
+              ->whereVisibility('public')
+              ->whereNotIn('profile_id', $following)
+              ->withCount(['comments', 'likes'])
+              ->orderBy('created_at', 'desc')
+              ->take(21)
+              ->get();
+          });
 
 
         $res = [
         $res = [
             'people' => $people->map(function($profile) {
             'people' => $people->map(function($profile) {