only(['command', 'status']); $runs = UnifiCronRun::query() ->with('triggeredByUser:id,name,email') ->when($filters['command'] ?? null, fn ($q, $c) => $q->where('command', $c)) ->when($filters['status'] ?? null, fn ($q, $s) => $q->where('status', $s)) ->orderByDesc('started_at') ->limit(200) ->get(); return response()->json([ 'runs' => $runs->map(fn ($r) => [ 'id' => $r->id, 'command' => $r->command, 'triggered_by' => $r->triggered_by, 'triggered_user' => $r->triggeredByUser ? [ 'id' => $r->triggeredByUser->id, 'name' => $r->triggeredByUser->name, 'email' => $r->triggeredByUser->email, ] : null, 'started_at' => $r->started_at?->toIso8601String(), 'finished_at' => $r->finished_at?->toIso8601String(), 'duration_ms' => $r->finished_at && $r->started_at ? (int) $r->finished_at->diffInMilliseconds($r->started_at) : null, 'status' => $r->status, 'details' => $r->details, ])->values(), ]); } }