implemented region search by name
This commit is contained in:
@@ -25,6 +25,18 @@ module.exports = class RegionsModel {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async getOneByName(name) {
|
||||||
|
try {
|
||||||
|
const statement = "SELECT * FROM region WHERE name = $1";
|
||||||
|
const values = [name];
|
||||||
|
const result = await db.query(statement, values);
|
||||||
|
if (result.rows.length) return result.rows;
|
||||||
|
return null;
|
||||||
|
} catch(e) {
|
||||||
|
throw new Error(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// protected
|
// protected
|
||||||
async create(data) {
|
async create(data) {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -1,11 +0,0 @@
|
|||||||
const userRouter = require('./user');
|
|
||||||
const productsRouter = require('./products');
|
|
||||||
const registerRouter = require('./register');
|
|
||||||
const loginRouter = require('./login');
|
|
||||||
|
|
||||||
module.exports = async (app, passport) => {
|
|
||||||
loginRouter(app, passport);
|
|
||||||
productsRouter(app);
|
|
||||||
registerRouter(app);
|
|
||||||
userRouter(app);
|
|
||||||
};
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
const express = require('express');
|
|
||||||
const cartRouter = express.Router();
|
|
||||||
|
|
||||||
cartRouter.route('/cart').get((req, res) => {
|
|
||||||
res.send('get cart');
|
|
||||||
});
|
|
||||||
|
|
||||||
module.exports = cartRouter;
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
const express = require('express');
|
|
||||||
const checkoutRouter = express.Router();
|
|
||||||
|
|
||||||
checkoutRouter.route('/checkout').get((req, res) => {
|
|
||||||
res.send('checkout?');
|
|
||||||
});
|
|
||||||
|
|
||||||
module.exports = checkoutRouter;
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
const loginRouter = require('express').Router();
|
|
||||||
const { LoginService } = require('../services/Auth');
|
|
||||||
|
|
||||||
module.exports = (app, passport) => {
|
|
||||||
app.use(
|
|
||||||
loginRouter.post('/api/login', passport.authenticate("local"), async (req, res, next) => {
|
|
||||||
const { email, password } = req.body;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @function LoginService
|
|
||||||
* @params email: string, password: string
|
|
||||||
* @returns: object, with keys:
|
|
||||||
* session: session object
|
|
||||||
* userProfile: postgres response from query
|
|
||||||
*
|
|
||||||
* session object:
|
|
||||||
* authenticated: boolean,
|
|
||||||
* user: { email, password }
|
|
||||||
*/
|
|
||||||
|
|
||||||
try {
|
|
||||||
const data = await LoginService(email, password);
|
|
||||||
const { session, userProfile } = data;
|
|
||||||
|
|
||||||
req.session.id = session.id;
|
|
||||||
res.status(200).send({ session, userProfile });
|
|
||||||
} catch(e) {
|
|
||||||
next(e);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
const express = require('express');
|
|
||||||
const orderRouter = express.Router();
|
|
||||||
|
|
||||||
orderRouter.route('/orders').get((req, res) => {
|
|
||||||
res.send('get orders');
|
|
||||||
});
|
|
||||||
|
|
||||||
module.exports = orderRouter;
|
|
||||||
@@ -1,68 +0,0 @@
|
|||||||
const express = require('express');
|
|
||||||
const productsRouter = express.Router();
|
|
||||||
const { connect } = require('../db/Pool');
|
|
||||||
|
|
||||||
module.exports = (app) => {
|
|
||||||
app.use('/api/products', productsRouter);
|
|
||||||
|
|
||||||
// route to get all products
|
|
||||||
productsRouter.route('/').get(async (req, res) => {
|
|
||||||
const client = await connect();
|
|
||||||
|
|
||||||
try {
|
|
||||||
await client.query("BEGIN");
|
|
||||||
const result = await client.query("SELECT * FROM products");
|
|
||||||
await client.query("COMMIT");
|
|
||||||
if (result) res.send(result.rows);
|
|
||||||
} catch(e) {
|
|
||||||
await client.query("ROLLBACK");
|
|
||||||
throw new Error(e);
|
|
||||||
} finally {
|
|
||||||
client.release();
|
|
||||||
console.log("Client disconnected.");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// route to get a product by id
|
|
||||||
productsRouter.route('/:id').get(async (req, res) => {
|
|
||||||
const { id } = req.params;
|
|
||||||
const client = await connect();
|
|
||||||
|
|
||||||
try {
|
|
||||||
await client.query("BEGIN");
|
|
||||||
const result = await client.query(("SELECT * FROM products WHERE id = ($1)"), [id]);
|
|
||||||
await client.query("COMMIT");
|
|
||||||
if (result) res.send(result.rows[0]);
|
|
||||||
} catch(e) {
|
|
||||||
await client.query("ROLLBACK");
|
|
||||||
throw new Error(e);
|
|
||||||
} finally {
|
|
||||||
client.release()
|
|
||||||
console.log("Client disconnected.");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// post a product from req.body
|
|
||||||
productsRouter.route('/').post(async (req, res) => {
|
|
||||||
const { name, description, category, categoryID, price } = req.body;
|
|
||||||
const input = `
|
|
||||||
INSERT INTO products (name, description, category, category_id, price)
|
|
||||||
VALUES ($1, $2, $3, $4, $5)
|
|
||||||
`
|
|
||||||
|
|
||||||
const client = await connect();
|
|
||||||
|
|
||||||
try {
|
|
||||||
await client.query("BEGIN");
|
|
||||||
await client.query(input, [name, description, category, categoryID, price]);
|
|
||||||
await client.query("COMMIT");
|
|
||||||
res.sendStatus(204);
|
|
||||||
} catch(e) {
|
|
||||||
await client.query("ROLLBACK");
|
|
||||||
throw new Error(e);
|
|
||||||
} finally {
|
|
||||||
await client.release()
|
|
||||||
.then(console.log("Client disconnected."));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
const registerRouter = require('express').Router();
|
|
||||||
const { RegisterService } = require('../services/Auth');
|
|
||||||
|
|
||||||
// module.exports = registerRouter;
|
|
||||||
module.exports = (app) => {
|
|
||||||
app.use('/api/register', registerRouter);
|
|
||||||
|
|
||||||
registerRouter.route('/').post(async (req, res, done) => {
|
|
||||||
const { firstName, lastName, email, password } = req.body;
|
|
||||||
try {
|
|
||||||
const response = await RegisterService(firstName, lastName, email, password);
|
|
||||||
if (response) res.sendStatus(200);
|
|
||||||
} catch(e) {
|
|
||||||
done(e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
const userRouter = require('express').Router();
|
|
||||||
const { connect } = require('../db/Pool');
|
|
||||||
|
|
||||||
module.exports = (app) => {
|
|
||||||
app.use('/api/user', userRouter);
|
|
||||||
|
|
||||||
// get a list of all users, or a single user matching an email passed in as a query param
|
|
||||||
userRouter.route('/').get(async (req, res) => {
|
|
||||||
const { email } = req.query;
|
|
||||||
const client = await connect()
|
|
||||||
.then(console.log('Connection successful.'))
|
|
||||||
.catch(e => console.log(e));
|
|
||||||
|
|
||||||
if (!email) {
|
|
||||||
try {
|
|
||||||
await client.query("BEGIN");
|
|
||||||
const results = await client.query("SELECT * FROM users");
|
|
||||||
await client.query("COMMIT");
|
|
||||||
if (results) res.send(results.rows);
|
|
||||||
} catch(e) {
|
|
||||||
await client.query('ROLLBACK');
|
|
||||||
throw new Error(e);
|
|
||||||
} finally {
|
|
||||||
await client.release();
|
|
||||||
console.log("Client disconnected.");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
try {
|
|
||||||
await client.query("BEGIN");
|
|
||||||
const result = await client.query(("SELECT * FROM users WHERE email = ($1)"), [email])
|
|
||||||
await client.query("COMMIT");
|
|
||||||
if (result) res.send(result.rows);
|
|
||||||
} catch(e) {
|
|
||||||
await client.query('ROLLBACK');
|
|
||||||
throw new Error(e);
|
|
||||||
} finally {
|
|
||||||
await client.release();
|
|
||||||
console.log("Client disconnected.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// post a new user to the database
|
|
||||||
userRouter.route('/').post(async (req, res) => {
|
|
||||||
const { name, email } = req.body;
|
|
||||||
const client = await connect()
|
|
||||||
.then(console.log('Connection successful.'));
|
|
||||||
const input = "INSERT INTO users (name, email) VALUES ($1, $2)";
|
|
||||||
|
|
||||||
try {
|
|
||||||
await client.query("BEGIN");
|
|
||||||
await client.query(input, [name, email]);
|
|
||||||
await client.query("COMMIT");
|
|
||||||
res.sendStatus(200);
|
|
||||||
} catch(e) {
|
|
||||||
await client.query('ROLLBACK');
|
|
||||||
throw new Error(e);
|
|
||||||
} finally {
|
|
||||||
await client.release();
|
|
||||||
console.log("Client disconnected.");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
@@ -6,11 +6,22 @@ module.exports = (app) => {
|
|||||||
app.use('/api/regions', router);
|
app.use('/api/regions', router);
|
||||||
|
|
||||||
router.get('/', async (req, res, next) => {
|
router.get('/', async (req, res, next) => {
|
||||||
try {
|
const { name } = req.query;
|
||||||
const response = await RegionsInstance.getAll();
|
|
||||||
res.status(200).send(response);
|
if (name) {
|
||||||
} catch(e) {
|
try {
|
||||||
next(e);
|
const response = await RegionsInstance.getOneByName(name);
|
||||||
|
res.status(200).send(response);
|
||||||
|
} catch(e) {
|
||||||
|
next(e);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
const response = await RegionsInstance.getAll();
|
||||||
|
res.status(200).send(response);
|
||||||
|
} catch(e) {
|
||||||
|
next(e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,16 @@ module.exports = class RegionsService {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async getOneByName(name) {
|
||||||
|
try {
|
||||||
|
const result = await RegionInstance.getOneByName(name);
|
||||||
|
if (!result) throw createError(404, "No region entries found.");
|
||||||
|
return result;
|
||||||
|
} catch(e) {
|
||||||
|
throw new Error(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async create(data) {
|
async create(data) {
|
||||||
try {
|
try {
|
||||||
const result = await RegionInstance(data);
|
const result = await RegionInstance(data);
|
||||||
|
|||||||
Reference in New Issue
Block a user