diff --git a/controllers/mediaController.ts b/controllers/mediaController.ts index ebfe780..8b5540e 100644 --- a/controllers/mediaController.ts +++ b/controllers/mediaController.ts @@ -1,6 +1,6 @@ import { type Request, type Response } from "express"; import UserModel, { values } from '../models/userModel'; -import MediaModel, { Table } from '../models/mediaModel'; +import MediaModel, { Table, Media } from '../models/mediaModel'; interface omdbRes{ Title: string, @@ -17,31 +17,24 @@ function fromStringToTable(value: string): (Table | undefined) { return; } -async function downloadImage(mData: omdbRes, cleanCode: number) { - +async function downloadImage(mData: Media, type: Table) { // Specify the path where you want to save the image - const outputPath = '/poster/' + mData.Type + '/' + cleanCode + '.jpg'; + const outputPath = '/poster/' + type + '/' + mData.code + '.jpg'; // Use Bun's built-in fetch to download the image - const response = await fetch(mData.Poster); + const response = await fetch(mData.webImg); // Check if the request was successful if (!response.ok) { + console.log("fetch image error"); return } // Convert the response to a blob const imageBlob = await response.blob(); - // Use Bun's write to save the image to a file await Bun.write('./public/' + outputPath, await imageBlob.arrayBuffer()); - - if (mData.Type.localeCompare("movie") == 0) { - MediaModel.updateWebImg(Table.movies, cleanCode, outputPath); - } - else if (mData.Type.localeCompare("series") == 0) { - MediaModel.updateWebImg(Table.series, cleanCode, outputPath); - } + MediaModel.updateWebImg(type, mData.code, outputPath); } @@ -68,37 +61,38 @@ async function createMed(req: Request, res: Response) { return res.status(404).json({ message: 'wrong code' }); } + const media: Media = { + id:0, + code: cleanCode, + title: mData.Title, + released: mData.Released, + webImg: mData.Poster, + }; + const seriesFound = MediaModel.findOne(Table.series, cleanCode); if (seriesFound.length != 0) { res.status(409).json({ message: 'Media already exists' }); - await downloadImage(mData, cleanCode); + await downloadImage(media, Table.series); return; } const moviesFound = MediaModel.findOne(Table.movies, cleanCode); if (moviesFound.length != 0) { res.status(409).json({ message: 'Media already exists' }); - await downloadImage(mData, cleanCode); + await downloadImage(media, Table.movies); return; } if (mData.Type.localeCompare("movie") == 0) { const savedMedia = MediaModel.save(Table.movies, cleanCode, mData.Title, mData.Released, mData.Poster); + await downloadImage(media, Table.movies); } else if (mData.Type.localeCompare("series") == 0) { const savedMedia = MediaModel.save(Table.series, cleanCode, mData.Title, mData.Released, mData.Poster); + await downloadImage(media, Table.series); } - const media = { - code: mediaCode, - title: mData.Title, - released: mData.Released, - webImg: mData.Poster, - }; - res.status(201).json(media); - await downloadImage(mData, cleanCode); - } catch (err) { return res.status(500).json({ message: 'Error when creating media' }); } @@ -160,7 +154,8 @@ async function createGame(req: Request, res: Response) { ) const coverData = await response.json() - const game = { + const game: Media = { + id: 0, code: gameCode, title: gameData[0].name, released: dateStr, diff --git a/models/mediaModel.ts b/models/mediaModel.ts index 9db8ad9..204cbe7 100644 --- a/models/mediaModel.ts +++ b/models/mediaModel.ts @@ -1,12 +1,12 @@ import pool from 'miscellaneous/db' -class Media { - id?: number; - code?: number; - title?: string; - released?: string; - webImg?: string; +export class Media { + id!: number; + code!: number; + title!: string; + released!: string; + webImg!: string; } export enum Table {