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; }