import mysql from 'mysql2/promise'; const DB_URL = process.env.DATABASE_URL; if (!DB_URL) { console.error('DATABASE_URL not set'); process.exit(1); } const match = DB_URL.match(/mysql:\/\/([^:]+):([^@]+)@([^:]+):(\d+)\/([^?]+)/); const [, user, password, host, port, database] = match; const conn = await mysql.createConnection({ host, port: parseInt(port), user, password, database, ssl: { rejectUnauthorized: false } }); // CDN URLs for all AGS/PlayGD games const updates = [ // AGS Fire Link games { name: 'Ultra Blazing Fire Link', iconUrl: 'https://d2xsxph8kpxj0f.cloudfront.net/310519663467917392/38mmEpDjJeLLr6ocaGW5p5/ultra-blazing-fire-link_7527404b.jpg' }, { name: 'North Shore', iconUrl: 'https://d2xsxph8kpxj0f.cloudfront.net/310519663467917392/38mmEpDjJeLLr6ocaGW5p5/north-shore_9138f4e8.jpg' }, { name: 'By The Bay', iconUrl: 'https://d2xsxph8kpxj0f.cloudfront.net/310519663467917392/38mmEpDjJeLLr6ocaGW5p5/slot-bythebay_2dbc51c0.webp' }, { name: 'China Street', iconUrl: 'https://d2xsxph8kpxj0f.cloudfront.net/310519663467917392/38mmEpDjJeLLr6ocaGW5p5/north-shore_9138f4e8.jpg' }, // Use fire link generic { name: 'Glacier Gold', iconUrl: 'https://d2xsxph8kpxj0f.cloudfront.net/310519663467917392/38mmEpDjJeLLr6ocaGW5p5/glacier-gold_d1aa9763.jpg' }, { name: 'Olvera Street', iconUrl: 'https://d2xsxph8kpxj0f.cloudfront.net/310519663467917392/38mmEpDjJeLLr6ocaGW5p5/ultra-blazing-fire-link_7527404b.jpg' }, // Use fire link generic { name: 'River Walk', iconUrl: 'https://d2xsxph8kpxj0f.cloudfront.net/310519663467917392/38mmEpDjJeLLr6ocaGW5p5/slot-riverwalk_5a5c41cf.png' }, { name: 'Route 66', iconUrl: 'https://d2xsxph8kpxj0f.cloudfront.net/310519663467917392/38mmEpDjJeLLr6ocaGW5p5/ultra-blazing-fire-link_7527404b.jpg' }, // Use fire link generic { name: 'Rue Royale', iconUrl: 'https://d2xsxph8kpxj0f.cloudfront.net/310519663467917392/38mmEpDjJeLLr6ocaGW5p5/ultra-blazing-fire-link_7527404b.jpg' }, // Use fire link generic // PlayGD arcade games { name: 'Monster Frenzy', iconUrl: 'https://d2xsxph8kpxj0f.cloudfront.net/310519663467917392/38mmEpDjJeLLr6ocaGW5p5/monster-frenzy_cddc6ec9.jpg' }, { name: 'Aladdin Adventure', iconUrl: 'https://d2xsxph8kpxj0f.cloudfront.net/310519663467917392/38mmEpDjJeLLr6ocaGW5p5/aladdin-adventure_39158371.jpg' }, { name: 'Fish Hunter Ghost', iconUrl: 'https://d2xsxph8kpxj0f.cloudfront.net/310519663467917392/38mmEpDjJeLLr6ocaGW5p5/fish-hunter_53760e9c.jpg' }, { name: 'Fish Hunter King Kong', iconUrl: 'https://d2xsxph8kpxj0f.cloudfront.net/310519663467917392/38mmEpDjJeLLr6ocaGW5p5/fish-hunter_53760e9c.jpg' }, ]; let updated = 0; for (const { name, iconUrl } of updates) { const [result] = await conn.execute( `UPDATE all_games SET iconUrl = ? WHERE gameName LIKE ? AND provider IN ('AGS', 'PlayGD')`, [iconUrl, `%${name}%`] ); if (result.affectedRows > 0) { console.log(`✓ Updated: ${name}`); updated++; } else { console.log(`✗ Not found: ${name}`); } } // Also fix the hasIcon flag for all updated games await conn.execute( `UPDATE all_games SET hasIcon = 1 WHERE provider IN ('AGS', 'PlayGD') AND iconUrl IS NOT NULL AND iconUrl != ''` ); console.log(`\nUpdated ${updated}/${updates.length} games`); await conn.end();