forked from rohit/spurrin-backend
views
This commit is contained in:
parent
b7650d4729
commit
ba185c0cf5
@ -462,4 +462,39 @@ exports.deleteDocument = async (req, res) => {
|
|||||||
console.error('Error deleting document:', error.message);
|
console.error('Error deleting document:', error.message);
|
||||||
res.status(500).json({ error: 'Internal server error' });
|
res.status(500).json({ error: 'Internal server error' });
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Update document views (always increment by 1, public)
|
||||||
|
exports.updateDocumentViews = async (req, res) => {
|
||||||
|
try {
|
||||||
|
const { id } = req.params;
|
||||||
|
|
||||||
|
if (!id) {
|
||||||
|
return res.status(400).json({ error: 'Document ID is required' });
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fetch the document
|
||||||
|
const documentQuery = 'SELECT * FROM documents WHERE id = ?';
|
||||||
|
const documentResult = await db.query(documentQuery, [id]);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if (documentResult.length === 0) {
|
||||||
|
return res.status(404).json({ error: 'Document not found' });
|
||||||
|
}
|
||||||
|
|
||||||
|
// Always increment views by 1
|
||||||
|
const updateQuery = 'UPDATE documents SET views = views + 1 WHERE id = ?';
|
||||||
|
const updateParams = [id];
|
||||||
|
const result = await db.query(updateQuery, updateParams);
|
||||||
|
|
||||||
|
if (result.affectedRows === 0) {
|
||||||
|
return res.status(404).json({ message: 'Document not found or no changes made' });
|
||||||
|
}
|
||||||
|
|
||||||
|
res.status(200).json({ message: 'Document views updated successfully!' });
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error updating document views:', error.message);
|
||||||
|
res.status(500).json({ error: 'Internal server error' });
|
||||||
|
}
|
||||||
};
|
};
|
||||||
@ -55,6 +55,13 @@ const securityHeaders = helmet({
|
|||||||
|
|
||||||
// Request validation middleware
|
// Request validation middleware
|
||||||
const validateRequest = (req, res, next) => {
|
const validateRequest = (req, res, next) => {
|
||||||
|
// Bypass Content-Type check for public update-views endpoint
|
||||||
|
if (
|
||||||
|
req.method === 'PUT' &&
|
||||||
|
req.path.startsWith('/documents/update-views')
|
||||||
|
) {
|
||||||
|
return next();
|
||||||
|
}
|
||||||
if (['POST', 'PUT'].includes(req.method) && !req.is('application/json') && !req.is('multipart/form-data')) {
|
if (['POST', 'PUT'].includes(req.method) && !req.is('application/json') && !req.is('multipart/form-data')) {
|
||||||
return res.status(415).json({
|
return res.status(415).json({
|
||||||
status: 'error',
|
status: 'error',
|
||||||
|
|||||||
@ -64,6 +64,11 @@ router.put(
|
|||||||
documentController.updateDocumentStatus
|
documentController.updateDocumentStatus
|
||||||
);
|
);
|
||||||
|
|
||||||
|
router.put(
|
||||||
|
'/update-views/:id',
|
||||||
|
documentController.updateDocumentViews
|
||||||
|
);
|
||||||
|
|
||||||
router.delete(
|
router.delete(
|
||||||
'/delete/:id',
|
'/delete/:id',
|
||||||
authMiddleware.authenticateToken,
|
authMiddleware.authenticateToken,
|
||||||
@ -72,5 +77,4 @@ router.delete(
|
|||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
module.exports = router;
|
module.exports = router;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user