// routes/admin/assets.routes.js const router = require('express').Router(); const { upload, handleUpload } = require('../../middleware/asset_upload.middleware'); const controller = require('../../controllers/admin/assets.controller'); const { sensitiveOpsLimiter } = require('../../middleware/rateLimiter.middleware'); // ─── Static routes first ────────────────────────────────────────────────────── router.get('/archived', controller.getArchivedAssets); router.get('/field-values', controller.getAssetFieldValues); router.delete('/bulk', sensitiveOpsLimiter, controller.archiveAssets); router.delete('/bulk/permanent', sensitiveOpsLimiter, controller.permanentlyDeleteAssets); router.patch('/bulk-restore', controller.restoreAssets); router.get('/upload-progress/:uploadId', controller.streamUploadProgress); router.get('/convert-progress/:jobId', controller.streamConvertProgress); // ─── Collection ─────────────────────────────────────────────────────────────── router.get('/', controller.getAssets); router.post('/', handleUpload(upload.fields([{ name: 'file', maxCount: 1 }, { name: 'thumbnail', maxCount: 1 }])), controller.uploadAsset); router.post('/batch', handleUpload(upload.array('files', 20)), controller.uploadAssetsBatch); // ─── Dynamic routes last ────────────────────────────────────────────────────── router.get('/:assetId', controller.getAsset); router.post('/:assetId/convert-to-markdown', sensitiveOpsLimiter, controller.convertAssetToMarkdown); router.patch('/:assetId', sensitiveOpsLimiter, handleUpload(upload.fields([{ name: 'file', maxCount: 1 }])), controller.updateAsset); router.patch('/:assetId/restore', sensitiveOpsLimiter, controller.restoreAsset); router.delete('/:assetId', sensitiveOpsLimiter, controller.archiveAsset); router.delete('/:assetId/permanent', sensitiveOpsLimiter, controller.permanentlyDeleteAsset); module.exports = router;