require('dotenv').config(); const mysql = require('mysql2/promise'); (async () => { const conn = await mysql.createConnection({ host: process.env.DB_HOST, port: process.env.DB_PORT, user: process.env.DB_USER, password: process.env.DB_PASSWORD, database: process.env.DB_NAME }); const [packages] = await conn.execute('SELECT id, name, category FROM material_packages WHERE is_active = 1 ORDER BY id'); const [withMaterials] = await conn.execute('SELECT DISTINCT package_id FROM package_materials'); const materialPackageIds = new Set(withMaterials.map(r => r.package_id)); const [withTasks] = await conn.execute('SELECT DISTINCT package_id FROM package_tasks'); const taskPackageIds = new Set(withTasks.map(r => r.package_id)); const pkgsNoMaterials = packages.filter(p => !materialPackageIds.has(p.id)); const pkgsNoTasks = packages.filter(p => !taskPackageIds.has(p.id)); const complete = packages.filter(p => materialPackageIds.has(p.id) && taskPackageIds.has(p.id)); console.log('❌ PAKKER UDEN MATERIALER:'); console.log(pkgsNoMaterials.length + ' pakker mangler materialer:\n'); pkgsNoMaterials.forEach(p => console.log(' ID ' + p.id + ': ' + p.name + ' (' + p.category + ')')); console.log('\n\n❌ PAKKER UDEN OPGAVER:'); console.log(pkgsNoTasks.length + ' pakker mangler opgaver:\n'); pkgsNoTasks.forEach(p => console.log(' ID ' + p.id + ': ' + p.name + ' (' + p.category + ')')); console.log('\n\n✅ PAKKER MED BÅDE MATERIALER OG OPGAVER:'); console.log(complete.length + ' komplette pakker:\n'); complete.forEach(p => console.log(' ID ' + p.id + ': ' + p.name)); await conn.end(); })();