import mysql from 'mysql2/promise'; import dotenv from 'dotenv'; dotenv.config(); const connection = await mysql.createConnection({ host: process.env.DB_HOST, user: process.env.DB_USER, password: process.env.DB_PASSWORD, database: process.env.DB_NAME }); console.log('=== Seeding Packages ===\n'); const packages = [ { id: 'basis', name: 'Basis Pakke', menuId: 'klassisk-3-retter', pricePerCover: 295, minCovers: 15, maxCovers: 30, includes: [ 'Menu planlægning', 'Indkøb af råvarer', 'Madlavning på lokation', 'Let oprydning i køkken' ], upsells: [ { id: 'anretning', label: 'Tallerkenanretning', priceFlat: 500 }, { id: 'kaffe', label: 'Kaffe/te', pricePerCover: 25 } ], notes: 'God basis løsning til familiefester. Maden serveres på fade, hvor gæsterne selv tager.' }, { id: 'basis-gron', name: 'Basis Pakke', menuId: 'gron-3-retter', pricePerCover: 275, minCovers: 15, maxCovers: 30, includes: [ 'Menu planlægning', 'Indkøb af råvarer', 'Madlavning på lokation', 'Let oprydning i køkken' ], upsells: [ { id: 'anretning', label: 'Tallerkenanretning', priceFlat: 500 }, { id: 'kaffe', label: 'Kaffe/te', pricePerCover: 25 } ], notes: 'God basis løsning til familiefester. Maden serveres på fade, hvor gæsterne selv tager.' }, { id: 'basis-italiensk', name: 'Basis Pakke', menuId: 'italiensk-aften', pricePerCover: 250, minCovers: 15, maxCovers: 30, includes: [ 'Menu planlægning', 'Indkøb af råvarer', 'Madlavning på lokation', 'Let oprydning i køkken' ], upsells: [ { id: 'anretning', label: 'Tallerkenanretning', priceFlat: 500 }, { id: 'kaffe', label: 'Kaffe/te', pricePerCover: 25 } ], notes: 'God basis løsning til familiefester. Maden serveres \'family style\' på fade.' }, { id: 'service', name: 'Service Pakke', menuId: 'klassisk-3-retter', pricePerCover: 395, minCovers: 20, maxCovers: 50, includes: [ 'Menu planlægning', 'Indkøb af råvarer', 'Madlavning på lokation', 'Tallerkenanretning', 'Professionel servering', 'Fuld oprydning' ], upsells: [ { id: 'velkomst', label: 'Velkomstdrink & snacks', pricePerCover: 45 }, { id: 'vinmenu', label: 'Vinmenu (3 glas)', pricePerCover: 225 }, { id: 'kaffe', label: 'Kaffe/te med sødt', pricePerCover: 35 } ], notes: 'Komplet løsning med personlig service og professionel servering.' }, { id: 'gourmet', name: 'Gourmet Pakke', menuId: 'gourmet-upgrade', pricePerCover: 595, minCovers: 10, maxCovers: 30, includes: [ 'Menu planlægning', 'Indkøb af kvalitetsråvarer', 'Madlavning på lokation', 'Tallerkenanretning', 'Professionel servering', 'Vinmenu (3 glas)', 'Kaffe med sødt', 'Fuld oprydning' ], upsells: [ { id: 'champagne', label: 'Champagne velkomst', pricePerCover: 95 }, { id: 'ekstravin', label: 'Ekstra glas vin', pricePerCover: 75 }, { id: 'natmad', label: 'Let natmad', pricePerCover: 75 } ], notes: 'Eksklusiv løsning til de særlige anledninger med gourmetmenu og vinmenu inkluderet.' } ]; try { console.log(`Inserting ${packages.length} packages...\n`); for (const pkg of packages) { await connection.execute(` INSERT INTO packages ( id, name, menu_id, price_per_cover, min_covers, max_covers, includes, upsells, notes ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE name = VALUES(name), menu_id = VALUES(menu_id), price_per_cover = VALUES(price_per_cover), min_covers = VALUES(min_covers), max_covers = VALUES(max_covers), includes = VALUES(includes), upsells = VALUES(upsells), notes = VALUES(notes) `, [ pkg.id, pkg.name, pkg.menuId, pkg.pricePerCover, pkg.minCovers, pkg.maxCovers, JSON.stringify(pkg.includes), JSON.stringify(pkg.upsells), pkg.notes ]); console.log(`✓ ${pkg.name} (${pkg.menuId}) - ${pkg.pricePerCover} kr/person`); } // Show summary const [packageCount] = await connection.execute('SELECT COUNT(*) as count FROM packages'); console.log('\n=== Database Summary ==='); console.log(`Packages: ${packageCount[0].count}`); console.log('\n✅ Seed completed successfully!'); } catch (error) { console.error('❌ Seed failed:', error); process.exit(1); } finally { await connection.end(); }