feat: apply UI/storage/share optimizations and quota improvements
This commit is contained in:
@@ -53,21 +53,20 @@ class StorageUsageCache {
|
||||
*/
|
||||
static async updateUsage(userId, deltaSize) {
|
||||
try {
|
||||
// 使用 SQL 原子操作,避免并发问题
|
||||
const result = UserDB.update(userId, {
|
||||
// 使用原始 SQL,因为 update 方法不支持表达式
|
||||
// 注意:这里需要在数据库层执行 UPDATE ... SET storage_used = storage_used + ?
|
||||
});
|
||||
const numericDelta = Number(deltaSize);
|
||||
if (!Number.isFinite(numericDelta)) {
|
||||
throw new Error('deltaSize 必须是有效数字');
|
||||
}
|
||||
|
||||
// 直接执行 SQL 更新
|
||||
// 直接执行 SQL 原子更新,并保证不小于 0
|
||||
const { db } = require('../database');
|
||||
db.prepare(`
|
||||
UPDATE users
|
||||
SET storage_used = storage_used + ?
|
||||
SET storage_used = MAX(COALESCE(storage_used, 0) + ?, 0)
|
||||
WHERE id = ?
|
||||
`).run(deltaSize, userId);
|
||||
`).run(numericDelta, userId);
|
||||
|
||||
console.log(`[存储缓存] 用户 ${userId} 存储变化: ${deltaSize > 0 ? '+' : ''}${deltaSize} 字节`);
|
||||
console.log(`[存储缓存] 用户 ${userId} 存储变化: ${numericDelta > 0 ? '+' : ''}${numericDelta} 字节`);
|
||||
return true;
|
||||
} catch (error) {
|
||||
console.error('[存储缓存] 更新失败:', error);
|
||||
|
||||
Reference in New Issue
Block a user