import express, { Request, Response } from "express"; import PermissionHelper from "../../../helpers/permissionHelper"; import multer from "multer"; import { createManualBackup, downloadBackupFile, getGeneratedBackups, restoreBackupByLocalFile, uploadBackupFile, } from "../../../controller/admin/user/backupController"; const storage = multer.diskStorage({ destination: (req, file, cb) => { cb(null, "files/backup/"); }, filename: (req, file, cb) => { cb(null, `${new Date().toISOString().split("T")[0]}-uploaded-${file.originalname}`); }, }); const upload = multer({ storage, fileFilter: (req: Request, file, cb) => { if (file.mimetype === "application/json") { cb(null, true); } else { cb(new Error("Only JSON files are allowed!")); } }, }); var router = express.Router({ mergeParams: true }); router.get("/", async (req: Request, res: Response) => { await getGeneratedBackups(req, res); }); router.get("/:filename", async (req: Request, res: Response) => { await downloadBackupFile(req, res); }); router.post( "/", PermissionHelper.passCheckMiddleware("create", "user", "backup"), async (req: Request, res: Response) => { await createManualBackup(req, res); } ); router.post( "/restore", PermissionHelper.passCheckMiddleware("admin", "user", "backup"), async (req: Request, res: Response) => { await restoreBackupByLocalFile(req, res); } ); router.post( "/upload", PermissionHelper.passCheckMiddleware("create", "user", "backup"), upload.single("file"), async (req: Request, res: Response) => { await uploadBackupFile(req, res); } ); export default router;