From 401a0d51a677deaf496f352e12251b9a09babf59 Mon Sep 17 00:00:00 2001 From: Bintang Murtifandy <21844@student.stembayo.sch.id> Date: Tue, 26 May 2026 10:47:12 +0700 Subject: [PATCH] fix: fix multer syntax error and unify upload routes --- src/routes/index.js | 2 -- src/routes/tracks.js | 11 +++++++++++ src/utils/multer.js | 5 ++--- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/routes/index.js b/src/routes/index.js index 3fe9d24..fa9f935 100644 --- a/src/routes/index.js +++ b/src/routes/index.js @@ -1,6 +1,5 @@ import { Router } from 'express'; import authRoutes from './auths.js'; -import adminRoutes from './admins.js'; import trackRoutes from './tracks.js'; import playlistRoutes from './playlists.js'; import artistRoutes from './artists.js'; @@ -20,7 +19,6 @@ router.get('/health', (req, res) => { }); router.use('/auth', authRoutes); -router.use('/admin', adminRoutes); router.use('/tracks', trackRoutes); router.use('/playlists', playlistRoutes); router.use('/artists', artistRoutes); diff --git a/src/routes/tracks.js b/src/routes/tracks.js index a217515..d5694c9 100644 --- a/src/routes/tracks.js +++ b/src/routes/tracks.js @@ -1,11 +1,22 @@ import { Router } from 'express'; import { trackController } from '../controllers/trackController.js'; +import { uploadController } from '../controllers/uploadController.js'; import { auth } from '../middlewares/auth.js'; +import { uploadTrackAssets } from '../utils/multer.js'; const router = Router(); router.get('/', trackController.list); router.get('/liked', auth, trackController.listLiked); +router.post( + '/', + auth, + uploadTrackAssets.fields([ + { name: 'cover', maxCount: 1 }, + { name: 'audio', maxCount: 1 }, + ]), + uploadController.uploadTrack +); router.post('/:trackId/like', auth, trackController.like); router.delete('/:trackId/like', auth, trackController.unlike); diff --git a/src/utils/multer.js b/src/utils/multer.js index cdc672b..3d1c544 100644 --- a/src/utils/multer.js +++ b/src/utils/multer.js @@ -75,7 +75,7 @@ const imageFilter = (req, file, cb) => { return cb(null, true); } - if (file.fieldname === 'playlistCover') { + if (file.fieldname === 'playlistCover' || file.fieldname === 'avatar') { const allowed = ['image/jpeg', 'image/png', 'image/webp']; if (!allowed.includes(file.mimetype)) { return cb(new Error('Only JPG, PNG, or WEBP images are allowed')); @@ -84,8 +84,7 @@ const imageFilter = (req, file, cb) => { return cb(null, true); } - return cb(new Error('Invalid upload field')); - }; + return cb(new Error('Invalid upload field')); }; export const uploadAvatar = multer({