mirror of
https://github.com/rgrgogu/new_starr.git
synced 2026-09-27 00:12:54 +08:00
36 lines
2.4 KiB
JavaScript
36 lines
2.4 KiB
JavaScript
// routes/admin/assets.routes.js
|
|
|
|
const router = require('express').Router();
|
|
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);
|
|
|
|
// ─── Collection ───────────────────────────────────────────────────────────────
|
|
router.get('/', controller.getAssets);
|
|
// Presigned-upload flow: the browser PUTs file bytes straight to storage, this
|
|
// backend never buffers them (see assets.controller.js). presign mints the
|
|
// upload URL(s); the POST / body that follows is plain JSON (no multer here).
|
|
router.post('/presign', controller.presignAssetUpload);
|
|
// Above presign's single-PUT ceiling only (see s3.service.js's
|
|
// MULTIPART_THRESHOLD) — the browser PUTs every part directly, then calls
|
|
// complete/abort here. Plain JSON, no file bytes.
|
|
router.post('/complete-multipart', controller.completeMultipartAssetUpload);
|
|
router.post('/abort-multipart', controller.abortMultipartAssetUpload);
|
|
router.post('/', controller.uploadAsset);
|
|
|
|
// ─── Dynamic routes last ──────────────────────────────────────────────────────
|
|
router.get('/:assetId', controller.getAsset);
|
|
// Replace flow also goes through presign + direct PUT (browser -> storage) —
|
|
// this body is plain JSON (storage_key etc.), same as POST /. No multer here.
|
|
router.patch('/:assetId', sensitiveOpsLimiter, 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; |