pid . ':d-' . $this->domain; } /** * Get the middleware the job should pass through. * * @return array */ public function middleware(): array { return [(new WithoutOverlapping("notify:v1:purge-by-domain:{$this->pid}:d-{$this->domain}"))->shared()->dontRelease()]; } /** * Create a new job instance. */ public function __construct($pid, $domain) { $this->pid = $pid; $this->domain = $domain; } /** * Execute the job. */ public function handle(): void { if ($this->batch()->cancelled()) { return; } $pid = $this->pid; $domain = $this->domain; $query = 'SELECT notifications.* FROM profiles JOIN notifications on profiles.id = notifications.actor_id WHERE notifications.profile_id = ? AND profiles.domain = ?'; $params = [$pid, $domain]; foreach(DB::cursor($query, $params) as $n) { if(!$n || !$n->id) { continue; } Notification::where('id', $n->id)->delete(); NotificationService::del($pid, $n->id); } } }