Re_Backend/src/routes/summary.routes.ts

68 lines
2.0 KiB
TypeScript

import { Router } from 'express';
import { summaryController } from '@controllers/summary.controller';
import { authenticateToken } from '@middlewares/auth.middleware';
import { asyncHandler } from '@middlewares/errorHandler.middleware';
const router = Router();
// All routes require authentication
router.use(authenticateToken);
// Create summary for a closed request
router.post(
'/',
asyncHandler(summaryController.createSummary.bind(summaryController))
);
// List summaries shared with current user (MUST come before /:summaryId)
router.get(
'/shared',
asyncHandler(summaryController.listSharedSummaries.bind(summaryController))
);
// Mark shared summary as viewed (MUST come before /:summaryId)
router.patch(
'/shared/:sharedSummaryId/view',
asyncHandler(summaryController.markAsViewed.bind(summaryController))
);
// List summaries created by current user (MUST come before /:summaryId)
router.get(
'/my',
asyncHandler(summaryController.listMySummaries.bind(summaryController))
);
// Get summary by requestId (MUST come before /:summaryId)
router.get(
'/request/:requestId',
asyncHandler(summaryController.getSummaryByRequestId.bind(summaryController))
);
// Regenerate summary for a request (MUST come before /:summaryId)
// Access: Initiator or Admin/Management users
router.post(
'/request/:requestId/regenerate',
asyncHandler(summaryController.regenerateSummary.bind(summaryController))
);
// Share summary with users (MUST come before /:summaryId)
router.post(
'/:summaryId/share',
asyncHandler(summaryController.shareSummary.bind(summaryController))
);
// Get shared recipients for a summary (MUST come before /:summaryId)
router.get(
'/:summaryId/recipients',
asyncHandler(summaryController.getSharedRecipients.bind(summaryController))
);
// Get summary details (MUST come last - it's a catch-all for UUIDs)
router.get(
'/:summaryId',
asyncHandler(summaryController.getSummaryDetails.bind(summaryController))
);
export default router;