0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2025-12-28 07:02:38 +00:00

Initial UI functionality for most Lock functions

This commit is contained in:
G.Ambatte
2024-05-11 23:58:37 +12:00
parent 1fe2a26e83
commit e7dc757293
5 changed files with 240 additions and 12 deletions

View File

@@ -162,12 +162,13 @@ router.get('/admin/lock', mw.adminOnly, async (req, res)=>{
});
} catch (error) {
console.error(error);
return res.status(500).json({ error: 'Unable to get lock count' });
return res.json({ status: 'ERROR', detail: 'Unable to get lock count', error });
}
});
router.post('/admin/lock/:id', mw.adminOnly, async (req, res)=>{
const lock = req.body;
lock.applied = new Date;
try {
const filter = {
@@ -176,6 +177,8 @@ router.post('/admin/lock/:id', mw.adminOnly, async (req, res)=>{
const brew = await HomebrewModel.findOne(filter);
if(brew.lock) return res.json({ status: 'ALREADY LOCKED', detail: `Lock already exists on brew ${req.params.id} - ${brew.title}` });
brew.lock = lock;
brew.markModified('lock');
@@ -184,10 +187,34 @@ router.post('/admin/lock/:id', mw.adminOnly, async (req, res)=>{
console.log(`Lock applied to brew ID ${brew.shareId} - ${brew.title}`);
} catch (error) {
console.error(error);
return res.status(500).json({ error: `Unable to set lock on brew ${req.params.id}` });
return res.json({ error, message: `Unable to set lock on brew ${req.params.id}` });
}
return res.status(200).json({ status: 'SUCCESS', lock });
return res.json({ status: 'LOCKED', detail: `Lock applied to brew ID ${brew.shareId} - ${brew.title}`, lock });
});
router.get('/admin/unlock/:id', mw.adminOnly, async (req, res)=>{
try {
const filter = {
shareId : req.params.id
};
const brew = await HomebrewModel.findOne(filter);
if(!brew.lock) return res.json({ status: 'NOT LOCKED', detail: `Brew ID ${req.params.id} is not locked!` });
brew.lock = undefined;
brew.markModified('lock');
await brew.save();
console.log(`Lock removed from brew ID ${brew.shareId} - ${brew.title}`);
} catch (error) {
console.error(error);
return res.json({ status: 'ERROR', detail: `Unable to clear lock on brew ${req.params.id}`, error });
}
return res.json({ status: 'UNLOCKED', detail: `Lock removed from brew ID ${req.params.id}` });
});
router.get('/admin/lock/reviews', mw.adminOnly, async (req, res)=>{
@@ -202,12 +229,13 @@ router.get('/admin/lock/reviews', mw.adminOnly, async (req, res)=>{
}
];
const reviewDocuments = await HomebrewModel.getAggregate(countReviewsPipeline);
console.log(reviewDocuments);
return res.json({
reviewDocuments
});
} catch (error) {
console.error(error);
return res.status(500).json({ error: 'Unable to get review collection' });
return res.json({ status: 'ERROR', detail: 'Unable to get review collection', error });
}
});
@@ -221,11 +249,11 @@ router.get('/admin/lock/review/request/:id', async (req, res)=>{
};
const brew = await HomebrewModel.findOne(filter);
if(!brew) { return res.status(500).json({ error: `Brew ID ${req.params.id} is not locked!` }); };
if(!brew) { return res.json({ status: 'NOT LOCKED', detail: `Brew ID ${req.params.id} is not locked!` }); };
if(brew.lock.reviewRequested){
console.log(`Review already requested for brew ${brew.shareId} - ${brew.title}`);
return res.status(500).json({ error: `Review already requested for brew ${brew.shareId} - ${brew.title}` });
return res.json({ status: 'NOT REQUESTED', detail: `Review already requested for brew ${brew.shareId} - ${brew.title}` });
};
brew.lock.reviewRequested = new Date();
@@ -237,10 +265,10 @@ router.get('/admin/lock/review/request/:id', async (req, res)=>{
});
console.log(`Review requested on brew ${brew.shareId} - ${brew.title}`);
return res.json(brew);
return res.json({ status: 'REVIEW REQUESTED', brew });
} catch (error) {
console.error(error);
return res.status(500).json({ error: `Unable to set request for review on brew ID ${req.params.id}` });
return res.json({ status: 'ERROR', detail: `Unable to set request for review on brew ID ${req.params.id}`, error });
}
});
@@ -253,7 +281,7 @@ router.get('/admin/lock/review/remove/:id', mw.adminOnly, async (req, res)=>{
};
const brew = await HomebrewModel.findOne(filter);
if(!brew) { return res.status(500).json({ error: `Brew ID ${req.params.id} does not have a review pending!` }); };
if(!brew) { return res.json({ status: 'NOT REMOVED', detail: `Brew ID ${req.params.id} does not have a review pending!` }); };
delete brew.lock.reviewRequested;
brew.markModified('lock');
@@ -264,7 +292,7 @@ router.get('/admin/lock/review/remove/:id', mw.adminOnly, async (req, res)=>{
return res.json(brew);
} catch (error) {
console.error(error);
return res.status(500).json({ error: `Unable to remove request for review on brew ID ${req.params.id}` });
return res.json({ error: `Unable to remove request for review on brew ID ${req.params.id}` });
}
});