From dd474e24018a210d747f764b184549e7f28b80b6 Mon Sep 17 00:00:00 2001 From: NadiaJalalTamimi Date: Mon, 4 Oct 2021 02:04:06 +0300 Subject: [PATCH 1/3] cart router Relates #46 --- server/controllers/pages/cart.js | 13 +++++++++++++ server/database/config/build.js | 1 - server/database/connection/index.js | 14 +++++++------- server/database/queries/cart/getItems.js | 7 ++++++- server/database/queries/users/addUser.js | 1 + server/routes/index.js | 1 + 6 files changed, 28 insertions(+), 9 deletions(-) create mode 100644 server/controllers/pages/cart.js diff --git a/server/controllers/pages/cart.js b/server/controllers/pages/cart.js new file mode 100644 index 0000000..e0bffc4 --- /dev/null +++ b/server/controllers/pages/cart.js @@ -0,0 +1,13 @@ +const { getItems } = require('../../database/queries/cart'); + +const getCart = (req, res) => { + const { userId } = req.cookies; + getItems(userId) + .then((data) => { + res.json(data); + }) + .catch((err) => { + console.log(err.message); + res.status(500).json({ message: 'Internal server error' }); + }); +module.exports=getCart; \ No newline at end of file diff --git a/server/database/config/build.js b/server/database/config/build.js index 6756646..9c52f99 100644 --- a/server/database/config/build.js +++ b/server/database/config/build.js @@ -9,7 +9,6 @@ const buildDB = () => { return connection.query(sql); }; - buildDB(); module.exports = buildDB; diff --git a/server/database/connection/index.js b/server/database/connection/index.js index 87e916b..99952ed 100644 --- a/server/database/connection/index.js +++ b/server/database/connection/index.js @@ -1,17 +1,17 @@ -require("env2")(".env"); -const { Pool } = require("pg"); +require('env2')('.env'); +const { Pool } = require('pg'); const { DATABASE_URL, TEST_DB_URL, DEV_DB_URL } = process.env; -let dbUrl = ""; -if (process.env.NODE_ENV === "test") { +let dbUrl = ''; +if (process.env.NODE_ENV === 'test') { dbUrl = TEST_DB_URL; -} else if (process.env.NODE_ENV === "development") { +} else if (process.env.NODE_ENV === 'development') { dbUrl = DEV_DB_URL; -} else if (process.env.NODE_ENV === "production") { +} else if (process.env.NODE_ENV === 'production') { dbUrl = DATABASE_URL; } else { - throw new Error("error in database URL !"); + throw new Error('error in database URL !'); } const options = { diff --git a/server/database/queries/cart/getItems.js b/server/database/queries/cart/getItems.js index 02734ab..ad157b2 100644 --- a/server/database/queries/cart/getItems.js +++ b/server/database/queries/cart/getItems.js @@ -1,3 +1,8 @@ const connection = require('../../connection'); -module.exports = (productId, cartId) => connection.query('SELECT products.*, cart_items.quentity FROM products INNER JOIN cart_items ON cart_items.product_id=products.id INNER JOIN users ON cart_items.user_id = users.id WHERE cart_items.user_id = 3;', [productId, cartId]).then((data) => data.rows); +module.exports = (userId) => connection + .query( + 'SELECT products.*, cart_items.quentity FROM products INNER JOIN cart_items ON cart_items.product_id=products.id INNER JOIN users ON cart_items.user_id = users.id WHERE cart_items.user_id = $1;', + [userId], + ) + .then((data) => data.rows); diff --git a/server/database/queries/users/addUser.js b/server/database/queries/users/addUser.js index 9c4a45f..58159a2 100644 --- a/server/database/queries/users/addUser.js +++ b/server/database/queries/users/addUser.js @@ -3,6 +3,7 @@ const connection = require('../../connection'); const addUserQuery = ({ username, email, password }) => connection.query( 'INSERT INTO users (username, email, password) VALUES ($1,$2,$3) RETURNING *', [username, email, password], +); module.exports = { addUserQuery, diff --git a/server/routes/index.js b/server/routes/index.js index 8aae9ec..ac817fd 100644 --- a/server/routes/index.js +++ b/server/routes/index.js @@ -2,5 +2,6 @@ const router = require('express').Router(); const logout = require('../controllers'); router.get('/logout', logout); +router.get('/cart' , ) module.exports = router; From b305591cfd7d92b778cfbb0891b0ede05bb5377e Mon Sep 17 00:00:00 2001 From: NadiaJalalTamimi Date: Tue, 5 Oct 2021 12:55:14 +0300 Subject: [PATCH 2/3] resolve cart routers problems Relates #47 --- server/controllers/index.js | 3 ++- server/controllers/pages/cart.js | 21 ++++++++++----------- server/controllers/pages/index.js | 3 +++ server/database/queries/users/addUser.js | 2 +- server/middlewares/authentication.js | 2 +- server/routes/index.js | 5 +++-- 6 files changed, 20 insertions(+), 16 deletions(-) create mode 100644 server/controllers/pages/index.js diff --git a/server/controllers/index.js b/server/controllers/index.js index 71c70d3..1d65591 100644 --- a/server/controllers/index.js +++ b/server/controllers/index.js @@ -1,3 +1,4 @@ const logout = require('./logout'); +const { getCart } = require('./pages'); -module.exports = { logout }; +module.exports = { logout, getCart }; diff --git a/server/controllers/pages/cart.js b/server/controllers/pages/cart.js index e0bffc4..955a940 100644 --- a/server/controllers/pages/cart.js +++ b/server/controllers/pages/cart.js @@ -1,13 +1,12 @@ const { getItems } = require('../../database/queries/cart'); -const getCart = (req, res) => { - const { userId } = req.cookies; - getItems(userId) - .then((data) => { - res.json(data); - }) - .catch((err) => { - console.log(err.message); - res.status(500).json({ message: 'Internal server error' }); - }); -module.exports=getCart; \ No newline at end of file +const getCart = async (req, res, next) => { + try { + const { id } = req.userObj; + const items = await getItems(id); + res.json(items); + } catch (err) { + next(err); + } +}; +module.exports = getCart; diff --git a/server/controllers/pages/index.js b/server/controllers/pages/index.js new file mode 100644 index 0000000..f4cb68a --- /dev/null +++ b/server/controllers/pages/index.js @@ -0,0 +1,3 @@ +const getCart = require('./cart'); + +module.exports = { getCart }; diff --git a/server/database/queries/users/addUser.js b/server/database/queries/users/addUser.js index 58159a2..1665341 100644 --- a/server/database/queries/users/addUser.js +++ b/server/database/queries/users/addUser.js @@ -1,6 +1,6 @@ const connection = require('../../connection'); -const addUserQuery = ({ username, email, password }) => connection.query( +const addUserQuery = (username, email, password) => connection.query( 'INSERT INTO users (username, email, password) VALUES ($1,$2,$3) RETURNING *', [username, email, password], ); diff --git a/server/middlewares/authentication.js b/server/middlewares/authentication.js index f324304..2022ae1 100644 --- a/server/middlewares/authentication.js +++ b/server/middlewares/authentication.js @@ -1,4 +1,4 @@ -require("env2")(".env"); +require('env2')('.env'); const jwt = require('jsonwebtoken'); const authentication = (req, res, next) => { diff --git a/server/routes/index.js b/server/routes/index.js index ac817fd..77caa46 100644 --- a/server/routes/index.js +++ b/server/routes/index.js @@ -1,7 +1,8 @@ const router = require('express').Router(); -const logout = require('../controllers'); +const { logout, getCart } = require('../controllers'); +const { authentication } = require('../middlewares'); router.get('/logout', logout); -router.get('/cart' , ) +router.get('/cart', authentication, getCart); module.exports = router; From 01fe80075e372db981aa9dbbb273cb1e744e4730 Mon Sep 17 00:00:00 2001 From: NadiaJalalTamimi Date: Tue, 5 Oct 2021 13:03:58 +0300 Subject: [PATCH 3/3] fix eslint problems --- server/middlewares/authentication.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/middlewares/authentication.js b/server/middlewares/authentication.js index 2022ae1..4318506 100644 --- a/server/middlewares/authentication.js +++ b/server/middlewares/authentication.js @@ -13,7 +13,7 @@ const authentication = (req, res, next) => { return res.status(401).json({ message: 'Unauthorized' }); } - jwt.verify(token, secret, (err, decoded) => { + return jwt.verify(token, secret, (err, decoded) => { if (decoded) { req.userObj = decoded; next();