feat: merge V1.3 CMS content support
This commit is contained in:
@@ -31,7 +31,7 @@ export async function initDB() {
|
||||
await ensureDatabase();
|
||||
pool = mysql.createPool({ host: DB_HOST, port: DB_PORT, user: DB_USER, password: DB_PASSWORD, database: DB_NAME, charset: 'utf8mb4', waitForConnections: true, connectionLimit: Number(process.env.DB_CONNECTION_LIMIT || 10), timezone: 'Z' });
|
||||
const tables = [
|
||||
`CREATE TABLE IF NOT EXISTS global_config (id INTEGER PRIMARY KEY CHECK (id = 1), site_title TEXT, slogan TEXT, seo_title TEXT, seo_desc TEXT, seo_keywords TEXT, hotline TEXT, contact_email TEXT, contact_address TEXT, cta_text TEXT, cta_link TEXT, updated_at TEXT)`,
|
||||
`CREATE TABLE IF NOT EXISTS global_config (id INTEGER PRIMARY KEY CHECK (id = 1), site_title TEXT, slogan TEXT, seo_title TEXT, seo_desc TEXT, seo_keywords TEXT, hotline TEXT, contact_email TEXT, contact_address TEXT, cta_text TEXT, cta_link TEXT, qr_image_url TEXT, qr_target_url TEXT, qr_label TEXT, updated_at TEXT)`,
|
||||
`CREATE TABLE IF NOT EXISTS home_sections (id TEXT PRIMARY KEY, \`key\` TEXT UNIQUE, title TEXT, subtitle TEXT, summary TEXT, visible INTEGER DEFAULT 1, sort_order INTEGER DEFAULT 0, updated_at TEXT)`,
|
||||
`CREATE TABLE IF NOT EXISTS site_texts (id VARCHAR(191) PRIMARY KEY, label TEXT, value LONGTEXT, updated_at TEXT)`,
|
||||
`CREATE TABLE IF NOT EXISTS ameba_page (id INTEGER PRIMARY KEY CHECK (id = 1), brand_position TEXT, mission TEXT, philosophy TEXT, practice TEXT, updated_at TEXT)`,
|
||||
@@ -54,6 +54,12 @@ export async function initDB() {
|
||||
`CREATE TABLE IF NOT EXISTS admins (id TEXT PRIMARY KEY, username TEXT UNIQUE, password_hash TEXT, created_at TEXT)`,
|
||||
];
|
||||
for (const table of tables) await pool.query(mysqlSchema(table));
|
||||
// CREATE TABLE IF NOT EXISTS does not add fields to an existing database.
|
||||
// Keep small additive schema upgrades here so a normal restart is enough to migrate production.
|
||||
for (const column of ['qr_image_url', 'qr_target_url', 'qr_label']) {
|
||||
const [rows] = await pool.query(`SHOW COLUMNS FROM global_config LIKE ?`, [column]);
|
||||
if (!rows.length) await pool.query(`ALTER TABLE global_config ADD COLUMN \`${column}\` LONGTEXT`);
|
||||
}
|
||||
}
|
||||
|
||||
function normalizeSql(sql) { return sql.replace(/INSERT OR IGNORE/gi, 'INSERT IGNORE'); }
|
||||
|
||||
Reference in New Issue
Block a user