diff --git a/models/RegionsModel.js b/models/RegionsModel.js index e2b0c9e..0cd265b 100644 --- a/models/RegionsModel.js +++ b/models/RegionsModel.js @@ -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 async create(data) { try { diff --git a/old_routes/API.js b/old_routes/API.js deleted file mode 100644 index b8ce8a4..0000000 --- a/old_routes/API.js +++ /dev/null @@ -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); -}; \ No newline at end of file diff --git a/old_routes/cart.js b/old_routes/cart.js deleted file mode 100644 index 0ef17a9..0000000 --- a/old_routes/cart.js +++ /dev/null @@ -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; \ No newline at end of file diff --git a/old_routes/checkout.js b/old_routes/checkout.js deleted file mode 100644 index 1e53048..0000000 --- a/old_routes/checkout.js +++ /dev/null @@ -1,8 +0,0 @@ -const express = require('express'); -const checkoutRouter = express.Router(); - -checkoutRouter.route('/checkout').get((req, res) => { - res.send('checkout?'); -}); - -module.exports = checkoutRouter; \ No newline at end of file diff --git a/old_routes/login.js b/old_routes/login.js deleted file mode 100644 index 491b8c6..0000000 --- a/old_routes/login.js +++ /dev/null @@ -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); - } - }) - ); -} \ No newline at end of file diff --git a/old_routes/order.js b/old_routes/order.js deleted file mode 100644 index b93c8ce..0000000 --- a/old_routes/order.js +++ /dev/null @@ -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; \ No newline at end of file diff --git a/old_routes/products.js b/old_routes/products.js deleted file mode 100644 index 4559059..0000000 --- a/old_routes/products.js +++ /dev/null @@ -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.")); - } - }); -} \ No newline at end of file diff --git a/old_routes/register.js b/old_routes/register.js deleted file mode 100644 index f29d475..0000000 --- a/old_routes/register.js +++ /dev/null @@ -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); - } - }); -} \ No newline at end of file diff --git a/old_routes/user.js b/old_routes/user.js deleted file mode 100644 index 99d5c56..0000000 --- a/old_routes/user.js +++ /dev/null @@ -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."); - } - }); -}; \ No newline at end of file diff --git a/routes/regions.js b/routes/regions.js index e0e555a..58e18d1 100644 --- a/routes/regions.js +++ b/routes/regions.js @@ -6,11 +6,22 @@ module.exports = (app) => { app.use('/api/regions', router); router.get('/', async (req, res, next) => { - try { - const response = await RegionsInstance.getAll(); - res.status(200).send(response); - } catch(e) { - next(e); + const { name } = req.query; + + if (name) { + try { + 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); + } } }) diff --git a/services/RegionsService.js b/services/RegionsService.js index 4778c81..6da08e8 100644 --- a/services/RegionsService.js +++ b/services/RegionsService.js @@ -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) { try { const result = await RegionInstance(data);