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