"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = downloadBackup; const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const grab_dir_names_1 = __importDefault(require("../../../../utils/backend/names/grab-dir-names")); const child_process_1 = require("child_process"); function downloadBackup(_a) { return __awaiter(this, arguments, void 0, function* ({ backup, res, }) { try { const { mainBackupDir, userBackupDir, tempBackupExportName } = (0, grab_dir_names_1.default)({ 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_1.default.join(allBackupsDir, backup.uuid); const zipFilesCmd = (0, child_process_1.execSync)(`tar -cJf ${tempBackupExportName} ${backup.uuid}`, { cwd: allBackupsDir, }); const exportFilePath = path_1.default.join(allBackupsDir, tempBackupExportName); const readStream = fs_1.default.createReadStream(exportFilePath); readStream.pipe(res); readStream.on("end", () => { console.log("Pipe Complete!"); setTimeout(() => { (0, child_process_1.execSync)(`rm -f ${tempBackupExportName}`, { cwd: allBackupsDir, }); }, 1000); }); return { success: true }; } catch (error) { return { success: false, msg: `Failed to write backup files`, error: error.message, }; } }); }