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
This commit is contained in:
Benjamin Nussbaum 2025-06-01 22:08:37 +02:00
parent 04d089c445
commit c045dc1e85
12 changed files with 425 additions and 0 deletions

View file

@ -0,0 +1,31 @@
<?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();
});
}
}