123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- <?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
- {
- //
- }
- };
|