68 lines
2.4 KiB
JavaScript
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
|