import categorySyncer from './category-syncer.js'; import pictureSyncer from './picture-syncer.js'; import { startServer } from './server.js'; categorySyncer.on('synced', async ({ tree, unprunedTree, changed }) => { if (changed) { console.log('šŸŽ‰ Event received: Category tree updated! Root nodes:', tree.length); } else { console.log('šŸŽ‰ Event received: Sync finished (no changes). Checking images...'); } // Extract all kBild IDs from unpruned tree (includes all categories) const imageIds = []; const traverse = (nodes) => { for (const node of nodes) { if (node.kBild) { imageIds.push(node.kBild); } if (node.children && node.children.length > 0) { traverse(node.children); } } }; traverse(unprunedTree); console.log(`šŸ” Found ${imageIds.length} images in category tree.`); await pictureSyncer.syncImages(imageIds, 'categories'); }); // Trigger immediate sync categorySyncer.triggerSync(); // Schedule periodic sync const syncInterval = parseInt(process.env.SYNC_INTERVAL_MS) || 60000; setInterval(() => { categorySyncer.triggerSync(); }, syncInterval); // Handle graceful shutdown process.on('SIGINT', () => { console.log('\nšŸ‘‹ Bye!'); process.exit(0); }); // Start Express server startServer();