diff --git a/src/controllers/premium-album-controller.ts b/src/controllers/premium-album-controller.ts index 3bd4b03cc97a4b913620c5b2feb3ba544f19fb24..caf1fb99e04ffb759fc6bf8cfa860dff8956641a 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 4f181bea6a6a4450b3116fe1eac0bfbfd8abc90c..1f2edc2cfac5b2c58d8ec166c7414c0fcc2a8ebe 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,