raspi-back/app/routes/shopping.js

61 lines
2.0 KiB
JavaScript

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