|
@@ -0,0 +1,81 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+use Illuminate\Database\Migrations\Migration;
|
|
|
+use Illuminate\Database\Schema\Blueprint;
|
|
|
+use Illuminate\Support\Facades\Schema;
|
|
|
+use App\Follower;
|
|
|
+use App\Notification;
|
|
|
+use App\Profile;
|
|
|
+use App\UserFilter;
|
|
|
+use App\Services\AccountService;
|
|
|
+use App\Services\FollowerService;
|
|
|
+use App\Services\NotificationService;
|
|
|
+use App\Services\RelationshipService;
|
|
|
+use App\Services\UserFilterService;
|
|
|
+
|
|
|
+return new class extends Migration
|
|
|
+{
|
|
|
+ /**
|
|
|
+ * Run the migrations.
|
|
|
+ */
|
|
|
+ public function up(): void
|
|
|
+ {
|
|
|
+ UserFilter::whereFilterType('block')
|
|
|
+ ->whereFilterableType('App\Profile')
|
|
|
+ ->chunk(10, function($filters) {
|
|
|
+ foreach($filters as $filter) {
|
|
|
+ $actor = Profile::whereNull('status')->find($filter->user_id);
|
|
|
+ if(!$actor) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ $target = Profile::whereNull('status')->find($filter->filterable_id);
|
|
|
+ if(!$target) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ $followed = Follower::whereProfileId($target->id)->whereFollowingId($actor->id)->first();
|
|
|
+ if($followed) {
|
|
|
+ $followed->delete();
|
|
|
+ $target->following_count = Follower::whereProfileId($target->id)->count();
|
|
|
+ $target->save();
|
|
|
+ $actor->followers_count = Follower::whereFollowingId($actor->id)->count();
|
|
|
+ $actor->save();
|
|
|
+ FollowerService::remove($target->id, $actor->id);
|
|
|
+ AccountService::del($actor->id);
|
|
|
+ AccountService::del($target->id);
|
|
|
+ }
|
|
|
+
|
|
|
+ $following = Follower::whereProfileId($actor->id)->whereFollowingId($target->id)->first();
|
|
|
+ if($following) {
|
|
|
+ $following->delete();
|
|
|
+ $actor->followers_count = Follower::whereFollowingId($target->id)->count();
|
|
|
+ $actor->save();
|
|
|
+ $target->following_count = Follower::whereProfileId($actor->id)->count();
|
|
|
+ $target->save();
|
|
|
+ FollowerService::remove($actor->id, $target->id);
|
|
|
+ AccountService::del($actor->id);
|
|
|
+ AccountService::del($target->id);
|
|
|
+ }
|
|
|
+
|
|
|
+ Notification::whereProfileId($actor->id)
|
|
|
+ ->whereActorId($target->id)
|
|
|
+ ->get()
|
|
|
+ ->map(function($n) use($actor) {
|
|
|
+ NotificationService::del($actor->id, $n['id']);
|
|
|
+ $n->forceDelete();
|
|
|
+ });
|
|
|
+
|
|
|
+ UserFilterService::block($actor->id, $target->id);
|
|
|
+ RelationshipService::refresh($actor->id, $target->id);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Reverse the migrations.
|
|
|
+ */
|
|
|
+ public function down(): void
|
|
|
+ {
|
|
|
+ //
|
|
|
+ }
|
|
|
+};
|