From 881fa86573db503f798b8cbca8031c2fc9d9bc2b Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Sun, 13 Dec 2020 17:28:33 -0700 Subject: [PATCH] Update NotificationTransformer, handle tagged deletes --- app/Jobs/StatusPipeline/StatusDelete.php | 13 +++++++++++++ app/Notification.php | 6 ++++++ app/Transformer/Api/NotificationTransformer.php | 5 +++-- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/app/Jobs/StatusPipeline/StatusDelete.php b/app/Jobs/StatusPipeline/StatusDelete.php index ab42c2d8a..c910d6cd6 100644 --- a/app/Jobs/StatusPipeline/StatusDelete.php +++ b/app/Jobs/StatusPipeline/StatusDelete.php @@ -4,6 +4,7 @@ namespace App\Jobs\StatusPipeline; use DB; use App\{ + MediaTag, Notification, Report, Status, @@ -104,6 +105,18 @@ class StatusDelete implements ShouldQueue Report::whereObjectType('App\Status') ->whereObjectId($status->id) ->delete(); + + MediaTag::where('status_id', $status->id) + ->cursor() + ->each(function($tag) { + Notification::where('item_type', 'App\MediaTag') + ->where('item_id', $tag->id) + ->forceDelete(); + $tag->delete(); + }); + + MediaTag::whereStatusId($status->id) + ->get(); $status->forceDelete(); }); diff --git a/app/Notification.php b/app/Notification.php index ae5cd567f..ebd6f6415 100644 --- a/app/Notification.php +++ b/app/Notification.php @@ -37,4 +37,10 @@ class Notification extends Model { return $this->belongsTo(Status::class, 'item_id', 'id'); } + + public function tag() + { + return $this->hasOne(MediaTag::class, 'item_id', 'id'); + } + } diff --git a/app/Transformer/Api/NotificationTransformer.php b/app/Transformer/Api/NotificationTransformer.php index cc75bfd83..981e5f727 100644 --- a/app/Transformer/Api/NotificationTransformer.php +++ b/app/Transformer/Api/NotificationTransformer.php @@ -6,6 +6,7 @@ use App\{ Notification, Status }; +use App\Services\HashidService; use League\Fractal; class NotificationTransformer extends Fractal\TransformerAbstract @@ -97,8 +98,8 @@ class NotificationTransformer extends Fractal\TransformerAbstract $ml = $n->item; $res = $this->item($ml, function($ml) { return [ - 'username' => $ml->status->profile->username, - 'post_url' => $ml->status->url() + 'username' => $ml->tagged_username, + 'post_url' => '/p/'.HashidService::encode($ml->status_id) ]; }); return $res;