diff --git a/controllers/mediaController.ts b/controllers/mediaController.ts index 8a775cb..7962386 100644 --- a/controllers/mediaController.ts +++ b/controllers/mediaController.ts @@ -25,16 +25,6 @@ async function createMed(req: Request, res: Response) { try { - const seriesFound = await MediaModel.findOne(Table.series, cleanCode); - if (seriesFound.length != 0) { - return res.status(409).json({ message: 'Media already exists' }); - } - - const moviesFound = await MediaModel.findOne(Table.movies, cleanCode); - if (moviesFound.length != 0) { - return res.status(409).json({ message: 'Media already exists' }); - } - const uri = `http://www.omdbapi.com/?i=${mediaCode}&apikey=${omdb_key}`; const mJson = await fetch(uri); const mData = await mJson.json(); @@ -43,12 +33,17 @@ async function createMed(req: Request, res: Response) { return res.status(404).json({ message: 'wrong code' }); } - const media = { - code: mediaCode, - title: mData.Title, - released: mData.Released, - webImg: mData.Poster, - }; + const seriesFound = await MediaModel.findOne(Table.series, cleanCode); + if (seriesFound.length != 0) { + await MediaModel.updateWebImg(Table.series, cleanCode, mData.Poster); + return res.status(409).json({ message: 'Media already exists' }); + } + + const moviesFound = await MediaModel.findOne(Table.movies, cleanCode); + if (moviesFound.length != 0) { + await MediaModel.updateWebImg(Table.movies, cleanCode, mData.Poster); + return res.status(409).json({ message: 'Media already exists' }); + } if (mData.Type.localeCompare("movie") == 0) { const savedMedia = await MediaModel.save(Table.movies, cleanCode, mData.Title, mData.Released, mData.Poster); @@ -57,6 +52,13 @@ async function createMed(req: Request, res: Response) { const savedMedia = await MediaModel.save(Table.series, cleanCode, mData.Title, mData.Released, mData.Poster); } + const media = { + code: mediaCode, + title: mData.Title, + released: mData.Released, + webImg: mData.Poster, + }; + return res.status(201).json(media); } catch (err) { return res.status(500).json({ message: 'Error when creating media' }); diff --git a/models/mediaModel.ts b/models/mediaModel.ts index cbfbe4b..c42f67d 100644 --- a/models/mediaModel.ts +++ b/models/mediaModel.ts @@ -31,6 +31,21 @@ async function save(table: Table, code: number, title: string, released: string, return 0; } +async function updateWebImg(table: Table, code: number, webImg: string): Promise { + try { + const options: QueryOptions = { + sql: "UPDATE " + table + "SET webImg = ? WHERE code = ?;", + values: [webImg, code] + }; + const [result, fields] = await pool.query(options); + return result.affectedRows; + } + catch (err) { + console.log(err); + } + return 0; +} + async function findOneAndDelete(table: Table, code: number): Promise { try { const [result, fields] = await pool.query("DELETE FROM " + table + " WHERE code = ?;", [code]); @@ -66,6 +81,7 @@ async function find(table: Table): Promise { export default { save, + updateWebImg, findOneAndDelete, findOne, find