32 lines
1.1 KiB
JavaScript
32 lines
1.1 KiB
JavaScript
|
|
/**
|
||
|
|
* Migration 003 — 前台展示字段
|
||
|
|
*
|
||
|
|
* - is_public: 是否在前台展示 (0/1, 默认 1)
|
||
|
|
* - is_featured: 是否推荐 (0/1, 默认 0)
|
||
|
|
* - sort_order: 排序值 (数字越小越靠前, 默认 100)
|
||
|
|
*/
|
||
|
|
const Database = require('better-sqlite3');
|
||
|
|
const path = require('path');
|
||
|
|
require('dotenv').config({ path: path.join(__dirname, '..', '.env') });
|
||
|
|
|
||
|
|
const dbPath = path.resolve(__dirname, '..', process.env.DB_PATH || 'db/monitor.sqlite');
|
||
|
|
const db = new Database(dbPath);
|
||
|
|
db.pragma('journal_mode = WAL');
|
||
|
|
|
||
|
|
function ensureColumn(table, column, sql) {
|
||
|
|
const cols = db.prepare(`PRAGMA table_info(${table})`).all().map(c => c.name);
|
||
|
|
if (!cols.includes(column)) {
|
||
|
|
db.exec(`ALTER TABLE ${table} ADD COLUMN ${sql}`);
|
||
|
|
console.log(`+ ${table}.${column}`);
|
||
|
|
} else {
|
||
|
|
console.log(` ${table}.${column} (already exists)`);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
ensureColumn('products', 'is_public', 'is_public INTEGER DEFAULT 1');
|
||
|
|
ensureColumn('products', 'is_featured', 'is_featured INTEGER DEFAULT 0');
|
||
|
|
ensureColumn('products', 'sort_order', 'sort_order INTEGER DEFAULT 100');
|
||
|
|
|
||
|
|
console.log('✅ migration-003 done:', dbPath);
|
||
|
|
db.close();
|