byos_laravel/app/Jobs/CleanupDeviceLogsJob.php
Benjamin Nussbaum c045dc1e85 feat: inspect device logs
feat: create DeviceLog model on log request

feat: implement logs route, logs view

feat: implement details on device log

timezone, latest 50 log items

sort by latest device timestamp

cleanup job

add tests
2025-06-03 13:55:04 +02:00

31 lines
798 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;
use Illuminate\Support\Facades\DB;
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();
});
}
}