61 lines
2.0 KiB
JavaScript
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 |