byos_laravel/app/Jobs/CleanupDeviceLogsJob.php
Benjamin Nussbaum 4102d33336 chore: run pint
2025-06-03 18:18:25 +02:00

30 lines
763 B
PHP

<?php
namespace App\Jobs;
use App\Models\Device;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Queue\SerializesModels;
class CleanupDeviceLogsJob implements ShouldQueue
{
use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
/**
* Execute the job.
*/
public function handle(): void
{
Device::each(function ($device) {
$keepIds = $device->logs()->latest('device_timestamp')->take(50)->pluck('id');
// Delete all other logs for this device
$device->logs()
->whereNotIn('id', $keepIds)
->delete();
});
}
}