diff --git a/scripts/jobs-worker.ts b/scripts/jobs-worker.ts index dc7c57a025..b0e996afe6 100644 --- a/scripts/jobs-worker.ts +++ b/scripts/jobs-worker.ts @@ -140,7 +140,8 @@ async function backupEmulatorJar(): Promise { /** Optional mysqldump when DB_BACKUP_DIR is set (host must have mysqldump on PATH). */ async function backupDatabase(): Promise { - if (!env.DB_BACKUP_DIR || !env.DATABASE_URL) return; + const backupDir = env.DB_BACKUP_DIR; + if (!backupDir || !env.DATABASE_URL) return; const { mkdirSync, readdirSync, unlinkSync, existsSync, createWriteStream } = await import("node:fs"); @@ -155,14 +156,14 @@ async function backupDatabase(): Promise { return; } - if (!existsSync(env.DB_BACKUP_DIR)) { - mkdirSync(env.DB_BACKUP_DIR, { recursive: true }); + if (!existsSync(backupDir)) { + mkdirSync(backupDir, { recursive: true }); } const timestamp = new Date().toISOString().slice(0, 19).replace(/[T:]/g, "-"); const dbName = decodeURIComponent(parsed.pathname.replace(/^\//, "")) || "cms"; - const outFile = resolve(env.DB_BACKUP_DIR, `db-${dbName}-${timestamp}.sql`); + const outFile = resolve(backupDir, `db-${dbName}-${timestamp}.sql`); const args = [ `-h${parsed.hostname}`, @@ -201,12 +202,13 @@ async function backupDatabase(): Promise { } else { logger.info("Backed up database", { module: "jobs", outFile }); const keep = env.DB_BACKUP_KEEP ?? 7; - const files = readdirSync(env.DB_BACKUP_DIR) + const files = readdirSync(backupDir) .filter((f) => f.startsWith("db-") && f.endsWith(".sql")) .sort() .reverse(); for (let i = keep; i < files.length; i++) { - unlinkSync(resolve(env.DB_BACKUP_DIR, files[i])); + const file = files[i]; + if (file) unlinkSync(resolve(backupDir, file)); } } resolvePromise();