Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
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
29 changes: 29 additions & 0 deletions dustin/.eslintrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
module.exports = {
"env": {
"es6": true,
"node": true,
"mocha": true
},
"extends": "eslint:recommended",
"parserOptions": {
"sourceType": "module"
},
"rules": {
"indent": [
"error",
2
],
"linebreak-style": [
"error",
"unix"
],
"quotes": [
"error",
"single"
],
"semi": [
"error",
"always"
]
}
};
2 changes: 2 additions & 0 deletions dustin/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
/node_modules
/db
22 changes: 22 additions & 0 deletions dustin/gulpfile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
const gulp = require('gulp');
const mocha = require('gulp-mocha');
const lint = require('gulp-eslint');

gulp.task('linter' , () => {
return gulp.src(['./*.js', './test/*.js', './lib/*.js'])
.pipe(lint())
.pipe(lint.format());
});

gulp.task('tests', () => {
return gulp.src(['./*.js', './test/*.js', './lib/*.js'], {read: false})
.pipe(mocha({reporter: 'nyan'}));
});

gulp.task('watch', () => {
gulp.watch(['./*.js', './test/*.js', './lib/*.js'], ['linter', 'tests']);
});

gulp.task('default', ['linter', 'tests', 'watch'], () => {

});
5 changes: 5 additions & 0 deletions dustin/lib/errorhandler.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module.exports = function (err, req, res, next) {
res.status(500).json({
message: err.message
});
};
31 changes: 31 additions & 0 deletions dustin/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"name": "SharkTankAPI",
"version": "0.0.1",
"description": "",
"main": "server.js",
"directories": {
"test": "test"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server.js"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"chai": "^3.5.0",
"chai-http": "^2.0.1",
"gulp": "^3.9.1",
"gulp-eslint": "^2.0.0",
"gulp-mocha": "^2.2.0",
"mocha": "^2.4.5",
"morgan": "^1.7.0"
},
"dependencies": {
"body-parser": "^1.15.1",
"express": "^4.13.4",
"json-fs-store": "^1.0.0",
"mongoose": "^4.4.19"
}
}
70 changes: 70 additions & 0 deletions dustin/routes/companies.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
'use strict';
var express = require('express');
var router = express.Router();
const bodyParser = require('body-parser').json();
const Company = require('../schema/companies');

//index companies
router.get('/', (req, res, next) => {
Company.find({}, (err, companies) => {
if (err) return next(err);
res.json(companies);
});
});

router.get('/dealstats', (req, res, next) => {

//get tvDealValuation amount
Company.find({
tvDealValuation: {
$ne: true
}
}, (err, companies) => {
if (err) return next(err);
let count = 0;
let total = (companies.reduce((a,b)=> {
if (b.tvDealValuation) ++count;
return a + b.tvDealValuation;
},0));
res.send({averageTvDealValuation: total/count, totalTvDealValuation: total });
});
});

//create companies
router.post('/', bodyParser, (req, res, next) => {
let newCompany = new Company(req.body);
newCompany.save((err, company) => {
if (err) return next(err);
res.json(company);
});
});

//put company
router.put('/', bodyParser, (req, res, next) => {
let _id = req.body._id;
Company.findOneAndUpdate({
_id
}, req.body, (err) => {
if (err) return next(err);
let message = 'successfully update';
res.json({
message
});
});
});

//delete companies
router.delete('/:id', (req, res, next) => {
let _id = req.params.id;
Company.findOneAndRemove({
_id
}, (err) => {
if (err) return next(err);
let message = 'sucessfully deleted';
res.json({
message
});
});
});

module.exports = router;
9 changes: 9 additions & 0 deletions dustin/routes/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
var express = require('express');
var router = express.Router();


router.get('/', function(req, res) {
res.send('shark tank api');
});

module.exports = router;
50 changes: 50 additions & 0 deletions dustin/routes/sharks.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
'use strict';
var express = require('express');
var router = express.Router();
const bodyParser = require('body-parser').json();
const Shark = require('../schema/companies');

//index companies
router.get('/', (req, res, next) => {
Shark.find({}, (err, companies) => {
if (err) return next(err);
res.json(companies);
});
});

//create companies
router.post('/', bodyParser, (req, res, next) => {
let newShark = new Shark(req.body);
newShark.save((err, shark) => {
if (err) return next(err);
res.json(shark);
});
});

//put shark
router.put('/', bodyParser, (req, res, next) => {
let _id = req.body._id;
Shark.findOneAndUpdate({_id}, req.body, (err) => {
if (err) return next(err);
let message = 'successfully update';
res.json({
message
});
});
});

//delete companies
router.delete('/:id', (req, res, next) => {
let _id = req.params.id;
Shark.findOneAndRemove({
_id
}, (err) => {
if (err) return next(err);
let message = 'sucessfully deleted';
res.json({
message
});
});
});

module.exports = router;
23 changes: 23 additions & 0 deletions dustin/schema/companies.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
'use strict';
const mongoose = require('mongoose');

const Company = new mongoose.Schema({
name: String,
tvDealReached: Boolean,
seekAmount: Number,
seekEquity: Number,
seekValuation: Number,
tvDealAmount: Number,
tvDealEquity: Number,
tvDealValuation: Number,
actualDealReached: Boolean,
actualDealAmount: Number,
actualDealEquity: Number,
actualDealValuation: Number,
season: Number,
episode: Number
//sharks: Schema.Types.sharks;
//{type: Number, default: 0}
});

module.exports = mongoose.model('companies', Company);
85 changes: 85 additions & 0 deletions dustin/schema/db_seeds/company_seeds.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
'use strict';

const mongoose = require('mongoose');
const Company = require('../../schema/companies');

process.env.NODE_ENV = 'DEV';
if (process.env.NODE_ENV === 'TEST') mongoose.connect('mongodb://localhost/test_db');
if (process.env.NODE_ENV === 'DEV') mongoose.connect('mongodb://localhost/dev_db');

mongoose.connection.collections['companies'].drop(function () {
console.log('collection dropped');
});

new Company({
name: 'Scrub Daddy',
tvDealReached: true,
tvDealAmount: 300000,
tvDealEquity: .33,
tvDealValuation: 1000000,
actualDealReached: true,
season: 4,
episode: 7
}).save((err, data) => {
if (err) console.log(err);
if (data) console.log('Company ' + data.name + ' created');
});

new Company({
name: 'Squatty Potty',
tvDealReached: true,
tvDealAmount: 350000,
tvDealEquity: .1,
tvDealValuation: 3500000,
actualDealReached: true,
season: 6,
episode: 9
}).save((err, data) => {
if (err) console.log(err);
if (data) console.log('Company ' + data.name + ' created');
});

new Company({
name: 'Cousins Maine Lobster',
tvDealReached: true,
tvDealAmount: 55000,
tvDealEquity: .15,
tvDealValuation: 366667,
actualDealReached: true,
season: 4,
episode: 6
}).save((err, data) => {
if (err) console.log(err);
if (data) console.log('Company ' + data.name + ' created');
});

new Company({
name: 'Tower Paddle Boards',
tvDealReached: true,
tvDealAmount: 150000,
tvDealEquity: .3,
tvDealValuation: 500000,
actualDealReached: true,
season: 3,
episode: 9
}).save((err, data) => {
if (err) console.log(err);
if (data) console.log('Company ' + data.name + ' created');
});

new Company({
name: 'Bantam Bagels',
tvDealReached: true,
tvDealAmount: 275000,
tvDealEquity: .25,
tvDealValuation: 1100000,
actualDealReached: true,
season: 6,
episode: 13
}).save((err, data) => {
if (err) console.log(err);
if (data) console.log('Company ' + data.name + ' created');
mongoose.connection.close(function (data) {
//if (cb) cb();
});
})
60 changes: 60 additions & 0 deletions dustin/schema/db_seeds/shark_seeds.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
'use strict';

const mongoose = require('mongoose');
const Shark = require('../../schema/sharks');


process.env.NODE_ENV='DEV'
if (process.env.NODE_ENV === 'TEST') mongoose.connect('mongodb://localhost/test_db');
if (process.env.NODE_ENV === 'DEV') mongoose.connect('mongodb://localhost/dev_db');

mongoose.connection.collections['sharks'].drop(function () {
console.log('collection dropped');

new Shark({
name: 'Kevin O\'Leary'
}).save((err, data) => {
if (err) console.log(err);
if (data) console.log('Shark ' + data.name + ' created');
});

new Shark({
name: 'Barbara Corcoran'
}).save((err, data) => {
if (err) console.log(err);
if (data) console.log('Shark ' + data.name + ' created');
});

new Shark({
name: 'Daymond John'
}).save((err, data) => {
if (err) console.log(err);
if (data) console.log('Shark ' + data.name + ' created');
});

new Shark({
name: 'Robert Herjavec'
}).save((err, data) => {
if (err) console.log(err);
if (data) console.log('Shark ' + data.name + ' created');
});

new Shark({
name: 'Lori Greiner'
}).save((err, data) => {
if (err) console.log(err);
if (data) console.log('Shark ' + data.name + ' created');
});

new Shark({
name: 'Mark Cuban'
}).save((err, data) => {
if (err) console.log(err);
if (data) {
console.log('Shark ' + data.name + ' created');
mongoose.connection.close(function (data) {
//if (cb) cb();
});
}
});
});
Loading