where(function ($query): void { $query->where('expires_at', '<', now()) ->orWhereRaw('max_downloads IS NOT NULL AND download_count >= max_downloads'); }) ->get(); $count = $expiredShares->count(); foreach ($expiredShares as $share) { $shareService->deleteShare($share); } $this->info("Cleaned up {$count} expired share(s)."); return self::SUCCESS; } }