Cài đặt quota cho các thành viên
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
const mongoose = require('mongoose');
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
const connectDB = require('../config/db');
|
||||
const Asset = require('../models/Asset');
|
||||
|
||||
/**
|
||||
* Script cập nhật bổ sung trường fileSize cho các Asset cũ
|
||||
* Giúp tối ưu hóa việc kiểm tra Quota và thống kê dung lượng
|
||||
*/
|
||||
const fixAssetFileSize = async () => {
|
||||
try {
|
||||
console.log('=== BẮT ĐẦU CẬP NHẬT KÍCH THƯỚC FILE CHO ASSET ===');
|
||||
await connectDB();
|
||||
|
||||
// 1. Tìm các Asset chưa có trường fileSize hoặc fileSize bằng null/0
|
||||
const assetsToFix = await Asset.find({
|
||||
$or: [
|
||||
{ fileSize: { $exists: false } },
|
||||
{ fileSize: null },
|
||||
{ fileSize: 0 }
|
||||
]
|
||||
});
|
||||
|
||||
console.log(`- Tìm thấy ${assetsToFix.length} bản ghi cần cập nhật.`);
|
||||
|
||||
let successCount = 0;
|
||||
let errorCount = 0;
|
||||
let missingFileCount = 0;
|
||||
|
||||
for (const asset of assetsToFix) {
|
||||
if (asset.filePath && fs.existsSync(asset.filePath)) {
|
||||
try {
|
||||
const stats = fs.statSync(asset.filePath);
|
||||
asset.fileSize = stats.size;
|
||||
await asset.save();
|
||||
successCount++;
|
||||
|
||||
if (successCount % 10 === 0) {
|
||||
console.log(` [Progress] Đã cập nhật ${successCount} file...`);
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(` [Lỗi] Không thể đọc stats cho Asset ${asset._id}: ${err.message}`);
|
||||
errorCount++;
|
||||
}
|
||||
} else {
|
||||
console.warn(` [Cảnh báo] Không tìm thấy file vật lý cho Asset ${asset._id}: ${asset.filePath}`);
|
||||
missingFileCount++;
|
||||
}
|
||||
}
|
||||
|
||||
console.log('\n=== TỔNG KẾT QUÁ TRÌNH ===');
|
||||
console.log(`- Thành công: ${successCount}`);
|
||||
console.log(`- Lỗi đọc file: ${errorCount}`);
|
||||
console.log(`- File không tồn tại trên đĩa: ${missingFileCount}`);
|
||||
console.log('==========================================');
|
||||
|
||||
mongoose.connection.close();
|
||||
process.exit(0);
|
||||
} catch (error) {
|
||||
console.error('Lỗi nghiêm trọng:', error.message);
|
||||
process.exit(1);
|
||||
}
|
||||
};
|
||||
|
||||
fixAssetFileSize();
|
||||
Reference in New Issue
Block a user