From b4840318d554ccdd95281172ab451f7ac7f1e7bd Mon Sep 17 00:00:00 2001 From: charlesgauthereau Date: Fri, 9 Jan 2026 19:15:27 +0100 Subject: [PATCH] fix: database page Backup button and route api. --- .../[projectId]/database/[databaseId]/page.tsx | 2 +- app/api/agent/[agentId]/status/helpers.ts | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/app/(customer)/dashboard/(organization)/projects/[projectId]/database/[databaseId]/page.tsx b/app/(customer)/dashboard/(organization)/projects/[projectId]/database/[databaseId]/page.tsx index 84bf683f..52f8923e 100644 --- a/app/(customer)/dashboard/(organization)/projects/[projectId]/database/[databaseId]/page.tsx +++ b/app/(customer)/dashboard/(organization)/projects/[projectId]/database/[databaseId]/page.tsx @@ -60,7 +60,7 @@ export default async function RoutePage(props: PageParams<{ orderBy: (r, {desc}) => [desc(r.createdAt)], }); - const isAlreadyBackup = backups.some((b) => b.status === "waiting"); + const isAlreadyBackup = backups.some((b) => b.status === "waiting" || b.status === "ongoing"); const isAlreadyRestore = restorations.some((r) => r.status === "waiting"); const totalBackups = await db.select({count: drizzleDb.schemas.backup.id}) diff --git a/app/api/agent/[agentId]/status/helpers.ts b/app/api/agent/[agentId]/status/helpers.ts index 8fc622d8..7db9bb10 100644 --- a/app/api/agent/[agentId]/status/helpers.ts +++ b/app/api/agent/[agentId]/status/helpers.ts @@ -6,7 +6,7 @@ import {Agent} from "@/db/schema/08_agent"; import {Database} from "@/db/schema/07_database"; import * as drizzleDb from "@/db"; import {db as dbClient} from "@/db"; -import {and, eq} from "drizzle-orm"; +import {and, eq, inArray} from "drizzle-orm"; import {EDbmsSchema} from "@/db/schema/types"; import {ServerActionResult} from "@/types/action-type"; import {SafeActionResult} from "next-safe-action"; @@ -75,8 +75,15 @@ export async function handleDatabases(body: Body, agent: Agent, lastContact: Dat .returning(); - const backup = await dbClient.query.backup.findFirst({ - where: and(eq(drizzleDb.schemas.backup.databaseId, databaseUpdated.id), eq(drizzleDb.schemas.backup.status, "waiting")) + // const backup = await dbClient.query.backup.findFirst({ + // where: and(eq(drizzleDb.schemas.backup.databaseId, databaseUpdated.id), eq(drizzleDb.schemas.backup.status, "waiting")) + // }) + + const activeBackup = await dbClient.query.backup.findFirst({ + where: and( + eq(drizzleDb.schemas.backup.databaseId, databaseUpdated.id), + inArray(drizzleDb.schemas.backup.status, ["waiting", "ongoing"]) + ) }) @@ -85,13 +92,13 @@ export async function handleDatabases(body: Body, agent: Agent, lastContact: Dat }) - if (backup) { + if (activeBackup && activeBackup.status == "waiting") { backupAction = true await dbClient .update(drizzleDb.schemas.backup) .set(withUpdatedAt({status: "ongoing"})) - .where(eq(drizzleDb.schemas.backup.id, backup.id)); + .where(eq(drizzleDb.schemas.backup.id, activeBackup.id)); } if (restoration) {