diff --git a/src/controllers/premium-song-controller.ts b/src/controllers/premium-song-controller.ts index 14189f7fe25b66f14b9b82b8ae7edf7f003c6c85..a1bf4b0415822c12d92af4d50afa7ba0ee8aaa3f 100644 --- a/src/controllers/premium-song-controller.ts +++ b/src/controllers/premium-song-controller.ts @@ -2,6 +2,7 @@ import { NextFunction, Request, Response } from "express"; import * as PremiumSongService from "../services/premium-song-services" import { generateResponse } from "../utils/response"; import { StatusCodes } from "http-status-codes"; +import {ErrorType, StandardError} from "../errors/standard-error"; const addNewSong = async ( req: Request, @@ -11,6 +12,15 @@ const addNewSong = async ( try { const data = req.body; const premiumAlbumId = Number(req.params.premiumAlbumId); + if (!req.file) { + throw new StandardError(ErrorType.FILE_NOT_VALID); + } + data.audioFilename = req.file.filename; + data.songNumber = Number(data.songNumber); + if (data.discNumber) { + data.discNumber = Number(data.discNumber); + } + data.duration = Number(data.duration); const responseData = await PremiumSongService.addNewSong(data, premiumAlbumId); generateResponse(res, StatusCodes.OK, responseData); } catch (err) { @@ -41,6 +51,23 @@ const updatePremiumSong = async ( const data = req.body; const premiumAlbumId = Number(req.params.premiumAlbumId); const premiumSongId = Number(req.params.premiumSongId); + if (data.songNumber) { + data.songNumber = Number(data.songNumber); + } + if (data.discNumber) { + data.discNumber = Number(data.discNumber); + } + if (data.duration) { + data.duration = Number(data.duration); + } + + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + if (req.files && req.files[0]) { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + data.audioFilename = req.files[0].filename; + } const responseData = await PremiumSongService.updatePremiumSong(data, premiumAlbumId, premiumSongId); generateResponse(res, StatusCodes.OK, responseData); } catch (err) { diff --git a/src/routers/premium-song-router.ts b/src/routers/premium-song-router.ts index 416a244e7b477f849bc7a2dbdf8177fcec07e8fb..3b576034b5c9cb3dc7c455abdd93717afba1a2ad 100644 --- a/src/routers/premium-song-router.ts +++ b/src/routers/premium-song-router.ts @@ -2,12 +2,14 @@ import express, { Router } from "express"; import * as PremiumSongController from "../controllers/premium-song-controller"; import { handleStandardError } from "../middlewares/handle-standard-error"; import { verifyToken } from "../middlewares/verify-token"; +import {uploadSong} from "../utils/file-processing"; const premiumSongRouter: Router = express.Router(); premiumSongRouter.post( "/api/premium-album/:premiumAlbumId", verifyToken, + uploadSong.single("songFile"), PremiumSongController.addNewSong, handleStandardError, ); @@ -22,6 +24,7 @@ premiumSongRouter.get( premiumSongRouter.patch( "/api/premium-album/:premiumAlbumId/:premiumSongId", verifyToken, + uploadSong.any(), PremiumSongController.updatePremiumSong, handleStandardError, );