module.exports = { async up(manager) { console.log(' - 添加特等奖等级...'); // SQLite不支持直接修改CHECK约束,需要重建表 // 1. 创建新表结构(包含特等奖) await manager.executeSql(` CREATE TABLE Prizes_new ( id INTEGER PRIMARY KEY AUTOINCREMENT, activityId INTEGER NOT NULL, name TEXT NOT NULL, level TEXT NOT NULL CHECK(level IN ('特等奖', '一等奖', '二等奖', '三等奖', '参与奖', '伴手礼')), description TEXT, image TEXT, quantity INTEGER DEFAULT 1, sortOrder INTEGER DEFAULT 0, source TEXT DEFAULT 'purchase', sponsor TEXT, createdAt DATETIME NOT NULL, updatedAt DATETIME NOT NULL ); `); // 2. 复制数据 await manager.executeSql(` INSERT INTO Prizes_new SELECT * FROM Prizes; `); // 3. 删除旧表 await manager.executeSql(`DROP TABLE Prizes;`); // 4. 重命名新表 await manager.executeSql(`ALTER TABLE Prizes_new RENAME TO Prizes;`); console.log(' - 特等奖等级添加完成'); }, async down(manager) { console.log(' - 移除特等奖等级...'); // 1. 创建旧表结构(不包含特等奖) await manager.executeSql(` CREATE TABLE Prizes_old ( id INTEGER PRIMARY KEY AUTOINCREMENT, activityId INTEGER NOT NULL, name TEXT NOT NULL, level TEXT NOT NULL CHECK(level IN ('一等奖', '二等奖', '三等奖', '参与奖', '伴手礼')), description TEXT, image TEXT, quantity INTEGER DEFAULT 1, sortOrder INTEGER DEFAULT 0, source TEXT DEFAULT 'purchase', sponsor TEXT, createdAt DATETIME NOT NULL, updatedAt DATETIME NOT NULL ); `); // 2. 复制数据(排除特等奖) await manager.executeSql(` INSERT INTO Prizes_old SELECT * FROM Prizes WHERE level != '特等奖'; `); // 3. 删除新表 await manager.executeSql(`DROP TABLE Prizes;`); // 4. 重命名旧表 await manager.executeSql(`ALTER TABLE Prizes_old RENAME TO Prizes;`); console.log(' - 特等奖等级移除完成'); } };