fix: make CMS content live and migrate to MySQL

This commit is contained in:
Codex User
2026-09-08 15:40:34 +08:00
parent 3a99ae30c5
commit c55d5063c2
31 changed files with 557 additions and 920 deletions
+19
View File
@@ -0,0 +1,19 @@
import mysql from 'mysql2/promise';
import fs from 'fs';
import 'dotenv/config';
const input = process.env.SQLITE_EXPORT_PATH || './sqlite-export.json';
const data = JSON.parse(fs.readFileSync(input, 'utf8'));
const connection = await mysql.createConnection({ host: process.env.DB_HOST || '127.0.0.1', port: Number(process.env.DB_PORT || 33306), user: process.env.DB_USER || 'admin', password: process.env.DB_PASSWORD || '', database: process.env.DB_NAME || 'ameiba_cms', charset: 'utf8mb4' });
for (const [table, rows] of Object.entries(data)) {
for (const row of rows) {
const columns = Object.keys(row);
const escaped = columns.map(c => `\`${c}\``).join(',');
const values = columns.map(() => '?').join(',');
const updates = columns.filter(c => c !== 'id').map(c => `\`${c}\`=VALUES(\`${c}\`)`).join(',');
await connection.query(`INSERT INTO \`${table}\` (${escaped}) VALUES (${values}) ON DUPLICATE KEY UPDATE ${updates || '`id`=VALUES(`id`)'}`, columns.map(c => row[c]));
}
console.log(`${table}: ${(rows || []).length} rows`);
}
await connection.end();
console.log('MySQL import complete');