From f67fc592b25850a3c1a399ba2df9b0583b7bb699 Mon Sep 17 00:00:00 2001
From: razzanYoni <13521087@mahasiswa.itb.ac.id>
Date: Tue, 14 Nov 2023 22:27:27 +0700
Subject: [PATCH] feat : add ftp functionality

---
 src/controllers/premium-song-controller.ts | 27 ++++++++++++++++++++++
 src/routers/premium-song-router.ts         |  3 +++
 2 files changed, 30 insertions(+)

diff --git a/src/controllers/premium-song-controller.ts b/src/controllers/premium-song-controller.ts
index 14189f7..a1bf4b0 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 416a244..3b57603 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,
 );
-- 
GitLab