68 lines
1.6 KiB
TypeScript
68 lines
1.6 KiB
TypeScript
|
import express, { Request, Response } from "express";
|
||
|
import PermissionHelper from "../../../helpers/permissionHelper";
|
||
|
import multer from "multer";
|
||
|
import {
|
||
|
createManualBackup,
|
||
|
downloadBackupFile,
|
||
|
getGeneratedBackups,
|
||
|
restoreBackupByLocalFile,
|
||
|
uploadBackupFile,
|
||
|
} from "../../../controller/admin/club/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;
|