Updates
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import _ from "lodash";
|
||||
import path from "path";
|
||||
import writeBacupFiles from "./write-backup-files";
|
||||
import writeBackupFiles from "./write-backup-files";
|
||||
import { APIResponseObject } from "../../../../../types";
|
||||
import grabDirNames from "../../../../../utils/backend/names/grab-dir-names";
|
||||
import {
|
||||
@@ -19,9 +19,10 @@ export default async function suAddBackup({
|
||||
targetUserId,
|
||||
}: Params): Promise<APIResponseObject> {
|
||||
try {
|
||||
const { mainBackupDir, userBackupDir } = grabDirNames({
|
||||
userId: targetUserId,
|
||||
});
|
||||
const { mainBackupDir, userBackupDir, STATIC_ROOT, privateDataDir } =
|
||||
grabDirNames({
|
||||
userId: targetUserId,
|
||||
});
|
||||
|
||||
if (targetUserId && !userBackupDir) {
|
||||
return {
|
||||
@@ -63,7 +64,7 @@ export default async function suAddBackup({
|
||||
};
|
||||
}
|
||||
|
||||
const writeBackup = await writeBacupFiles({
|
||||
const writeBackup = await writeBackupFiles({
|
||||
backup: newlyAddedBackup,
|
||||
});
|
||||
|
||||
|
||||
@@ -22,6 +22,8 @@ export default async function writeBackupFiles({
|
||||
schemasBackupDirName,
|
||||
targetUserPrivateDir,
|
||||
oldSchemasDir,
|
||||
STATIC_ROOT,
|
||||
privateDataDir,
|
||||
} = grabDirNames({
|
||||
userId: backup.user_id,
|
||||
});
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
import fs from "fs";
|
||||
import path from "path";
|
||||
import _ from "lodash";
|
||||
import { DSQL_DATASQUIREL_BACKUPS } from "../../../../types/dsql";
|
||||
import { APIResponseObject } from "../../../../types";
|
||||
import grabDirNames from "../../../../utils/backend/names/grab-dir-names";
|
||||
import { NextApiResponse } from "next";
|
||||
import { execSync } from "child_process";
|
||||
|
||||
type Params = {
|
||||
backup: DSQL_DATASQUIREL_BACKUPS;
|
||||
res: NextApiResponse;
|
||||
};
|
||||
|
||||
export default async function downloadBackup({
|
||||
backup,
|
||||
res,
|
||||
}: Params): Promise<APIResponseObject> {
|
||||
try {
|
||||
const { mainBackupDir, userBackupDir, tempBackupExportName } =
|
||||
grabDirNames({
|
||||
userId: backup.user_id,
|
||||
});
|
||||
|
||||
if (backup.user_id && !userBackupDir) {
|
||||
return {
|
||||
success: false,
|
||||
msg: `Error grabbing user backup directory`,
|
||||
};
|
||||
}
|
||||
|
||||
if (!backup.uuid) {
|
||||
return {
|
||||
success: false,
|
||||
msg: `No UUID found for backup`,
|
||||
};
|
||||
}
|
||||
|
||||
const allBackupsDir =
|
||||
backup.user_id && userBackupDir ? userBackupDir : mainBackupDir;
|
||||
|
||||
const targetBackupDir = path.join(allBackupsDir, backup.uuid);
|
||||
|
||||
const zipFilesCmd = execSync(
|
||||
`tar -cJf ${tempBackupExportName} ${backup.uuid}`,
|
||||
{
|
||||
cwd: allBackupsDir,
|
||||
}
|
||||
);
|
||||
|
||||
const exportFilePath = path.join(allBackupsDir, tempBackupExportName);
|
||||
|
||||
const readStream = fs.createReadStream(exportFilePath);
|
||||
readStream.pipe(res);
|
||||
|
||||
readStream.on("end", () => {
|
||||
console.log("Pipe Complete!");
|
||||
setTimeout(() => {
|
||||
execSync(`rm -f ${tempBackupExportName}`, {
|
||||
cwd: allBackupsDir,
|
||||
});
|
||||
}, 1000);
|
||||
});
|
||||
|
||||
return { success: true };
|
||||
} catch (error: any) {
|
||||
return {
|
||||
success: false,
|
||||
msg: `Failed to write backup files`,
|
||||
error: error.message,
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user