Update FeedFollowPipeline, use more efficient query

This commit is contained in:
Daniel Supernault 2023-11-12 23:00:33 -07:00
parent 115a9d2dec
commit 43443503a1
No known key found for this signature in database
GPG key ID: 23740873EE6F76A1
2 changed files with 9 additions and 2 deletions

View file

@ -12,6 +12,7 @@ use Illuminate\Queue\Middleware\WithoutOverlapping;
use Illuminate\Contracts\Queue\ShouldBeUniqueUntilProcessing; use Illuminate\Contracts\Queue\ShouldBeUniqueUntilProcessing;
use App\Services\AccountService; use App\Services\AccountService;
use App\Services\HomeTimelineService; use App\Services\HomeTimelineService;
use App\Services\SnowflakeService;
use App\Status; use App\Status;
class FeedFollowPipeline implements ShouldQueue, ShouldBeUniqueUntilProcessing class FeedFollowPipeline implements ShouldQueue, ShouldBeUniqueUntilProcessing
@ -68,7 +69,10 @@ class FeedFollowPipeline implements ShouldQueue, ShouldBeUniqueUntilProcessing
$actorId = $this->actorId; $actorId = $this->actorId;
$followingId = $this->followingId; $followingId = $this->followingId;
$ids = Status::where('profile_id', $followingId) $minId = SnowflakeService::byDate(now()->subMonths(6));
$ids = Status::where('id', '>', $minId)
->where('profile_id', $followingId)
->whereNull(['in_reply_to_id', 'reblog_of_id']) ->whereNull(['in_reply_to_id', 'reblog_of_id'])
->whereIn('type', ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album']) ->whereIn('type', ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album'])
->whereIn('visibility',['public', 'unlisted', 'private']) ->whereIn('visibility',['public', 'unlisted', 'private'])

View file

@ -73,7 +73,10 @@ class HomeTimelineService
return $following->push($id)->toArray(); return $following->push($id)->toArray();
}); });
$ids = Status::whereIn('profile_id', $following) $minId = SnowflakeService::byDate(now()->subMonths(6));
$ids = Status::where('id', '>', $minId)
->whereIn('profile_id', $following)
->whereNull(['in_reply_to_id', 'reblog_of_id']) ->whereNull(['in_reply_to_id', 'reblog_of_id'])
->whereIn('type', ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album']) ->whereIn('type', ['photo', 'photo:album', 'video', 'video:album', 'photo:video:album'])
->whereIn('visibility',['public', 'unlisted', 'private']) ->whereIn('visibility',['public', 'unlisted', 'private'])