29 lines
1.2 KiB
JavaScript
29 lines
1.2 KiB
JavaScript
const db = require('../surreal');
|
|
const router = require('express').Router();
|
|
|
|
router.post('/like/:postId', async (req, res) => {
|
|
const username = req.user;
|
|
const postId = 'posts:' + req.params.postId;
|
|
|
|
if(!username) return res.status(400).json({error: "Missing username"});
|
|
if(!postId) return res.status(400).json({error: "Missing postId"});
|
|
|
|
const postData = await db.query(`SELECT * FROM posts WHERE id = "${postId}"`);
|
|
|
|
//check if user already liked post
|
|
for(let i = 0; i < postData[0].likes.length; i++){
|
|
if(postData[0].likes[i] === username){
|
|
const post = await db.query(`UPDATE posts SET likes -= "${username}" WHERE id = "${postId}"`);
|
|
const user = await db.query(`UPDATE users SET likedPosts -= "${req.params.postId}" WHERE username = string::lowercase("${username}")`);
|
|
|
|
return res.status(200).json({message: "Post unliked"});
|
|
}
|
|
}
|
|
|
|
const post = await db.query(`UPDATE posts SET likes += "${username}" WHERE id = "${postId}"`);
|
|
const user = await db.query(`UPDATE users SET likedPosts += "${req.params.postId}" WHERE username = string::lowercase("${username}")`);
|
|
|
|
res.status(200).json({message: "Post liked"});
|
|
});
|
|
|
|
module.exports = router; |