From f5f361a3493bf8e7fffd6eacf27dc7d22f759c93 Mon Sep 17 00:00:00 2001 From: Gilles Soulier Date: Fri, 5 Jun 2026 04:10:56 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20ORDER=20BY=20sur=20getLatestSnapshot=20+?= =?UTF-8?q?=20lisibilit=C3=A9=20condition=20EXIT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Suite revue batch D. Co-Authored-By: Claude Opus 4.8 --- server/services/execute.ts | 2 +- server/services/refresh.ts | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/server/services/execute.ts b/server/services/execute.ts index 19f6fce..a1a3888 100644 --- a/server/services/execute.ts +++ b/server/services/execute.ts @@ -43,7 +43,7 @@ export async function runAction(machineId: string, action: ActionType): Promise< outputHub.publish(machineId, c); }); raw = res.stdout; - if (/===SU:EXIT=(\d+)===/.exec(raw)?.[1] && /===SU:EXIT=0===/.test(raw) === false) { + if (/===SU:EXIT=\d+===/.test(raw) && !/===SU:EXIT=0===/.test(raw)) { status = "error"; } } catch (err) { diff --git a/server/services/refresh.ts b/server/services/refresh.ts index e28e551..b1126aa 100644 --- a/server/services/refresh.ts +++ b/server/services/refresh.ts @@ -1,6 +1,6 @@ // server/services/refresh.ts import { randomUUID } from "node:crypto"; -import { eq } from "drizzle-orm"; +import { eq, desc } from "drizzle-orm"; import { db, schema } from "../db/client.js"; import { getMachineRow, getCreds } from "./machines.js"; import { renderTemplate } from "../templates/render.js"; @@ -71,6 +71,11 @@ export async function refreshMachine(machineId: string): Promise } export function getLatestSnapshot(machineId: string): UpdateSnapshot | null { - const row = db.select().from(schema.snapshots).where(eq(schema.snapshots.machineId, machineId)).all().at(-1); + const row = db + .select() + .from(schema.snapshots) + .where(eq(schema.snapshots.machineId, machineId)) + .orderBy(desc(schema.snapshots.checkedAt)) + .get(); return row ? (JSON.parse(row.payloadJson) as UpdateSnapshot) : null; }