迁移播放记录到新数据结构,新增自动清理播放记录

This commit is contained in:
mtvpls
2025-12-30 21:00:10 +08:00
parent 6ad268d319
commit f43d9c7d0e
7 changed files with 381 additions and 29 deletions
@@ -201,6 +201,13 @@ export async function POST(req: NextRequest) {
}
}
}
// 标记播放记录已迁移(新导入的数据直接使用hash结构)
const storage = (db as any).storage;
if (storage && typeof storage.client?.hSet === 'function') {
const userInfoKey = `user:${username}:info`;
await storage.client.hSet(userInfoKey, 'playrecord_migrated', 'true');
}
}
return NextResponse.json({
+11
View File
@@ -26,6 +26,12 @@ export async function GET(request: NextRequest) {
if (userInfoV2.banned) {
return NextResponse.json({ error: '用户已被封禁' }, { status: 401 });
}
// 检查播放记录迁移标识,没有迁移标识时执行迁移
if (!userInfoV2.playrecord_migrated) {
console.log(`用户 ${authInfo.username} 播放记录未迁移,开始执行迁移...`);
await db.migratePlayRecords(authInfo.username);
}
}
const records = await db.getAllPlayRecords(authInfo.username);
@@ -92,6 +98,11 @@ export async function POST(request: NextRequest) {
await db.savePlayRecord(authInfo.username, source, id, finalRecord);
// 异步清理旧的播放记录(不阻塞响应)
(db as any).storage.cleanupOldPlayRecords(authInfo.username).catch((err: Error) => {
console.error('异步清理播放记录失败:', err);
});
return NextResponse.json({ success: true }, { status: 200 });
} catch (err) {
console.error('保存播放记录失败', err);