const express = require('express'); const mongoose = require('mongoose'); const Community = require('../DB/Community') const Post = require('../DB/Post') const route = express.Router(); route.get('/', async(req,res)=>{ // const community = await Community.find() // res.send(community) Community.aggregate([ { $addFields: { members_count: { $size: { "$ifNull": ["$members", []] } } } }, { $sort: { "members_count": -1 } } ], function (err, data) { if (err) throw err; res.send(data) } ); }); route.get('/:memberName', async(req,res)=>{ // const community = await Community.find({members: req.params.memberName}) // res.send(community) Community.aggregate([ {$match: {members: req.params.memberName}}, { $addFields: { members_count: { $size: { "$ifNull": ["$members", []] } } } }, { $sort: { "members_count": -1 } } ], function (err, data) { if (err) throw err; res.send(data) } ); }); route.post('/', async(req,res)=>{ const comm = req.body; const newComm = new Community(comm) try { await newComm.save() res.status(200).json(newComm) } catch (error) { res.status(400).json({message: error.message}) } }); route.delete('/:ComName', async(req,res)=>{ try{ //first query await Post.deleteMany({ComName: req.params.ComName}); //second query await Community.deleteOne({ComName: req.params.ComName}); return res.status(200).json("Posts in community and community deleted") } catch(err){ return res.status(400).json({err}) } }); route.put('/pullmember/:ComName/:member', async(req,res)=>{ try{ await Community.findOneAndUpdate( { ComName: req.params.ComName }, { $pull: { members: req.params.member } } ); await Community.findOneAndUpdate( { ComName: req.params.ComName }, { $pull: { admins: req.params.member } } ); return res.status(200).json("member removed from comunity") } catch(err){ return res.status(400).json({err}) } }); route.put('/pushmember/:ComName/:member', async(req,res)=>{ try{ await Community.findOneAndUpdate( { ComName: req.params.ComName }, { $push: { members: req.params.member } } ); return res.status(200).json("member added to comunity") } catch(err){ return res.status(400).json({err}) } }); module.exports = route;