Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
added functions for getting customers by store id, getting all custoe…
…mr contact info, and getting customer contact info by customer id
  • Loading branch information
JamesMessina committed May 6, 2021
commit 859fefda49dbcaeb9f8569d3e17c4a19e29684f7
2 changes: 2 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
{
}
90 changes: 90 additions & 0 deletions controllers/customers.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
const pool = require('../sql/connection.js');
const mysql = require('mysql');

function getCustomers(req, res){
console.log('inside the customers route/path');

let sql = `SELECT * FROM customers`;

pool.query(sql, function(err, results){
if(err){
console.error({ 'message': 'Error occured: Cannot fetch list of customers ' + err });
res.status(404).send('Customer data not found');
}else{
console.log('success');
res.json(results);
}
})
}

function getCustomersByStoreId(req, res){
let storeId = req.params.storeId;
console.log('getting customers with store id', storeId);

let sql = `SELECT * from customers WHERE store_id = ?`;
let paramReplacements = [storeId];
sql = mysql.format(sql, paramReplacements);

pool.query(sql, function(err, results){
if(err){
console.error('Internal Service Error', err);
res.status(500).send('Error Occured');
}else if(results.length === 0){
res.status(404).send('There are no customers at this store or the store doesn\'t exist yet');
console.log('empty array returned', err);
}else{
res.json(results);
console.log('success!')
}
})
}

function getAllCustomerContactInfo(req, res){

let sql = `SELECT customers.customer_id, customers.first_name, customers.last_name, address.phone, customers.email, address.address, city.city, address.district, country.country
FROM address
JOIN customers
ON customers.address_id = address.address_id
JOIN city
ON address.city_id = city.city_id
JOIN country
ON city.country_id = country.country_id
GROUP BY customer_id`

pool.query(sql, function(err, results){
if(err){
console.error('Internal Service Error', err);
res.status(500).send('Internal Server Error')
}else if(results.length === 0){
console.log('empty array was returned');
res.status(404).send('No data found')
}else{
res.json(results);
console.log('Success in fetching all customer contact info');
}
})
}

function getCustomerContactInfoByCustomerId(req, res){
let customerId = req.params.customer_Id;
console.log('in the customer contact info function/path fetching customer Id', customerId);

let sql = `SELECT customers.customer_id, customers.first_name, customers.last_name, address.phone, customers.email, address.address, address.district
FROM address
JOIN customers
ON customers.address_id = address.address_id
WHERE customer_id = ?
ORDER BY customer_id`

let replacements = [customerId];
sql = mysql.format(sql, replacements);

pool.query(sql, function(err, results){
if(err){
console.error()
}
})

}

module.exports = { getCustomers, getCustomersByStoreId, getCustomerContactInfoByCustomerId, getAllCustomerContactInfo }
12 changes: 8 additions & 4 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,19 @@
const express = require('express') //import express
const app = express() // initialize express into app variable
const bodyParser = require("body-parser"); //import body parser
const port = process.env.PORT || 3306 // streaming port
const port = 3306; // streaming port
const superHeroesRouter = require('./routes/superHeroes.js');
const usersRouter = require('./routes/users.js');
const customersRouter = require('./routes/customers.js');

//** middleware */
app.use(bodyParser.json());
app.use(require('./routes/users.js'));
app.use(require('./routes/superHeroes.js'));
app.use(superHeroesRouter);
app.use(usersRouter);
app.use(customersRouter);


//create listen request here
app.listen(port, () => {
console.log('app is listening on port:', port)
console.log('app is listening on port:', port);
})
13 changes: 13 additions & 0 deletions routes/customers.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
const express = require('express');
const router = express.Router();
const customersController = require('../controllers/customers.js');

router.get('/customers', customersController.getCustomers);

router.get('/customers/:storeId', customersController.getCustomersByStoreId);

router.get('/customersContactInfo', customersController.getAllCustomerContactInfo);

router.get('/customerContactInfo/:customer_Id', customersController.getCustomerContactInfoByCustomerId);

module.exports = router;
2 changes: 1 addition & 1 deletion sql/connection.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//import SQL
const mysql = require('mysql');
const mysql= require('mysql');

//create connection to mysql database and initialize into pool variable to call later
let pool = mysql.createPool({
Expand Down
69 changes: 69 additions & 0 deletions sql/employeeData.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
SELECT 'CREATING DATABASE STRUCTURE' as 'INFO';

DROP TABLE IF EXISTS dept_emp,
dept_manager,
titles,
salaries,
employees,
departments;

/*!50503 set default_storage_engine = InnoDB */;
/*!50503 select CONCAT('storage engine: ', @@default_storage_engine) as INFO */;

CREATE TABLE employees (
emp_no INT NOT NULL,
birth_date DATE NOT NULL,
first_name VARCHAR(14) NOT NULL,
last_name VARCHAR(16) NOT NULL,
gender ENUM ('M','F') NOT NULL,
hire_date DATE NOT NULL,
PRIMARY KEY (emp_no)
);

CREATE TABLE departments (
dept_no CHAR(4) NOT NULL,
dept_name VARCHAR(40) NOT NULL,
PRIMARY KEY (dept_no),
UNIQUE KEY (dept_name)
);

CREATE TABLE dept_manager (
emp_no INT NOT NULL,
dept_no CHAR(4) NOT NULL,
from_date DATE NOT NULL,
to_date DATE NOT NULL,
FOREIGN KEY (emp_no) REFERENCES employees (emp_no) ON DELETE CASCADE,
FOREIGN KEY (dept_no) REFERENCES departments (dept_no) ON DELETE CASCADE,
PRIMARY KEY (emp_no,dept_no)
);

CREATE TABLE dept_emp (
emp_no INT NOT NULL,
dept_no CHAR(4) NOT NULL,
from_date DATE NOT NULL,
to_date DATE NOT NULL,
FOREIGN KEY (emp_no) REFERENCES employees (emp_no) ON DELETE CASCADE,
FOREIGN KEY (dept_no) REFERENCES departments (dept_no) ON DELETE CASCADE,
PRIMARY KEY (emp_no,dept_no)
);

CREATE TABLE titles (
emp_no INT NOT NULL,
title VARCHAR(50) NOT NULL,
from_date DATE NOT NULL,
to_date DATE,
FOREIGN KEY (emp_no) REFERENCES employees (emp_no) ON DELETE CASCADE,
PRIMARY KEY (emp_no,title, from_date)
)
;

CREATE TABLE salaries (
emp_no INT NOT NULL,
salary INT NOT NULL,
from_date DATE NOT NULL,
to_date DATE NOT NULL,
FOREIGN KEY (emp_no) REFERENCES employees (emp_no) ON DELETE CASCADE,
PRIMARY KEY (emp_no, from_date)
)
;