ff-admin-server/src/routes/admin/user/backup.ts

68 lines
1.6 KiB
TypeScript
Raw Normal View History

2025-02-02 16:23:44 +01:00
import express, { Request, Response } from "express";
import PermissionHelper from "../../../helpers/permissionHelper";
import multer from "multer";
import {
createManualBackup,
downloadBackupFile,
getGeneratedBackups,
restoreBackupByLocalFile,
uploadBackupFile,
2025-02-02 16:37:55 +01:00
} from "../../../controller/admin/user/backupController";
2025-02-02 16:23:44 +01:00
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;