Files
2024-03-11 18:12:43 +01:00

152 lines
4.4 KiB
JavaScript

const db = require('../surreal');
const router = require('express').Router();
router.get('/', async (req, res) => {
try{
const homepage = await db.query(`SELECT * FROM homepage`);
if(homepage.length == 0) return res.status(400).json({error: "Homepage does not exist"});
const trending = homepage[0].trending;
const mostLiked = homepage[0].mostLiked;
const mostCommented = homepage[0].mostCommented;
const mostSaved = homepage[0].mostSaved;
const returnData = {
trending: trending,
mostLiked: mostLiked,
mostCommented: mostCommented,
mostSaved: mostSaved
}
res.status(200).json({returnData});
}
catch(err){
console.log(err);
res.status(500).json({error: "Internal server error"});
}
});
router.get('/trending', async (req, res) => {
try{
const homepage = await db.query(`SELECT * FROM homepage`);
if(homepage.length == 0) return res.status(400).json({error: "Homepage does not exist"});
const trending = homepage[0].trending;
res.status(200).json({trending});
}
catch(err){
console.log(err);
res.status(500).json({error: "Internal server error"});
}
});
router.get('/mostLiked', async (req, res) => {
try{
const homepage = await db.query(`SELECT * FROM homepage`);
if(homepage.length == 0) return res.status(400).json({error: "Homepage does not exist"});
const mostLiked = homepage[0].mostLiked;
res.status(200).json({mostLiked});
}
catch(err){
console.log(err);
res.status(500).json({error: "Internal server error"});
}
});
router.get('/mostCommented', async (req, res) => {
try{
const homepage = await db.query(`SELECT * FROM homepage`);
if(homepage.length == 0) return res.status(400).json({error: "Homepage does not exist"});
const mostCommented = homepage[0].mostCommented;
res.status(200).json({mostCommented});
}
catch(err){
console.log(err);
res.status(500).json({error: "Internal server error"});
}
});
router.get('/mostSaved', async (req, res) => {
try{
const homepage = await db.query(`SELECT * FROM homepage`);
if(homepage.length == 0) return res.status(400).json({error: "Homepage does not exist"});
const mostSaved = homepage[0].mostSaved;
res.status(200).json({mostSaved});
}
catch(err){
console.log(err);
res.status(500).json({error: "Internal server error"});
}
});
router.get('/categories', async (req, res) => {
try{
const categories = await db.query(`SELECT name, description, count(posts) AS count FROM category`);
if(categories.length == 0) return res.status(400).json({error: "Categories do not exist"});
res.status(200).json({categories});
}
catch(err){
console.log(err);
res.status(500).json({error: "Internal server error"});
}
});
router.get('/category/:name/', async (req, res) => {
try{
const name = req.params.name;
const category = await db.query(`SELECT posts FROM category WHERE name = string::lowercase("${name}")`);
//reverse the array so the latest posts are first
category[0].posts.reverse();
if(category.length == 0) return res.status(400).json({error: "Category does not exist"});
postarray = []
//select woth the id
for(const id of category[0].posts){
const post = await db.query(`SELECT title, date, viewcount, id, author FROM posts WHERE id = "posts:${id}"`);
//remopve posts: from the id
post[0].id = post[0].id.split(":")[1];
postarray.push(post[0]);
}
res.status(200).json({postarray});
}
catch(err){
console.log(err);
res.status(500).json({error: "Internal server error"});
}
});
router.get('/category/details/:name/', async (req, res) => {
try{
const name = req.params.name;
const category = await db.query(`SELECT description FROM category WHERE name = string::lowercase("${name}")`);
if(category.length == 0) return res.status(400).json({error: "Category does not exist"});
res.status(200).json({description: category[0].description});
}
catch(err){
console.log(err);
res.status(500).json({error: "Internal server error"});
}
});
module.exports = router;