From 91422555eaff3afca43a4444632d29e40df48749 Mon Sep 17 00:00:00 2001
From: Salomo309 <109785084+Salomo309@users.noreply.github.com>
Date: Tue, 14 Nov 2023 20:19:35 +0700
Subject: [PATCH] refactor: add ftp

---
 src/controllers/premium-album-controller.ts |  5 ++++-
 src/services/premium-album-service.ts       | 18 +++++++++++++++++-
 2 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/src/controllers/premium-album-controller.ts b/src/controllers/premium-album-controller.ts
index 3bd4b03..caf1fb9 100644
--- a/src/controllers/premium-album-controller.ts
+++ b/src/controllers/premium-album-controller.ts
@@ -10,7 +10,8 @@ const createPremiumAlbum = async (
 ): Promise<void> => {
   try {
     const data = req.body;
-    const responseData = await PremiumAlbumService.createPremiumAlbum(data);
+    const coverFile = req.file;
+    const responseData = await PremiumAlbumService.createPremiumAlbum(data, coverFile);
     generateResponse(res, StatusCodes.OK, responseData);
   } catch (err) {
     next(err);
@@ -44,10 +45,12 @@ const updatePremiumAlbum = async (
   try {
     const premiumAlbumId = Number(req.params.premiumAlbumId);
     const data = req.body;
+    const coverFile = req.file;
 
     const updatedPremiumAlbum = await PremiumAlbumService.updatePremiumAlbum(
       data,
       premiumAlbumId,
+      coverFile
     );
     generateResponse(res, StatusCodes.OK, updatedPremiumAlbum);
   } catch (err) {
diff --git a/src/services/premium-album-service.ts b/src/services/premium-album-service.ts
index 4f181be..1f2edc2 100644
--- a/src/services/premium-album-service.ts
+++ b/src/services/premium-album-service.ts
@@ -3,19 +3,27 @@ import prismaClient from "../cores/db";
 import { ErrorType, StandardError } from "../errors/standard-error";
 import {validate} from "../validation/validation";
 import {createPremiumAlbumSchema, searchPremiumAlbumSchema, deletePremiumAlbumSchema, updatePremiumAlbumSchema} from "../validation/premium-album-validation";
+import { saveFile } from "../utils/FileProcessing";
 
 const createPremiumAlbum = async (
   data: Prisma.PremiumAlbumCreateInput,
+  coverFile: Express.Multer.File | undefined,
 ): Promise<PremiumAlbum> => {
   validate(createPremiumAlbumSchema, data)
 
+  if (!coverFile) {
+    throw new StandardError(ErrorType.FILE_NOT_VALID);
+  }
+
+  const coverFileName = await saveFile(coverFile);
+
   return prismaClient.premiumAlbum.create({
     data: {
       albumName: data.albumName,
       releaseDate: data.releaseDate,
       genre: data.genre,
       artist: data.artist,
-      coverFilename: data.coverFilename,
+      coverFilename: coverFileName,
     },
   });
 };
@@ -75,6 +83,7 @@ const searchPremiumAlbum = async (reqQuery: {
 const updatePremiumAlbum = async (
   inputData: Prisma.PremiumAlbumUpdateInput,
   premiumAlbumId: number,
+  coverFile: Express.Multer.File | undefined,
 ): Promise<PremiumAlbum> => {
   validate(updatePremiumAlbumSchema, {premiumAlbumId, ...inputData})
 
@@ -88,6 +97,13 @@ const updatePremiumAlbum = async (
     throw new StandardError(ErrorType.ALBUM_NOT_FOUND);
   }
 
+  if (!coverFile) {
+    throw new StandardError(ErrorType.INPUT_DATA_NOT_VALID);
+  }
+
+  const coverFileName = await saveFile(coverFile);
+  inputData.coverFilename = coverFileName;
+
   return prismaClient.premiumAlbum.update({
     where: {
       albumId: premiumAlbumId,
-- 
GitLab