fix(ops): narrow DB_BACKUP_DIR for jobs-worker typecheck
Co-authored-by: Cursor <[email protected]>
This commit is contained in:
1 parent
725e1cb338
commit
db957d7fb1
1 file changed
+8
-6
@@ -140,7 +140,8 @@ async function backupEmulatorJar(): Promise<void> {
|
|||||||
|
|
||||||
/** Optional mysqldump when DB_BACKUP_DIR is set (host must have mysqldump on PATH). */
|
/** Optional mysqldump when DB_BACKUP_DIR is set (host must have mysqldump on PATH). */
|
||||||
async function backupDatabase(): Promise<void> {
|
async function backupDatabase(): Promise<void> {
|
||||||
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 } =
|
const { mkdirSync, readdirSync, unlinkSync, existsSync, createWriteStream } =
|
||||||
await import("node:fs");
|
await import("node:fs");
|
||||||
@@ -155,14 +156,14 @@ async function backupDatabase(): Promise<void> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!existsSync(env.DB_BACKUP_DIR)) {
|
if (!existsSync(backupDir)) {
|
||||||
mkdirSync(env.DB_BACKUP_DIR, { recursive: true });
|
mkdirSync(backupDir, { recursive: true });
|
||||||
}
|
}
|
||||||
|
|
||||||
const timestamp = new Date().toISOString().slice(0, 19).replace(/[T:]/g, "-");
|
const timestamp = new Date().toISOString().slice(0, 19).replace(/[T:]/g, "-");
|
||||||
const dbName =
|
const dbName =
|
||||||
decodeURIComponent(parsed.pathname.replace(/^\//, "")) || "cms";
|
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 = [
|
const args = [
|
||||||
`-h${parsed.hostname}`,
|
`-h${parsed.hostname}`,
|
||||||
@@ -201,12 +202,13 @@ async function backupDatabase(): Promise<void> {
|
|||||||
} else {
|
} else {
|
||||||
logger.info("Backed up database", { module: "jobs", outFile });
|
logger.info("Backed up database", { module: "jobs", outFile });
|
||||||
const keep = env.DB_BACKUP_KEEP ?? 7;
|
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"))
|
.filter((f) => f.startsWith("db-") && f.endsWith(".sql"))
|
||||||
.sort()
|
.sort()
|
||||||
.reverse();
|
.reverse();
|
||||||
for (let i = keep; i < files.length; i++) {
|
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();
|
resolvePromise();
|
||||||
|
|||||||
Reference in new issue
Block a user