import { Request, Response } from "express"; import { FileSystemHelper } from "../../../helpers/fileSystemHelper"; import BackupHelper from "../../../helpers/backupHelper"; import InternalException from "../../../exceptions/internalException"; /** * @description get generated backups * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function getGeneratedBackups(req: Request, res: Response): Promise { let filesInFolder = FileSystemHelper.getFilesInDirectory(`backup`); let sorted = filesInFolder.sort((a, b) => new Date(b.split(".")[0]).getTime() - new Date(a.split(".")[0]).getTime()); res.json(sorted); } /** * @description download backup file * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function downloadBackupFile(req: Request, res: Response): Promise { let filename = req.params.filename; let filepath = FileSystemHelper.formatPath("backup", filename); res.sendFile(filepath, { headers: { "Content-Type": "application/json", }, }); } /** * @description get uploaded backups * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function getUploadedBackups(req: Request, res: Response): Promise { let filesInFolder = FileSystemHelper.getFilesInDirectory("uploaded-backup"); let sorted = filesInFolder.sort((a, b) => new Date(b.split("_")[0]).getTime() - new Date(a.split("_")[0]).getTime()); res.json(sorted); } /** * @description download uploaded backup file * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function downloadUploadedBackupFile(req: Request, res: Response): Promise { let filename = req.params.filename; let filepath = FileSystemHelper.formatPath("uploaded-backup", filename); res.sendFile(filepath, { headers: { "Content-Type": "application/json", }, }); } /** * @description create backup manually * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function createManualBackup(req: Request, res: Response): Promise { await BackupHelper.createBackup({}); res.sendStatus(204); } /** * @description restore backup by selected * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function restoreBackupByLocalFile(req: Request, res: Response): Promise { let filename = req.body.filename; let partial = req.body.partial; let include = req.body.include; let overwrite = req.body.overwrite; await BackupHelper.loadBackup({ filename, include, partial, overwrite }); res.sendStatus(204); } /** * @description restore uploaded backup by selected * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function restoreBackupByUploadedFile(req: Request, res: Response): Promise { let filename = req.body.filename; let partial = req.body.partial; let include = req.body.include; await BackupHelper.loadBackup({ filename, path: "uploaded-backup", include, partial }); res.sendStatus(204); } /** * @description upload backup * @param req {Request} Express req object * @param res {Response} Express res object * @returns {Promise<*>} */ export async function uploadBackupFile(req: Request, res: Response): Promise { if (!req.file) { throw new InternalException("File upload failed"); } res.sendStatus(204); }