Remove stale cards during import that no longer exist in YGOPRODeck
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
@@ -173,9 +173,23 @@ async function importCardsInternal() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Remove cards that no longer exist in the API
|
||||||
|
const apiCardIds = new Set(cards.map(c => c.id));
|
||||||
|
const staleIds = existingCards.map(r => r.id).filter(id => !apiCardIds.has(id));
|
||||||
|
if (staleIds.length) {
|
||||||
|
for (let i = 0; i < staleIds.length; i += 500) {
|
||||||
|
const chunk = staleIds.slice(i, i + 500);
|
||||||
|
const placeholders = chunk.map(() => '?').join(',');
|
||||||
|
await db.execute(`DELETE FROM card_images WHERE card_id IN (${placeholders})`, chunk);
|
||||||
|
await db.execute(`DELETE FROM card_sets_rarity WHERE card_id IN (${placeholders})`, chunk);
|
||||||
|
await db.execute(`DELETE FROM cards WHERE id IN (${placeholders})`, chunk);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
total_cards: cards.length,
|
total_cards: cards.length,
|
||||||
cards_added: addedCards,
|
cards_added: addedCards,
|
||||||
|
cards_removed: staleIds.length,
|
||||||
images_added: addedImages,
|
images_added: addedImages,
|
||||||
set_rarities_added: addedSetRarities,
|
set_rarities_added: addedSetRarities,
|
||||||
duration_seconds: parseFloat(((Date.now() - startTime) / 1000).toFixed(2)),
|
duration_seconds: parseFloat(((Date.now() - startTime) / 1000).toFixed(2)),
|
||||||
|
|||||||
Reference in New Issue
Block a user