diff --git a/src/controllers/cardImageController.js b/src/controllers/cardImageController.js index d9de604..64e929b 100644 --- a/src/controllers/cardImageController.js +++ b/src/controllers/cardImageController.js @@ -1,12 +1,12 @@ const db = require('../config/db'); const axios = require('axios'); + async function getCardImage(req, res) { const { cardId } = req.params; try { - // Check if blob exists const [rows] = await db.execute( - 'SELECT image_data, image_url FROM card_images WHERE card_id = ? LIMIT 1', + 'SELECT image_id, image_data, image_url FROM card_images WHERE card_id = ? LIMIT 1', [cardId] ); @@ -17,26 +17,20 @@ async function getCardImage(req, res) { const cardImage = rows[0]; if (cardImage.image_data) { - // Blob exists → return as base64 const base64Image = cardImage.image_data.toString('base64'); return res.json({ image: `data:image/png;base64,${base64Image}` }); } - // Blob does not exist → download from URL if (!cardImage.image_url) { return res.status(404).json({ error: 'No image URL available for this card' }); } - const response = await axios.get(cardImage.image_url, { - responseType: 'arraybuffer' - }); - + const response = await axios.get(cardImage.image_url, { responseType: 'arraybuffer' }); const imageBuffer = Buffer.from(response.data, 'binary'); - // Save blob to DB await db.execute( - 'UPDATE card_images SET image_data = ? WHERE card_id = ?', - [imageBuffer, cardId] + 'UPDATE card_images SET image_data = ? WHERE image_id = ?', + [imageBuffer, cardImage.image_id] ); const base64Image = imageBuffer.toString('base64'); diff --git a/src/controllers/importController.js b/src/controllers/importController.js index 9af6440..dea07a4 100644 --- a/src/controllers/importController.js +++ b/src/controllers/importController.js @@ -120,10 +120,10 @@ async function importCardsInternal() { if (Array.isArray(card.card_images)) { for (const img of card.card_images) { await conn.execute(` - INSERT INTO card_images (card_id, image_url) - VALUES (?, ?) + INSERT INTO card_images (image_id, card_id, image_url) + VALUES (?, ?, ?) ON DUPLICATE KEY UPDATE image_url = VALUES(image_url) - `, [card.id, img.image_url]); + `, [img.id, card.id, img.image_url]); addedImages++; } } diff --git a/src/models/cardImageModel.js b/src/models/cardImageModel.js index 5e85fb4..b91f0f7 100644 --- a/src/models/cardImageModel.js +++ b/src/models/cardImageModel.js @@ -1,13 +1,12 @@ const db = require('../config/db'); async function insertCardImage(image) { - const { card_id, image_url } = image; - - const sql = ` - INSERT INTO card_images (card_id, image_url) - VALUES (?, ?) - `; - await db.execute(sql, [card_id, image_url]); + const { image_id, card_id, image_url } = image; + await db.execute(` + INSERT INTO card_images (image_id, card_id, image_url) + VALUES (?, ?, ?) + ON DUPLICATE KEY UPDATE image_url = VALUES(image_url) + `, [image_id, card_id, image_url]); } -module.exports = { insertCardImage }; \ No newline at end of file +module.exports = { insertCardImage };