This commit is contained in:
Ubuntu 2025-07-15 15:17:35 +05:30
parent b7650d4729
commit ba185c0cf5
3 changed files with 47 additions and 1 deletions

View File

@ -463,3 +463,38 @@ exports.deleteDocument = async (req, res) => {
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' });
}
};

View File

@ -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',

View File

@ -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;