2025-02-02 16:23:44 +01:00
|
|
|
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<any> {
|
|
|
|
let filesInFolder = FileSystemHelper.getFilesInDirectory(`backup`);
|
|
|
|
|
2025-02-03 11:03:31 +01:00
|
|
|
let sorted = filesInFolder.sort((a, b) => new Date(b.split(".")[0]).getTime() - new Date(a.split(".")[0]).getTime());
|
|
|
|
|
|
|
|
res.json(sorted);
|
2025-02-02 16:23:44 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @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<any> {
|
|
|
|
let filename = req.params.filename;
|
|
|
|
|
|
|
|
let filepath = FileSystemHelper.formatPath("backup", filename);
|
|
|
|
|
|
|
|
res.sendFile(filepath, {
|
|
|
|
headers: {
|
|
|
|
"Content-Type": "application/json",
|
|
|
|
},
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2025-02-03 11:03:31 +01:00
|
|
|
/**
|
|
|
|
* @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<any> {
|
|
|
|
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<any> {
|
|
|
|
let filename = req.params.filename;
|
|
|
|
|
|
|
|
let filepath = FileSystemHelper.formatPath("uploaded-backup", filename);
|
|
|
|
|
|
|
|
res.sendFile(filepath, {
|
|
|
|
headers: {
|
|
|
|
"Content-Type": "application/json",
|
|
|
|
},
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2025-02-02 16:23:44 +01:00
|
|
|
/**
|
|
|
|
* @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<any> {
|
|
|
|
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<any> {
|
|
|
|
let filename = req.body.filename;
|
|
|
|
let partial = req.body.partial;
|
2025-02-02 16:37:55 +01:00
|
|
|
let include = req.body.include;
|
2025-02-03 11:03:31 +01:00
|
|
|
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<any> {
|
|
|
|
let filename = req.body.filename;
|
|
|
|
let partial = req.body.partial;
|
|
|
|
let include = req.body.include;
|
2025-02-02 16:23:44 +01:00
|
|
|
|
2025-02-03 11:03:31 +01:00
|
|
|
await BackupHelper.loadBackup({ filename, path: "uploaded-backup", include, partial });
|
2025-02-02 16:23:44 +01:00
|
|
|
|
|
|
|
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<any> {
|
|
|
|
if (!req.file) {
|
|
|
|
throw new InternalException("File upload failed");
|
|
|
|
}
|
|
|
|
res.sendStatus(204);
|
|
|
|
}
|