diff --git a/src/api/storage.js b/src/api/storage.js index 13a52d6..190adf2 100644 --- a/src/api/storage.js +++ b/src/api/storage.js @@ -38,6 +38,7 @@ function getFile(userId, fileId) { function deleteFiles(userId, fileIds) { return files.find({ _id: { $in: fileIds } }).then((databaseFiles) => { var failed = []; + var toRemove = []; filesByOwner = {}; databaseFiles.forEach((file) => { if (file.owner in filesByOwner) filesByOwner[file.owner].push(file); @@ -52,26 +53,27 @@ function deleteFiles(userId, fileIds) { filesByOwner[owner].splice(i, 1); } else deleteSize += file.size; } + fileIds = fileIds.filter((fileId) => !failed.includes(fileId)); + toRemove.concat( + databaseFiles.filter((file) => fileIds.includes(`${file._id}`)) + ); + // Update User's owned users .updateOne( - { _id: owner, usedStorage: { $gte: deleteSize } }, + { cairoId: owner, usedStorage: { $gte: deleteSize } }, { - $pull: { owned: { $in: filesByOwner[owner] } }, + $pull: { owned: { $in: fileIds } }, $inc: { usedStorage: -deleteSize, }, } ) .exec(); - fileIds = fileIds.filter((fileId) => !failed.includes(fileId)); - rfiles = databaseFiles.filter((file) => fileIds.includes(`${file._id}`)); - files - .deleteMany({ - _id: { $in: fileIds }, - }) - .exec(); - return { files: rfiles, failed }; + // Update files DB + files.deleteMany({ _id: { $in: fileIds } }).exec(); + console.log(toRemove); } + return { files: toRemove, failed }; }); } @@ -108,11 +110,11 @@ function uploadFile(cairoId, fileData) { return getUserByCairoId(cairoId).then((user) => { if (user.usedStorage + fileData.size > user.storage) return null; return users - .updateOne({ _id: cairoId }, { $inc: { usedStorage: fileData.size } }) - .then(() => createFile(user._id, fileData)) + .updateOne({ cairoId }, { $inc: { usedStorage: fileData.size } }) + .then(() => createFile(cairoId, fileData)) .then((file) => { if (file == null) return null; - users.updateOne({ _id: userId }, { $push: { owned: file._id } }).then(); + users.updateOne({ cairoId }, { $push: { owned: file._id } }).then(); return file; }); }); diff --git a/src/api/upload.js b/src/api/upload.js index 9e56e83..cf1e6cf 100644 --- a/src/api/upload.js +++ b/src/api/upload.js @@ -6,12 +6,12 @@ const multer = require("multer"); const config = require("../config.json"); //Multer Configs const userUploadStorage = multer.diskStorage({ - destination: (req, file, cb) => cb(null, userUploadDestination(req.user._id)), + destination: (req, file, cb) => cb(null, userUploadDestination(req.user.cairoId)), filename: (req, file, cb) => { const n = file.originalname.replaceAll(" ", "_"); const fileName = `${Date.now()}-${n}`; req.on("aborted", () => - cancelUpload(resolvePath(userUploadDestination(req.user._id), fileName)) + cancelUpload(resolvePath(userUploadDestination(req.user.cairoId), fileName)) ); cb(null, fileName); }, diff --git a/src/routes/stash.js b/src/routes/stash.js index 89c3a0d..25f8b52 100644 --- a/src/routes/stash.js +++ b/src/routes/stash.js @@ -38,7 +38,7 @@ const authMiddleware = (req, res, next) => { router.use(cairoMiddleware); router.get("/files", authMiddleware, (req, res) => - asUser.getOwnedFiles(req.user._id, req.user.owned).then((files) => { + asUser.getOwnedFiles(req.user.cairoId, req.user.owned).then((files) => { res.status(200).json(files); }) ); @@ -46,7 +46,7 @@ router.get("/files", authMiddleware, (req, res) => router.post("/upload", authMiddleware, (req, res) => { upload.userUpload(req, res, (err) => { if (err || req.file == null) return res.sendStatus(500); - asUser.uploadFile(req.user._id, req.file).then((file) => { + asUser.uploadFile(req.user.cairoId, req.file).then((file) => { if (file != null) return res.json(file); upload.cancelUpload(req.file.path); return res.sendStatus(500); @@ -56,7 +56,7 @@ router.post("/upload", authMiddleware, (req, res) => { router.post("/delete", authMiddleware, (req, res) => { if (!req.body || !(req.body instanceof Array)) return res.sendStatus(400); - asUser.deleteFiles(req.user._id, req.body).then((failed) => { + asUser.deleteFiles(req.user.cairoId, req.body).then((failed) => { if (!failed) return res.sendStatus(200); res.status(500).json(failed); }); @@ -65,7 +65,7 @@ router.post("/delete", authMiddleware, (req, res) => { router.get("/download", (req, res) => { if (!req.query || (!req.query.target && !req.query.zipTarget)) return res.sendStatus(404); - const userId = req.user == null ? null : req.user._id; + const userId = req.user == null ? null : req.user.cairoId; if (req.query.target) return storage.getFile(userId, req.query.target).then((file) => { if (file) return res.download(file.path); @@ -76,7 +76,7 @@ router.get("/download", (req, res) => { router.post("/public", authMiddleware, async (req, res) => { if (!req.body || !(req.body instanceof Array)) return res.sendStatus(400); - const failed = asUser.publicfyFiles(req.user._id, req.body); + const failed = asUser.publicfyFiles(req.user.cairoId, req.body); if (!failed) return res.sendStatus(200); res.status(500).json(failed); });