const Upload = require('../models/Upload'); const drive = require('./driveService'); const { randomUUID } = require('crypto'); const { Readable } = require('stream'); async function createUpload(user, file) { const filename = randomUUID(); const upload = new Upload({ filename, originalFilename: file.originalname, sizeInBytes: file.size, timeOfUpload: new Date(), author: user._id }); await upload.save(); const stream = Readable.from(file.buffer); drive.saveFile(filename, stream); return upload; } async function deleteUpload(user, filename) { const upload = await Upload.findOne({ filename, author: user._id }); if (!upload) return; await upload.deleteOne(); drive.deleteFile(filename); } async function getUserUploads(user) { return await Upload.find({ author: user._id }).sort({ timeOfUpload: -1 }); } async function getUploadByFilename(filename) { return await Upload.findOne({ filename }); } async function renameUpload(user, oldFilename, newFilename) { const upload = await Upload.findOne({ filename: oldFilename, author: user._id }); if (!upload) return false; upload.originalFilename = newFilename; await upload.save(); return true; } module.exports = { createUpload, deleteUpload, getUserUploads, getUploadByFilename, renameUpload };