mongoose + tests

This commit is contained in:
Primakov Alexandr Alexandrovich
2024-10-16 11:06:23 +03:00
parent 2cfcd7347b
commit 4b0d9b4dbc
1295 changed files with 4579 additions and 1719 deletions

View File

@@ -0,0 +1,47 @@
const authRouter = require('express').Router()
const jwt = require('jsonwebtoken')
const bcrypt = require('bcrypt')
const { JWT_TOKEN, SALT } = require('./key')
const { getResponse } = require('../utils/common')
const { getUsers, addUser, getUserByEmail } = require('../controller')
const checkRequiredMidleware = require('../midlewares/checkRequired.midleware')
authRouter.get('/users', async (req, res) => {
let error = null
const dishData = await getUsers().catch((e) => error = e.message)
res.send(getResponse(error, dishData))
})
authRouter.post(
'/register',
checkRequiredMidleware(['email', 'password']),
async (req, res) => {
const { email, password } = req.body
const hash = await bcrypt.hash(password, SALT)
let error = null
const user = await addUser({ email, hash }).catch((e) => error = e.message)
res.send(getResponse(error, user))
},
)
authRouter.post(
'/login',
checkRequiredMidleware(['email', 'password']),
async (req, res) => {
const { email, password } = req.body;
let error = null
const user = await getUserByEmail({ email }).catch((e) => error = e.message)
if (user) {
const passwordCorrect = await bcrypt.compare(password, user.hash)
if (passwordCorrect) {
// eslint-disable-next-line no-undef
const token = jwt.sign({ email }, JWT_TOKEN)
res.send({ email, token })
return
}
}
res.status(400).send('Incorrect email or password')
},
)
module.exports = authRouter

View File

@@ -0,0 +1,33 @@
const dishRouter = require('express').Router()
const ObjectId = require('mongodb').ObjectID
const { getResponse } = require('../utils/common')
const { getDish, getTabs, getDishById, getDishByCategory } = require('../controller')
dishRouter.get('/', async (req, res) => {
let error = null
const dishData = await getDish().catch((e) => error = e.message)
res.send(getResponse(error, dishData))
})
dishRouter.get('/reservation', async (req, res) => {
let error = null
const tabData = await getTabs().catch((e) => error = e.message)
res.send(getResponse(error, tabData))
})
dishRouter.get('/alsolike/:dishId', async (req, res) => {
let error = null
const dish = await getDishById({ id: req.params.dishId }).catch((e) => error = e.message)
const categoryArr = await getDishByCategory({
cat: dish.category, id: req.params.dishId,
}).catch((e) => error = e.message)
res.status(200).send(getResponse(error, categoryArr))
})
dishRouter.get('/:dishId', async (req, res) => {
let error = null
const dishData = await getDishById({ id: req.params.dishId }).catch((e) => error = e.message)
res.send(getResponse(error, dishData))
})
module.exports = dishRouter

View File

@@ -0,0 +1,7 @@
const JWT_TOKEN = 'secret'
const SALT = 3
module.exports = {
JWT_TOKEN,
SALT,
}

View File

@@ -0,0 +1,8 @@
const orderRouter = require('express').Router()
orderRouter.post('/', (req, res) => {
const orderNumber = 2003
res.status(200).send({ orderNumber })
})
module.exports = orderRouter

View File

@@ -0,0 +1,32 @@
const reservationRouter = require('express').Router()
const { getTabs, updateTab } = require('../controller')
reservationRouter.get('/', async (req, res) => {
let error = null
const tabData = await getTabs().catch((e) => error = e.message)
if (error) {
res.status(400).send(error)
} else {
res.status(200).send(tabData)
}
})
reservationRouter.post('/post', async (req, res) => {
let error = null
const data = req.body
console.log(data.length)
const promises = []
for (let i = 0; i < data.length; i++) {
const item = data[i]
const result = updateTab(item.id, item.timeStamps)
promises.push(result)
}
await Promise.all(promises).catch((e) => error = e.message)
if (error) {
res.status(400).send(error)
} else {
res.status(200).send()
}
})
module.exports = reservationRouter