修改管理后台
This commit is contained in:
319
backend/routes/backup.js
Normal file
319
backend/routes/backup.js
Normal file
@@ -0,0 +1,319 @@
|
||||
/**
|
||||
* 备份管理路由
|
||||
* @file backup.js
|
||||
* @description 处理数据备份和恢复请求
|
||||
*/
|
||||
const express = require('express');
|
||||
const { body } = require('express-validator');
|
||||
const { verifyToken, checkRole } = require('../middleware/auth');
|
||||
const backupController = require('../controllers/backupController');
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* tags:
|
||||
* name: Backup
|
||||
* description: 数据备份管理相关接口
|
||||
*/
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/backup/create:
|
||||
* post:
|
||||
* summary: 创建数据备份
|
||||
* tags: [Backup]
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* requestBody:
|
||||
* required: false
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* properties:
|
||||
* type:
|
||||
* type: string
|
||||
* enum: [full, daily, weekly, monthly]
|
||||
* description: 备份类型
|
||||
* default: full
|
||||
* description:
|
||||
* type: string
|
||||
* description: 备份描述
|
||||
* responses:
|
||||
* 200:
|
||||
* description: 备份创建成功
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* $ref: '#/components/schemas/ApiResponse'
|
||||
* 401:
|
||||
* description: 未授权
|
||||
* 403:
|
||||
* description: 权限不足
|
||||
* 500:
|
||||
* description: 服务器错误
|
||||
*/
|
||||
router.post('/create',
|
||||
verifyToken,
|
||||
checkRole(['admin']),
|
||||
[
|
||||
body('type').optional().isIn(['full', 'daily', 'weekly', 'monthly']).withMessage('备份类型无效'),
|
||||
body('description').optional().isLength({ max: 255 }).withMessage('描述长度不能超过255字符')
|
||||
],
|
||||
backupController.createBackup
|
||||
);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/backup/list:
|
||||
* get:
|
||||
* summary: 获取备份列表
|
||||
* tags: [Backup]
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* parameters:
|
||||
* - in: query
|
||||
* name: page
|
||||
* schema:
|
||||
* type: integer
|
||||
* default: 1
|
||||
* description: 页码
|
||||
* - in: query
|
||||
* name: limit
|
||||
* schema:
|
||||
* type: integer
|
||||
* default: 10
|
||||
* description: 每页数量
|
||||
* - in: query
|
||||
* name: type
|
||||
* schema:
|
||||
* type: string
|
||||
* enum: [full, daily, weekly, monthly]
|
||||
* description: 备份类型过滤
|
||||
* responses:
|
||||
* 200:
|
||||
* description: 获取成功
|
||||
* 401:
|
||||
* description: 未授权
|
||||
* 403:
|
||||
* description: 权限不足
|
||||
*/
|
||||
router.get('/list', verifyToken, checkRole(['admin']), backupController.getBackupList);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/backup/stats:
|
||||
* get:
|
||||
* summary: 获取备份统计信息
|
||||
* tags: [Backup]
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* responses:
|
||||
* 200:
|
||||
* description: 获取成功
|
||||
* 401:
|
||||
* description: 未授权
|
||||
* 403:
|
||||
* description: 权限不足
|
||||
*/
|
||||
router.get('/stats', verifyToken, checkRole(['admin']), backupController.getBackupStats);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/backup/health:
|
||||
* get:
|
||||
* summary: 获取备份系统健康状态
|
||||
* tags: [Backup]
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* responses:
|
||||
* 200:
|
||||
* description: 获取成功
|
||||
* 401:
|
||||
* description: 未授权
|
||||
* 403:
|
||||
* description: 权限不足
|
||||
*/
|
||||
router.get('/health', verifyToken, checkRole(['admin']), backupController.getBackupHealth);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/backup/{id}:
|
||||
* delete:
|
||||
* summary: 删除备份
|
||||
* tags: [Backup]
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* parameters:
|
||||
* - in: path
|
||||
* name: id
|
||||
* required: true
|
||||
* schema:
|
||||
* type: string
|
||||
* description: 备份ID
|
||||
* responses:
|
||||
* 200:
|
||||
* description: 删除成功
|
||||
* 401:
|
||||
* description: 未授权
|
||||
* 403:
|
||||
* description: 权限不足
|
||||
* 404:
|
||||
* description: 备份不存在
|
||||
*/
|
||||
router.delete('/:id', verifyToken, checkRole(['admin']), backupController.deleteBackup);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/backup/{id}/restore:
|
||||
* post:
|
||||
* summary: 恢复数据备份
|
||||
* tags: [Backup]
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* parameters:
|
||||
* - in: path
|
||||
* name: id
|
||||
* required: true
|
||||
* schema:
|
||||
* type: string
|
||||
* description: 备份ID
|
||||
* requestBody:
|
||||
* required: true
|
||||
* content:
|
||||
* application/json:
|
||||
* schema:
|
||||
* type: object
|
||||
* required:
|
||||
* - confirm
|
||||
* properties:
|
||||
* confirm:
|
||||
* type: boolean
|
||||
* description: 确认恢复操作
|
||||
* responses:
|
||||
* 200:
|
||||
* description: 恢复成功
|
||||
* 400:
|
||||
* description: 参数错误
|
||||
* 401:
|
||||
* description: 未授权
|
||||
* 403:
|
||||
* description: 权限不足
|
||||
* 500:
|
||||
* description: 恢复失败
|
||||
*/
|
||||
router.post('/:id/restore',
|
||||
verifyToken,
|
||||
checkRole(['admin']),
|
||||
[
|
||||
body('confirm').isBoolean().withMessage('confirm必须是布尔值')
|
||||
],
|
||||
backupController.restoreBackup
|
||||
);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/backup/{id}/download:
|
||||
* get:
|
||||
* summary: 下载备份文件
|
||||
* tags: [Backup]
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* parameters:
|
||||
* - in: path
|
||||
* name: id
|
||||
* required: true
|
||||
* schema:
|
||||
* type: string
|
||||
* description: 备份ID
|
||||
* responses:
|
||||
* 200:
|
||||
* description: 文件下载
|
||||
* content:
|
||||
* application/zip:
|
||||
* schema:
|
||||
* type: string
|
||||
* format: binary
|
||||
* 401:
|
||||
* description: 未授权
|
||||
* 403:
|
||||
* description: 权限不足
|
||||
* 404:
|
||||
* description: 备份文件不存在
|
||||
*/
|
||||
router.get('/:id/download', verifyToken, checkRole(['admin']), backupController.downloadBackup);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/backup/cleanup:
|
||||
* post:
|
||||
* summary: 清理过期备份
|
||||
* tags: [Backup]
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* responses:
|
||||
* 200:
|
||||
* description: 清理成功
|
||||
* 401:
|
||||
* description: 未授权
|
||||
* 403:
|
||||
* description: 权限不足
|
||||
*/
|
||||
router.post('/cleanup', verifyToken, checkRole(['admin']), backupController.cleanupBackups);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/backup/schedule/start:
|
||||
* post:
|
||||
* summary: 启动自动备份调度
|
||||
* tags: [Backup]
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* responses:
|
||||
* 200:
|
||||
* description: 启动成功
|
||||
* 401:
|
||||
* description: 未授权
|
||||
* 403:
|
||||
* description: 权限不足
|
||||
*/
|
||||
router.post('/schedule/start', verifyToken, checkRole(['admin']), backupController.startScheduler);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/backup/schedule/stop:
|
||||
* post:
|
||||
* summary: 停止自动备份调度
|
||||
* tags: [Backup]
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* responses:
|
||||
* 200:
|
||||
* description: 停止成功
|
||||
* 401:
|
||||
* description: 未授权
|
||||
* 403:
|
||||
* description: 权限不足
|
||||
*/
|
||||
router.post('/schedule/stop', verifyToken, checkRole(['admin']), backupController.stopScheduler);
|
||||
|
||||
/**
|
||||
* @swagger
|
||||
* /api/backup/schedule/status:
|
||||
* get:
|
||||
* summary: 获取自动备份调度状态
|
||||
* tags: [Backup]
|
||||
* security:
|
||||
* - bearerAuth: []
|
||||
* responses:
|
||||
* 200:
|
||||
* description: 获取成功
|
||||
* 401:
|
||||
* description: 未授权
|
||||
* 403:
|
||||
* description: 权限不足
|
||||
*/
|
||||
router.get('/schedule/status', verifyToken, checkRole(['admin']), backupController.getSchedulerStatus);
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user