Add image_ids to card export, support imageId query param for artwork fetching
ci/woodpecker/push/woodpecker Pipeline was successful

This commit is contained in:
2026-05-15 22:02:45 +02:00
parent 5e1c2558e7
commit 382d0ffd43
2 changed files with 19 additions and 5 deletions
+10 -4
View File
@@ -3,12 +3,18 @@ const axios = require('axios');
async function getCardImage(req, res) { async function getCardImage(req, res) {
const { cardId } = req.params; const { cardId } = req.params;
const { imageId } = req.query;
try { try {
const [rows] = await db.execute( const [rows] = imageId
'SELECT image_id, image_data, image_url FROM card_images WHERE card_id = ? LIMIT 1', ? await db.execute(
[cardId] 'SELECT image_id, image_data, image_url FROM card_images WHERE card_id = ? AND image_id = ? LIMIT 1',
); [cardId, imageId]
)
: await db.execute(
'SELECT image_id, image_data, image_url FROM card_images WHERE card_id = ? LIMIT 1',
[cardId]
);
if (rows.length === 0) { if (rows.length === 0) {
return res.status(404).json({ error: 'Card image not found' }); return res.status(404).json({ error: 'Card image not found' });
+9 -1
View File
@@ -41,8 +41,13 @@ async function exportCards(req, res) {
cardIds cardIds
); );
const [images] = await db.execute(
`SELECT card_id, image_id FROM card_images WHERE card_id IN (${placeholders}) ORDER BY image_id ASC`,
cardIds
);
const cardMap = {}; const cardMap = {};
cards.forEach(card => { cardMap[card.id] = { ...card, printings: [] }; }); cards.forEach(card => { cardMap[card.id] = { ...card, printings: [], image_ids: [] }; });
printings.forEach(p => { printings.forEach(p => {
if (cardMap[p.card_id]) { if (cardMap[p.card_id]) {
cardMap[p.card_id].printings.push({ cardMap[p.card_id].printings.push({
@@ -56,6 +61,9 @@ async function exportCards(req, res) {
}); });
} }
}); });
images.forEach(img => {
if (cardMap[img.card_id]) cardMap[img.card_id].image_ids.push(img.image_id);
});
res.json(Object.values(cardMap)); res.json(Object.values(cardMap));
} catch (err) { } catch (err) {