ecliptica/server/routers/basket/listItem.js

68 lines
2.4 KiB
JavaScript

const router = require('express').Router()
const { expressjwt } = require('express-jwt')
const ObjectId = require('mongodb').ObjectID
const { BASKET_JWT_TOKEN } = require('./key')
const { getShoppingList, deleteItem, boughtItem, incCountItem, getResponse, addListItem } = require('./controller')
router.use(expressjwt({ secret: BASKET_JWT_TOKEN, algorithms: ['HS256'] }))
router.get('/:id', async (req, res) => {
const userId = new ObjectId(req.auth.id)
let error = null
// eslint-disable-next-line no-return-assign
const { id } = req.params
// eslint-disable-next-line no-return-assign
const listData = await getShoppingList({ userId, id }).catch((e) => error = e.message)
res.send(getResponse(error, listData))
})
router.post('/item/:id', async (req, res) => {
const userId = new ObjectId(req.auth.id)
let error = null
// eslint-disable-next-line no-return-assign
const { id } = req.params
const { categoryId, text } = req.body
const shoppingListData = await addListItem({
userId, listId: id, categoryId, text,
// eslint-disable-next-line no-return-assign
}).catch((e) => error = e.message)
res.send(getResponse(error, shoppingListData))
})
router.patch('/item/:id', async (req, res) => {
const userId = new ObjectId(req.auth.id)
let error = null
// eslint-disable-next-line no-return-assign
const { id } = req.params
const { bought } = req.body.item
// eslint-disable-next-line no-return-assign
// eslint-disable-next-line max-len
const itemData = await boughtItem({ userId, itemId: id, bought }).catch((e) => error = e.message)
res.send(getResponse(error, itemData))
})
router.put('/item/:id', async (req, res) => {
const userId = new ObjectId(req.auth.id)
let error = null
// eslint-disable-next-line no-return-assign
const { id } = req.params
const { count } = req.body
// eslint-disable-next-line no-return-assign
// eslint-disable-next-line max-len
const itemData = await incCountItem({ userId, itemId: id, count }).catch((e) => error = e.message)
res.send(getResponse(error, itemData))
})
router.delete('/item/:id', async (req, res) => {
let error = null
// eslint-disable-next-line no-return-assign
const { id } = req.params
// eslint-disable-next-line no-return-assign
const itemData = await deleteItem({ itemId: id }).catch((e) => error = e.message)
res.send(getResponse(error, itemData))
})
module.exports = router