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.

This commit is contained in:
Mauricio Siu 2025-05-01 20:34:16 -06:00
parent 25f3980492
commit d57e347fdc

View File

@ -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,8 +23,17 @@ 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 (backupType === "database") {
if (databaseType === "postgres" && postgres) {
const server = await findServerById(postgres.serverId as string);
if (server.serverStatus === "inactive") {
@ -57,14 +66,14 @@ export const runJobs = async (job: QueueJob) => {
}
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,
},
});