feat: 添加管理员管理和场地图片功能
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
module.exports = {
|
||||
async up(manager) {
|
||||
console.log(' - 添加奖品来源字段...');
|
||||
|
||||
// 添加source字段,默认值为purchase
|
||||
await manager.executeSql(`
|
||||
ALTER TABLE Prizes ADD COLUMN source TEXT DEFAULT 'purchase';
|
||||
`);
|
||||
|
||||
// 添加sponsor字段
|
||||
await manager.executeSql(`
|
||||
ALTER TABLE Prizes ADD COLUMN sponsor TEXT;
|
||||
`);
|
||||
|
||||
// 为现有数据设置默认值
|
||||
await manager.executeSql(`
|
||||
UPDATE Prizes SET source = 'purchase' WHERE source IS NULL;
|
||||
`);
|
||||
|
||||
console.log(' - 奖品来源字段添加完成');
|
||||
},
|
||||
|
||||
async down(manager) {
|
||||
console.log(' - 移除奖品来源字段...');
|
||||
|
||||
// SQLite不支持DROP COLUMN,需要重建表
|
||||
await manager.executeSql(`
|
||||
CREATE TABLE Prizes_backup AS SELECT
|
||||
id, activityId, name, level, description, image, quantity, sortOrder, createdAt, updatedAt
|
||||
FROM Prizes;
|
||||
`);
|
||||
|
||||
await manager.executeSql(`DROP TABLE Prizes;`);
|
||||
|
||||
await manager.executeSql(`ALTER TABLE Prizes_backup RENAME TO Prizes;`);
|
||||
|
||||
console.log(' - 奖品来源字段移除完成');
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,74 @@
|
||||
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(' - 特等奖等级移除完成');
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,12 @@
|
||||
// 添加管理员角色字段
|
||||
module.exports = {
|
||||
async up(manager) {
|
||||
console.log(' - 添加 Admins.role 字段...');
|
||||
await manager.executeSql('ALTER TABLE Admins ADD COLUMN role TEXT DEFAULT "admin";');
|
||||
console.log(' - 角色字段添加完成');
|
||||
},
|
||||
|
||||
async down(manager) {
|
||||
await manager.executeSql('ALTER TABLE Admins DROP COLUMN role;');
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,75 @@
|
||||
// 添加四等奖等级
|
||||
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(' - 四等奖等级移除完成');
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,20 @@
|
||||
/**
|
||||
* 迁移 0009: 添加进群状态字段
|
||||
* 为 Registrations 表添加 groupStatus 字段
|
||||
*/
|
||||
|
||||
module.exports = {
|
||||
async up(manager) {
|
||||
console.log(' - 添加 Registrations.groupStatus 字段...');
|
||||
await manager.executeSql(`
|
||||
ALTER TABLE Registrations ADD COLUMN groupStatus INTEGER DEFAULT 0;
|
||||
`);
|
||||
},
|
||||
|
||||
async down(manager) {
|
||||
console.log(' - 移除 Registrations.groupStatus 字段...');
|
||||
await manager.executeSql(`
|
||||
ALTER TABLE Registrations DROP COLUMN groupStatus;
|
||||
`);
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user