Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
69 commits
Select commit Hold shift + click to select a range
88e1fd4
Update README.md
Runone Nov 3, 2018
41f7b48
Merge pull request #1 from Runone/database
Runone Nov 3, 2018
97a19db
Merge pull request #2 from Runone/routes
Runone Nov 3, 2018
8a6c8be
Merge pull request #3 from Runone/react_components
Runone Nov 3, 2018
190d2a8
Merge pull request #4 from Runone/enzyme_jest
Runone Nov 3, 2018
f28c4bb
Merge pull request #3 from Runone/enzyme_jest
Runone Nov 4, 2018
52e1a60
Create index.html
Runone Nov 5, 2018
088b081
Merge pull request #4 from Runone/enzyme_jest
Runone Nov 5, 2018
8016c9c
Merge pull request #5 from Runone/enzyme_jest
Runone Nov 5, 2018
e3dbf96
Update README.md
Runone Nov 5, 2018
c139bbe
Merge pull request #6 from Runone/enzyme_jest
Runone Nov 5, 2018
78d38e1
Merge pull request #7 from Runone/enzyme_jest
Runone Nov 5, 2018
aca4f36
Delete bundled.js
Runone Nov 5, 2018
2518184
Delete index.html
Runone Nov 5, 2018
1f0efa5
Delete bundled.js
Runone Nov 5, 2018
7e226ba
Merge branch 'master' into enzyme_jest
Runone Nov 5, 2018
9571ca2
Merge pull request #5 from Runone/enzyme_jest
Runone Nov 5, 2018
a543bf2
Update README.md
Runone Nov 5, 2018
874acea
Update README.md
Runone Nov 5, 2018
33b6aeb
Update README.md
Runone Nov 5, 2018
8865ffa
refactor package.json file and readMe file
Runone Nov 5, 2018
9810005
changed package.json script
Runone Nov 5, 2018
9accb1e
Merge pull request #8 from Runone/master
Runone Nov 5, 2018
1c76a17
ReadMe file final version
Runone Nov 5, 2018
5bfb5b1
Merge pull request #9 from Runone/master
Runone Nov 5, 2018
2e83081
Update README.md
Runone Nov 5, 2018
647986c
FINAL VERSION README
Runone Nov 5, 2018
3ee7c37
Merge pull request #10 from Runone/master
Runone Nov 5, 2018
573df2a
Update package.json
Runone Nov 5, 2018
a3d8c14
make changes for proxy connection
Runone Nov 6, 2018
6d6f834
Merge pull request #11 from Runone/proxy
zhantia1 Nov 6, 2018
9ee2bd9
Added dockfiles and refactor seed.js to create csv
Runone Nov 9, 2018
409576e
Refactored seed.js file
Runone Nov 9, 2018
ccb4594
Docker containers renders react-app with data
Runone Nov 9, 2018
090dc07
Added docker-compose.yml, app is now deployed on EC2
Runone Nov 10, 2018
e83c9de
deleted bundled.js from dist folder and uploaded bundled.js to s3
Runone Nov 10, 2018
731f4cb
Added CORS headers for server
Runone Nov 10, 2018
6ede232
Refactor to compress bundle.js to gzip file
Runone Nov 10, 2018
769428a
Merge branch 'master' into docker
Runone Nov 11, 2018
02be63e
Merge pull request #12 from Runone/docker
Runone Nov 11, 2018
0912716
CRUD added
briandhus Nov 15, 2018
03c06c3
CRUD added
briandhus Nov 15, 2018
b03b818
Delete bundled.js
briandhus Nov 16, 2018
97109e3
Delete bundled.js
briandhus Nov 16, 2018
7263855
Delete bundled.js.gz
briandhus Nov 16, 2018
262e412
Delete bundled.js.gz
briandhus Nov 16, 2018
69c24af
Refactor code for backend optimization. Add crud operations. New seed…
briandhus Nov 16, 2018
446e294
Refactor code for backend optimization. Add crud operations. New seed…
briandhus Nov 16, 2018
194c06f
Merge pull request #1 from whatslunch/first-branch
briandhus Nov 16, 2018
ba53742
Merge pull request #1 from whatslunch/first-branch
briandhus Nov 16, 2018
c899110
Clean up.
briandhus Nov 17, 2018
0cce021
Clean up.
briandhus Nov 17, 2018
9ba332a
Fix data generation number
briandhus Nov 17, 2018
823ae11
Fix data generation number
briandhus Nov 17, 2018
4b886f9
Delete restaurant.csv
briandhus Nov 25, 2018
82aa465
Delete restaurant.csv
briandhus Nov 25, 2018
65725d5
Delete user.csv
briandhus Nov 25, 2018
f287f99
Delete user.csv
briandhus Nov 25, 2018
1417ed9
Delete review.csv
briandhus Nov 25, 2018
a05d05c
Delete review.csv
briandhus Nov 25, 2018
e88b98f
Delete user_info.csv
briandhus Nov 25, 2018
108d9c9
Delete user_info.csv
briandhus Nov 25, 2018
fc72d05
Delete users_reviews.csv
briandhus Nov 25, 2018
120b116
Delete users_reviews.csv
briandhus Nov 25, 2018
fb19695
Set up for Mongodb, including seed file.
briandhus Nov 25, 2018
2f3fdc2
Merge branch 'master' of https://github.com/whatslunch/nomnoms-reviews
briandhus Nov 25, 2018
366b29a
Server updated crud for mongodb. Mongo queries written. K6 scripts fo…
briandhus Nov 26, 2018
3812c48
Merge branch 'master' of https://github.com/whatslunch/nomnoms-reviews
briandhus Nov 26, 2018
522cac5
Update newrelic.js
briandhus Nov 26, 2018
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
8 changes: 7 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,11 @@ coverage

# Compiled Dirs (http://nodejs.org/api/addons.html)
build/
dist/bundled.js
public/dist/bundled.js

images/

database/restaurant.csv
database/review.csv
database/review2.csv
database/mongoReview.json
9 changes: 8 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,4 +51,11 @@ From within the root directory:
npm install -g webpack
npm install
```

## Endpoints

| Action | Method | Endpoint | Purpose |
| ------------- | ------------- | ----------------------------- | -------------------- |
| Create | POST | /restaurants/:name | Insert new name |
| Read(one) | GET | /restaurant/:restaurant_id | Get one row |
| Update | PUT | /api/:restaurant_id/ | Update one row |
| Delete | DELETE | /api/:restaurant_id/ | Delete one row |
2 changes: 1 addition & 1 deletion client/components/app.js → client/components/app.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class App extends React.Component {
}

fetchReviews(id) {
$.ajax(`http://100.24.121.85:3000/api/${id}`, {
$.ajax(`http://localhost:3000/api/${id}`, {
success: (reviews) => {
const wrappedReviews = reviews.map(restaurant => {
return {
Expand Down
File renamed without changes.
1 change: 1 addition & 0 deletions client/components/user.js → client/components/user.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ const Wrapper = styled.div`
.food_picture {
height: 300px;
width: 300px;
border-radius: 8px;
}
}
.date {
Expand Down
2 changes: 1 addition & 1 deletion client/components/users.js → client/components/users.jsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import React from 'react';
import User from './user.js';
import User from './user';

const Users = ({ reviews }) => {
const filtered = reviews.filter(restaurant => restaurant.searched === true);
Expand Down
2 changes: 1 addition & 1 deletion client/src/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React from 'react';
import ReactDOM from 'react-dom';
import App from '../components/app.js';
import App from '../components/app';


ReactDOM.render(<App/>, document.getElementById('recommended-reviews'));
113 changes: 101 additions & 12 deletions database/index.js
Original file line number Diff line number Diff line change
@@ -1,30 +1,119 @@
const mysql = require('mysql');
const mongoose = require('mongoose');

<<<<<<< HEAD
mongoose.connect('mongodb://localhost/whats_lunch');

const restaurantSchema = mongoose.Schema({
id: Number,
restaurant_name: String,
reviews: [{
user_name: String,
user_avatar: String,
location: String,
date: String,
score: Number,
food_image: String,
}],
});

const Restaurant = mongoose.model('restaurant_reviews', restaurantSchema);

// retrieve
const retrieve = (id, callback) => {
Restaurant.find({ id }, (err, res) => {
if (err) {
callback(err, null);
=======
// connect to database
const connection = mysql.createConnection({
host: 'database',
// host: 'database',
user: 'root',
database: 'yump_SF',
});

connection.connect();

const restaurantReviews = function (id, callback) {
const restaurantReviews = (id, callback) => {
// const query = `
// select restaurant.name, user_info.user_avatar, user_info.user_name,
// user_info.location, user_info.number_reviews, user_info.number_photos,
// users_reviews.date, users_reviews.review_comment, users_reviews.score,
// users_reviews.picture_food, restaurant.name FROM users_reviews
// INNER JOIN restaurant ON restaurant.id = users_reviews.id
// INNER JOIN user_info ON user_info.user_id = users_reviews.user_id
// WHERE restaurant.id = ${id}
// ORDER BY users_reviews.date desc
// `;
const query = `
select restaurant.name, user_info.user_avatar, user_info.user_name, user_info.location, user_info.number_reviews, user_info.number_photos, users_reviews.date, users_reviews.review_comment, users_reviews.score, users_reviews.picture_food, restaurant.name FROM users_reviews
INNER JOIN restaurant ON restaurant.restaurant_id = users_reviews.restaurant_id
INNER JOIN user_info ON user_info.user_id = users_reviews.user_id
WHERE restaurant.restaurant_id = ${id}
ORDER BY users_reviews.date desc
select restaurant.name, reviews.user_avatar, reviews.user_name,
reviews.location, reviews.date, reviews.review_comment, reviews.score,
reviews.food_image, restaurant.name FROM reviews
INNER JOIN restaurant ON restaurant.id = reviews.id
ORDER BY reviews.date desc
`;
connection.query(query, (error, results) => {
if (error) {
callback(error, null);
>>>>>>> 120b116db8885360688788a2bf49c32e16bfa8c1
} else {
callback(null, results);
callback(null, res);
}
});
};

<<<<<<< HEAD
const addRestaurant = (restaurant_name, callback) => {
Restaurant.create({ restaurant_name }, (err, res) => {
if (err) {
callback(err, null);
} else {
callback(null, res);
}
});
};

module.exports.retrieve = retrieve;
module.exports.addRestaurant = addRestaurant;
=======
const getOne = (id, callback) => {
const query = 'SELECT * FROM restaurant WHERE id = (?)';
connection.query(query, [id], (error, results) => {
if (error) {
callback(error);
}
callback(null, results);
});
};

const addRestaurant = (name, callback) => {
const query = 'INSERT INTO restaurant (name) VALUES (?)';
connection.query(query, [name], (error, results) => {
if (error) {
callback(error);
}
callback(null, results);
});
};

module.exports = { connection, restaurantReviews };
const editRestaurant = (id, newName, callback) => {
const query = `UPDATE restaurant SET name = (?) WHERE id = ${id}`;
connection.query(query, [newName], (error) => {
if (error) {
callback(error);
}
callback(null);
});
};

const deleteRestaurant = (id, callback) => {
const query = 'DELETE from restaurant WHERE id = ?';
connection.query(query, [Number(id)], (error) => {
if (error) {
callback(error);
}
callback(null);
});
};

module.exports = {
connection, restaurantReviews, addRestaurant, editRestaurant, deleteRestaurant, getOne,
};
>>>>>>> 120b116db8885360688788a2bf49c32e16bfa8c1
49 changes: 49 additions & 0 deletions database/mongoSeed.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
const faker = require('faker');
const fs = require('fs');
const moment = require('moment');

const randomInt = max => Math.floor(Math.random() * max + 1);

const stream = fs.createWriteStream('./database/mongoReview.json');

let i = 0;

function write() {
while (i < 10000000) {
i += 1;
let fakeDate = faker.date.past();
fakeDate = JSON.stringify(fakeDate).slice(1, 11);
const name = faker.company.companyName();
const reviewNum = randomInt(14);
const restaurantReviews = {};
restaurantReviews.id = i;
restaurantReviews.restaurant_name = name;
restaurantReviews.reviews = [];

for (let j = 0; j < reviewNum; j += 1) {
const newReview = {};
// newReview.review_id = j;
newReview.user_name = faker.name.findName();
newReview.user_avatar = faker.image.avatar();
newReview.location = `${faker.address.city()} ${faker.address.state()}`;
newReview.date = moment(fakeDate).format('YYYY-MM-DD');
newReview.score = randomInt(10);
newReview.food_image = `https://s3-us-west-1.amazonaws.com/yump-sf-images/${randomInt(499)}.jpg`;
restaurantReviews.reviews.push(newReview);
}

if (!stream.write(`${JSON.stringify(restaurantReviews)}\n`)) {
return;
}
if (i % 1000) {
console.log(`${(i / 10000000 * 100).toFixed(2)} %`);
console.clear();
}
}
stream.end();
}
stream.on('drain', () => {
write();
});

write();
79 changes: 79 additions & 0 deletions database/mysql.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
const mysql = require('mysql');

// connect to database
const connection = mysql.createConnection({
// host: 'database',
user: 'root',
database: 'yump_SF',
});

const restaurantReviews = (id, callback) => {
// const query = `
// select restaurant.name, user_info.user_avatar, user_info.user_name,
// user_info.location, user_info.number_reviews, user_info.number_photos,
// users_reviews.date, users_reviews.review_comment, users_reviews.score,
// users_reviews.picture_food, restaurant.name FROM users_reviews
// INNER JOIN restaurant ON restaurant.id = users_reviews.id
// INNER JOIN user_info ON user_info.user_id = users_reviews.user_id
// WHERE restaurant.id = ${id}
// ORDER BY users_reviews.date desc
// `;
const query = `
select restaurant.name, reviews.user_avatar, reviews.user_name,
reviews.location, reviews.date, reviews.review_comment, reviews.score,
reviews.food_image, restaurant.name FROM reviews
INNER JOIN restaurant ON restaurant.id = reviews.id
ORDER BY reviews.date desc
`;
connection.query(query, (error, results) => {
if (error) {
callback(error, null);
} else {
callback(null, results);
}
});
};

const getOne = (id, callback) => {
const query = 'SELECT * FROM restaurant WHERE id = (?)';
connection.query(query, [id], (error, results) => {
if (error) {
callback(error);
}
callback(null, results);
});
};

const addRestaurant = (name, callback) => {
const query = 'INSERT INTO restaurant (name) VALUES (?)';
connection.query(query, [name], (error, results) => {
if (error) {
callback(error);
}
callback(null, results);
});
};

const editRestaurant = (id, newName, callback) => {
const query = `UPDATE restaurant SET name = (?) WHERE id = ${id}`;
connection.query(query, [newName], (error) => {
if (error) {
callback(error);
}
callback(null);
});
};

const deleteRestaurant = (id, callback) => {
const query = 'DELETE from restaurant WHERE id = ?';
connection.query(query, [Number(id)], (error) => {
if (error) {
callback(error);
}
callback(null);
});
};

module.exports = {
connection, restaurantReviews, addRestaurant, editRestaurant, deleteRestaurant, getOne,
};
37 changes: 37 additions & 0 deletions database/mysqlSchema.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
CREATE DATABASE yump_SF;

use yump_SF;

create table restaurant (
id INT auto_increment primary key,
name TEXT not null
);

create table reviews (
id INT auto_increment primary key,
restaurant_id INT not null,
user_name TEXT not null,
user_avatar TEXT not null,
location TEXT not null,
date DATE not null,
comment TEXT not null,
score TINYINT not null,
food_image TEXT not null,
foreign key (restaurant_id)
references restaurant (id)
ON DELETE CASCADE
);

LOAD DATA LOCAL INFILE './database/restaurant.csv'
INTO TABLE restaurant
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;

LOAD DATA LOCAL INFILE './database/review.csv'
INTO TABLE reviews
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS;
Loading