handling for async logic in products.js

This commit is contained in:
2022-04-18 17:20:02 -05:00
parent 2f69a4072d
commit ecb8a457c2
5 changed files with 104 additions and 43 deletions

View File

@@ -1,7 +1,7 @@
const { Client } = require('pg');
require('dotenv').config({ path: '../config.env' });
require('dotenv').config({ path: './config.env' });
const connectionString = 'postgres://mikayladobson@localhost/ecommerce_041822';
const connectionString = process.env.CONNECTION;
const client = () => {
return new Client(connectionString);
}

10
routes/API.js Normal file
View File

@@ -0,0 +1,10 @@
const express = require('express');
const apiRouter = express.Router();
const userRouter = require('./user');
const productsRouter = require('./products');
apiRouter.use('/users', userRouter);
apiRouter.use('/products', productsRouter);
module.exports = apiRouter;

View File

@@ -1,8 +1,67 @@
const express = require('express');
const productsRouter = express.Router();
productsRouter.route('/products').get((req, res) => {
res.send('all products');
const client = require('../db/Client');
// route to get all products
productsRouter.route('/').get(async (req, res) => {
const newClient = client();
try {
newClient.connect()
.then(console.log('Success'));
const result = await newClient.query("SELECT * FROM products");
res.send(result.rows);
} catch(e) {
console.log(e);
} finally {
newClient.end()
.then(console.log("Client disconnected."));
}
});
// route to get a product by id
productsRouter.route('/:id').get(async (req, res) => {
const id = req.params.id;
try {
newClient.connect((err) => {
if (err) throw err;
console.log("Connection successful.");
});
const result = await newClient.query(("SELECT * FROM products WHERE id = ($1)"), [id]);
res.send(result.rows);
} catch(e) {
console.log(e);
} finally {
newClient.end()
.then(console.log("Client disconnected."));
}
});
// post a product from req.body
productsRouter.route('/').post(async (req, res) => {
const newClient = client();
const { name, description, category, categoryID } = req.body;
try {
newClient.connect((err) => {
if (err) {
throw err;
} else {
console.log("Connection successful.")
}
});
await newClient.query(("INSERT INTO products (name, description, category, category_id) VALUES ($1, $2, $3, $4)"), [name, description, category, categoryID]);
res.sendStatus(204);
} catch(e) {
console.log(e);
} finally {
await newClient.end()
.then(console.log("Client disconnected."));
}
});
module.exports = productsRouter;

View File

@@ -4,44 +4,41 @@ const userRouter = express.Router();
const client = require('../db/Client');
// get a list of all users, or a single user matching an email passed in as a query param
userRouter.route('/users').get(async (req, res) => {
userRouter.route('/').get(async (req, res) => {
const newClient = client();
const { email } = req.query;
if (req.query) {
const { email } = req.query;
if (!email) {
try {
await newClient.connect();
console.log('Connection successful.');
const results = await newClient.query("SELECT * FROM users");
res.send(results.rows);
} catch(e) {
console.log(e);
} finally {
await newClient.end();
console.log("Client disconnected.");
}
} else {
try {
await newClient.connect()
.then(console.log("Connection successful."));
const result = await newClient.query(("SELECT * FROM users WHERE email = ($1)"), [email])
res.send(result.rows);
} catch(e) {
console.log(e);
} finally {
await newClient.end()
.then(console.log("Client disconnected."));
}
if (!email) {
try {
await newClient.connect()
.then(console.log('Connection successful.'));
const results = await newClient.query("SELECT * FROM users");
res.send(results.rows);
} catch(e) {
console.log(e);
} finally {
await newClient.end();
console.log("Client disconnected.");
}
} else {
try {
await newClient.connect()
.then(console.log("Connection successful."));
const result = await newClient.query(("SELECT * FROM users WHERE email = ($1)"), [email])
res.send(result.rows);
} catch(e) {
console.log(e);
} finally {
await newClient.end()
.then(console.log("Client disconnected."));
}
}
});
// post a new user to the database
userRouter.route('/users').post(async (req, res) => {
userRouter.route('/').post(async (req, res) => {
const { name, email } = req.body;
const newClient = client();

View File

@@ -1,14 +1,13 @@
const express = require('express');
const cors = require('cors');
const app = express();
const bodyParser = require('body-parser');
const apiRouter = require('./routes/API');
require('dotenv').config({ path: './config.env' });
const PORT = process.env.PORT;
const cors = require('cors');
app.use(cors());
app.use(express.json());
@@ -17,11 +16,7 @@ app.use(bodyParser.urlencoded({
extended: true
}));
app.use(require('./routes/checkout'));
app.use(require('./routes/order'));
app.use(require('./routes/products'));
app.use(require('./routes/user'));
app.use(require('./routes/cart'));
app.use('/api', apiRouter);
app.listen(PORT, () => {
console.log(`Listening on port ${PORT}`);