quanyoumi/backend/migrations/0008-add-fourth-prize-level.js

76 lines
2.3 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 添加四等奖等级
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(' - 四等奖等级移除完成');
}
};