const { getShoppingItems, addShoppingItem, getRecentFinds } = require("../arangodb"); const { verifyToken } = require("../checkToken"); const { addHupTask } = require("../huphandler"); const { addRouteToScope } = require("../scopes"); const {writeFile, readFile, existsSync, unlink} = require("fs") const route = require("./files"); addRouteToScope("/shopping/list", "shopping") addRouteToScope("/shopping/item", "shopping") const shoppingList = []; if(existsSync("./.shopping")){ readFile("./.shopping", (err, data)=>{ if(!err){ shoppingList.splice(0, 0, ...JSON.parse(data.toString())) unlink("./.shopping", (err)=>{ console.log(err) }) } }) } route.post("/list", verifyToken, (req, res)=>{ shoppingList.splice(0, shoppingList.length, ...req.body) getShoppingItems(req.query.limit||25, shoppingList).then((frequentlyUsed)=>{ res.json(frequentlyUsed) }, (error)=>{ res.status(500).json(error) }) }) route.get("/list", verifyToken, (req, res)=>{ getShoppingItems((req.query.limit||25), shoppingList).then((frequentlyUsed)=>{ getRecentFinds().then((recentFinds)=>{ res.json({shoppingList, frequentlyUsed, recentFinds}) }, (error)=>{ res.status(500).json(error) }) }, (error)=>{ res.status(500).json(error) }) }) route.post("/item", verifyToken, (req, res)=>{ shoppingList.splice(shoppingList.findIndex(({item})=>item==req.body.item), 1) if(req.body.ok){ addShoppingItem(req.body.item, req.body.quantity, req.body.quantityType).then(()=>{ res.end() }, (error)=>{ console.log(error) res.status(500).json("database query error") }) }else{ res.end() } }) addHupTask("shoppinglist", ()=>new Promise((res)=>{ writeFile("./.shopping", JSON.stringify(shoppingList), (err)=>{ if(err){ res(err) }else{ res() } }) })) module.exports = route