diff --git a/backend/Controllers/collection.controller.js b/backend/Controllers/collection.controller.js index d81140faf..6f9bcfd8e 100644 --- a/backend/Controllers/collection.controller.js +++ b/backend/Controllers/collection.controller.js @@ -42,7 +42,7 @@ export const saveProject = async (req, res) => { if(existingProject) return res.status(400).json("Project already exists in this collection"); // Case 1: No collection exists → save in 'default-collection' and save the project - if (existingCollection.length === 0) { + if (!existingCollection) { const newCollection = new Collection( { userID, @@ -58,7 +58,6 @@ export const saveProject = async (req, res) => { } // Case 2: Try to update empty project_id - in case of manula creation,we had project_is null, so here we try to update that id for that document, to use this document and avoid redudancy in the collection - const emptySlot = await Collection.findOneAndUpdate( { userID, collection_name, project_id: null }, { $set: { project_id } }, @@ -114,3 +113,23 @@ export const deleteProject = async(req,res)=>{ } } +//delete an entire collection and all existing projects in it +export const deleteCollection = async(req,res)=>{ + try{ + const userID =req.user; + const {collection_name} = req.body; + const existingUser = await User.findById(userID); + if(!existingUser) return res.status(404).json("User not found"); + + await Collection.deleteMany( + { + userID:userID, + collection_name:collection_name + } + ); + return res.status(200).json("Collection deleted successfully"); + }catch(err){ + return res.status(400).json(err); + } +} + diff --git a/backend/Routes/api/collections.routes.js b/backend/Routes/api/collections.routes.js index 36be63e0f..8b48fc28d 100644 --- a/backend/Routes/api/collections.routes.js +++ b/backend/Routes/api/collections.routes.js @@ -1,10 +1,11 @@ import express from 'express'; -import { createNewCollection, deleteProject, saveProject} from '../../Controllers/collection.controller.js'; +import { createNewCollection, deleteCollection, deleteProject, saveProject} from '../../Controllers/collection.controller.js'; import { authenticateUser } from '../../Middlewares/auth.middleware.js'; const collectionRoutes = express.Router(); collectionRoutes.post("/create-collection", authenticateUser, createNewCollection); collectionRoutes.post("/:id", authenticateUser, saveProject); collectionRoutes.delete("/saved-projects", authenticateUser, deleteProject); +collectionRoutes.delete("/", authenticateUser, deleteCollection); export default collectionRoutes; diff --git a/backend/Routes/index.js b/backend/Routes/index.js index 594034f6e..340b80368 100644 --- a/backend/Routes/index.js +++ b/backend/Routes/index.js @@ -6,6 +6,7 @@ import projectRoutes from './api/project.routes.js'; import notificationRoutes from './api/notification.routes.js'; import subscriberRoutes from './api/subscriber.routes.js'; import collectionRoutes from './api/collections.routes.js'; + import collaborationRoutes from './api/collaboration.routes.js'; import { authMiddleware, generalMiddleware } from '../Middlewares/rateLimit/index.js'; diff --git a/backend/package.json b/backend/package.json index fc11f01a0..9d1f2e127 100644 --- a/backend/package.json +++ b/backend/package.json @@ -42,5 +42,7 @@ "nodemon": "^3.1.10" }, "description": "" + } + }