const pool = require('./db'); const bcrypt = require('bcryptjs'); async function migrate() { try { console.log('Starting migration...'); // 1. Create users table await pool.query(` CREATE TABLE IF NOT EXISTS users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) `); console.log('users table ensured.'); // 2. Add default admin user if no users exist const [users] = await pool.query('SELECT * FROM users'); if (users.length === 0) { const hashedPassword = await bcrypt.hash('123456', 10); await pool.query('INSERT INTO users (username, password) VALUES (?, ?)', ['admin', hashedPassword]); console.log('Default admin user created.'); } // 3. Add category column to endpoints if it doesn't exist const [columns] = await pool.query(`SHOW COLUMNS FROM endpoints LIKE 'category'`); if (columns.length === 0) { await pool.query(`ALTER TABLE endpoints ADD COLUMN category VARCHAR(50) DEFAULT '旗舰版PP' AFTER name`); console.log('Added category column to endpoints table.'); } else { console.log('category column already exists in endpoints.'); } console.log('Migration completed successfully.'); process.exit(0); } catch (error) { console.error('Migration failed:', error); process.exit(1); } } migrate();