pixelfed/pixelfed

View on GitHub
app/Jobs/MediaPipeline/MediaSyncLicensePipeline.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace App\Jobs\MediaPipeline;

use App\Media;
use App\User;
use Cache;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
use App\Services\StatusService;

class MediaSyncLicensePipeline implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    protected $userId;
    protected $licenseId;

    public function __construct($userId, $licenseId)
    {
        $this->userId = $userId;
        $this->licenseId = $licenseId;
    }

    public function handle()
    {
        $licenseId = $this->licenseId;

        if(!$licenseId || !$this->userId) {
            return 1;
        }

        Media::whereUserId($this->userId)
            ->chunk(100, function($medias) use($licenseId) {
                foreach($medias as $media) {
                    $media->license = $licenseId;
                    $media->save();
                    Cache::forget('status:transformer:media:attachments:'. $media->status_id);
                    StatusService::del($media->status_id);
                }
        });
    }

}