From d57e347fdc4d8ade45e3bddf91a4f7cebb455f64 Mon Sep 17 00:00:00 2001 From: Mauricio Siu <47042324+Siumauricio@users.noreply.github.com> Date: Thu, 1 May 2025 20:34:16 -0600 Subject: [PATCH] Refactor runJobs and initializeJobs functions to incorporate backupType handling and improve server status checks. Enhance database backup logic for better clarity and maintainability, ensuring only active servers are initialized. --- apps/schedules/src/utils.ts | 87 +++++++++++++++++++++---------------- 1 file changed, 50 insertions(+), 37 deletions(-) diff --git a/apps/schedules/src/utils.ts b/apps/schedules/src/utils.ts index 4868e77dd..dfdd28fcb 100644 --- a/apps/schedules/src/utils.ts +++ b/apps/schedules/src/utils.ts @@ -12,7 +12,7 @@ import { } from "@dokploy/server"; import { db } from "@dokploy/server/dist/db"; import { backups, server } from "@dokploy/server/dist/db/schema"; -import { eq } from "drizzle-orm"; +import { and, eq } from "drizzle-orm"; import { logger } from "./logger.js"; import { scheduleJob } from "./queue.js"; import type { QueueJob } from "./schema.js"; @@ -23,48 +23,57 @@ export const runJobs = async (job: QueueJob) => { if (job.type === "backup") { const { backupId } = job; const backup = await findBackupById(backupId); - const { databaseType, postgres, mysql, mongo, mariadb, compose } = backup; + const { + databaseType, + postgres, + mysql, + mongo, + mariadb, + compose, + backupType, + } = backup; - if (databaseType === "postgres" && postgres) { - const server = await findServerById(postgres.serverId as string); - if (server.serverStatus === "inactive") { - logger.info("Server is inactive"); - return; + if (backupType === "database") { + if (databaseType === "postgres" && postgres) { + const server = await findServerById(postgres.serverId as string); + if (server.serverStatus === "inactive") { + logger.info("Server is inactive"); + return; + } + await runPostgresBackup(postgres, backup); + await keepLatestNBackups(backup, server.serverId); + } else if (databaseType === "mysql" && mysql) { + const server = await findServerById(mysql.serverId as string); + if (server.serverStatus === "inactive") { + logger.info("Server is inactive"); + return; + } + await runMySqlBackup(mysql, backup); + await keepLatestNBackups(backup, server.serverId); + } else if (databaseType === "mongo" && mongo) { + const server = await findServerById(mongo.serverId as string); + if (server.serverStatus === "inactive") { + logger.info("Server is inactive"); + return; + } + await runMongoBackup(mongo, backup); + await keepLatestNBackups(backup, server.serverId); + } else if (databaseType === "mariadb" && mariadb) { + const server = await findServerById(mariadb.serverId as string); + if (server.serverStatus === "inactive") { + logger.info("Server is inactive"); + return; + } + await runMariadbBackup(mariadb, backup); + await keepLatestNBackups(backup, server.serverId); } - await runPostgresBackup(postgres, backup); - await keepLatestNBackups(backup, server.serverId); - } else if (databaseType === "mysql" && mysql) { - const server = await findServerById(mysql.serverId as string); - if (server.serverStatus === "inactive") { - logger.info("Server is inactive"); - return; - } - await runMySqlBackup(mysql, backup); - await keepLatestNBackups(backup, server.serverId); - } else if (databaseType === "mongo" && mongo) { - const server = await findServerById(mongo.serverId as string); - if (server.serverStatus === "inactive") { - logger.info("Server is inactive"); - return; - } - await runMongoBackup(mongo, backup); - await keepLatestNBackups(backup, server.serverId); - } else if (databaseType === "mariadb" && mariadb) { - const server = await findServerById(mariadb.serverId as string); - if (server.serverStatus === "inactive") { - logger.info("Server is inactive"); - return; - } - await runMariadbBackup(mariadb, backup); - await keepLatestNBackups(backup, server.serverId); - } else if (databaseType === "compose" && compose) { + } else if (backupType === "compose" && compose) { const server = await findServerById(compose.serverId as string); if (server.serverStatus === "inactive") { logger.info("Server is inactive"); return; } await runComposeBackup(compose, backup); - await keepLatestNBackups(backup, server.serverId); } } if (job.type === "server") { @@ -89,7 +98,10 @@ export const initializeJobs = async () => { logger.info("Setting up Jobs...."); const servers = await db.query.server.findMany({ - where: eq(server.enableDockerCleanup, true), + where: and( + eq(server.enableDockerCleanup, true), + eq(server.serverStatus, "active"), + ), }); for (const server of servers) { @@ -101,7 +113,7 @@ export const initializeJobs = async () => { }); } - logger.info({ Quantity: servers.length }, "Servers Initialized"); + logger.info({ Quantity: servers.length }, "Active Servers Initialized"); const backupsResult = await db.query.backups.findMany({ where: eq(backups.enabled, true), @@ -110,6 +122,7 @@ export const initializeJobs = async () => { mysql: true, postgres: true, mongo: true, + compose: true, }, });