status = $status; } /** * Execute the job. * * @return void */ public function handle() { $status = $this->status; // Verify status exists if (! $status) { Log::info('DeleteRemoteStatusPipeline: Status no longer exists, skipping job'); return; } // Verify status has a profile if (! $status->profile_id) { Log::info("DeleteRemoteStatusPipeline: Status {$status->id} has no profile_id, skipping job"); return; } try { AccountStatService::decrementPostCount($status->profile_id); NetworkTimelineService::del($status->id); StatusService::del($status->id, true); Bookmark::whereStatusId($status->id)->delete(); Notification::whereItemType('App\Status') ->whereItemId($status->id) ->forceDelete(); DirectMessage::whereStatusId($status->id)->delete(); Like::whereStatusId($status->id)->forceDelete(); MediaTag::whereStatusId($status->id)->delete(); Media::whereStatusId($status->id) ->get() ->each(function ($media) { MediaDeletePipeline::dispatch($media)->onQueue('mmo'); }); Mention::whereStatusId($status->id)->forceDelete(); Report::whereObjectType('App\Status')->whereObjectId($status->id)->delete(); StatusHashtag::whereStatusId($status->id)->delete(); StatusView::whereStatusId($status->id)->delete(); Status::whereReblogOfId($status->id)->forceDelete(); $status->forceDelete(); } catch (\Exception $e) { Log::warning("DeleteRemoteStatusPipeline: Failed to delete status {$status->id}: ".$e->getMessage()); throw $e; } return 1; } }