Files
myDrive/serverUtils/removeOldPersonalData.js
2020-11-23 21:51:08 -05:00

79 lines
2.1 KiB
JavaScript

const getEnvVariables = require("../dist/enviroment/getEnvVariables");
getEnvVariables()
const mongoose = require("./mongoServerUtil");
const conn = mongoose.connection;
const Thumbnail = require("../dist/models/thumbnail");
const File = require("../dist/models/file");
const User = require('../dist/models/user');
const DAY_LIMIT = 0;
const waitForDatabase = () => {
return new Promise((resolve, reject) => {
if (conn.readyState !== 1) {
conn.once("open", () => {
resolve();
})
} else {
resolve();
}
})
}
const removePersonalMetadata = async(user) => {
const fileList = await conn.db.collection("fs.files").find({
"metadata.owner": user._id,
"metadata.personalFile": true,
}).toArray();
for (let currentFile of fileList) {
await File.deleteOne({_id: currentFile._id});
if (currentFile.metadata.hasThumbnail) {
await Thumbnail.deleteOne({_id: currentFile.metadata.thumbnailID})
}
}
await conn.db.collection("folders").deleteMany({'owner': user._id.toString(), 'personalFolder': true})
}
const removeOldPeronsalData = async() => {
console.log("Waiting for mongoDB Database...");
await waitForDatabase();
console.log("MongoDB Connection established\n");
const userList = await User.find({'personalStorageCanceledDate': {$exists: true}});
console.log('user list', userList.length);
for (const currentUser of userList) {
let date = new Date(currentUser.personalStorageCanceledDate);
date.setDate(date.getDate() + DAY_LIMIT);
const nowDate = new Date();
if (date.getTime() <= nowDate) {
console.log(`\nUser ${currentUser.email} over expire limit for personal data, deleting metadata...`);
await removePersonalMetadata(currentUser);
console.log(`Removed user ${currentUser.email} personal metadata successfully`);
}
}
console.log('\nFinished removing expired personal metadata')
process.exit();
}
removeOldPeronsalData();