Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
f2efda4
added notes.md
ktrops Sep 15, 2015
8558b23
Created express
vikshab Sep 15, 2015
388b534
Created a new express app
vikshab Sep 16, 2015
bd0118c
Added module folder to gitignore and gs
vikshab Sep 17, 2015
5150624
Node module folder was removed from git
vikshab Sep 17, 2015
fe64a4e
Created database and schema
vikshab Sep 17, 2015
3905da6
Seeded our customers and movies tables
vikshab Sep 17, 2015
2cf76bb
Database wip
vikshab Sep 18, 2015
cbad32e
updated notes to be more specific
ktrops Sep 18, 2015
291c4b9
set up database tests and stuff
ktrops Sep 18, 2015
025adf7
1 green test. yay.
ktrops Sep 18, 2015
4793b2b
Created schema for test
vikshab Sep 18, 2015
f5ab85e
Wrote displayAllMovies method in index.js
vikshab Sep 21, 2015
09a12ac
Added var customers and movies in app.js
vikshab Sep 21, 2015
ce8e9e8
Got find_all customers work, displays on web page
vikshab Sep 21, 2015
d7423b7
Test for find_all customers is green
vikshab Sep 21, 2015
71d253e
Got 10 green tests, created route for another endpoint - sorting movi…
vikshab Sep 22, 2015
d7822ec
merge conflicts
ktrops Sep 22, 2015
677b9bd
merge conflicts
ktrops Sep 22, 2015
fcd3f8f
removing db files
ktrops Sep 22, 2015
e084d87
Added new methods in customer controller
vikshab Sep 22, 2015
5e6e24d
Added new method ffindMovieByTitle in movies conroller, added routed …
vikshab Sep 22, 2015
0a8f99e
Added method sortCustomersByPostalCode in customers controller, added…
vikshab Sep 22, 2015
6945f02
Merge pull request #1 from vikshab/vica
ktrops Sep 22, 2015
ed8402a
seed data for rentals
ktrops Sep 22, 2015
ef29082
merge conflicts
ktrops Sep 22, 2015
dd3d2ac
Merge pull request #2 from vikshab/kja
vikshab Sep 22, 2015
9bb8db2
Small changed to notes file
vikshab Sep 22, 2015
92aa329
Got rid of the db folder from git
vikshab Sep 22, 2015
6d3c6af
Added available method in database, added a new route for movies/:tit…
vikshab Sep 22, 2015
266834c
Commented out unnessasary information in customer model
vikshab Sep 22, 2015
6e60589
Merge pull request #3 from vikshab/movies_title_available
ktrops Sep 22, 2015
43920e5
WIP working on /:title/customers/current endpoint
ktrops Sep 22, 2015
84333af
small changes in notes
vikshab Sep 22, 2015
acf9555
Merge branch 'kja+vs/master' of github.com:vikshab/C3Projects--VideoS…
vikshab Sep 22, 2015
e4e52db
merge conflicts
ktrops Sep 22, 2015
c4c647c
Merge pull request #4 from vikshab/kja
vikshab Sep 22, 2015
17b581a
Merge branch 'kja+vs/master' of github.com:vikshab/C3Projects--VideoS…
vikshab Sep 22, 2015
2ce0f32
Created method to display all customer rental history, wrote tests, a…
vikshab Sep 23, 2015
e31df61
working /movies/:title/customers/current endpoint. Need more tests
ktrops Sep 23, 2015
10b78f0
Overdue function WIP
vikshab Sep 23, 2015
018ede8
Overdue function almost done
vikshab Sep 23, 2015
4260c67
added one new seed rental data
ktrops Sep 23, 2015
ff4989d
Finished overdue function, will return customers and there overdue info
vikshab Sep 23, 2015
d040267
Small changes added to rental model tests
vikshab Sep 23, 2015
d717626
Merge pull request #5 from vikshab/kja
vikshab Sep 23, 2015
e13e95e
Fixed merge conflicts
vikshab Sep 23, 2015
347bd7d
refactored currentCustomerRentals, so that the logic is in the model.
ktrops Sep 23, 2015
de58064
merging
ktrops Sep 23, 2015
17842aa
Merge pull request #7 from vikshab/katie
vikshab Sep 23, 2015
563943f
Notes - check marks for completed tasks
vikshab Sep 23, 2015
4ed5dcc
Merge branch 'kja+vs/master' of github.com:vikshab/C3Projects--VideoS…
vikshab Sep 23, 2015
a1a4d80
notes added checkmarks
vikshab Sep 23, 2015
accc5ce
Refactored code
vikshab Sep 23, 2015
b76f68e
Merge pull request #6 from vikshab/rentals
ktrops Sep 23, 2015
04609f6
Merge branch 'kja+vs/master' of github.com:vikshab/C3Projects--VideoS…
vikshab Sep 23, 2015
cd8e7ff
added sort_by_name and sort_by_id for /movies/:title/customers/past/ …
ktrops Sep 23, 2015
4794fde
checkin function WIP
vikshab Sep 23, 2015
de27654
finshed /:title/customers/past/sort_by_checkout_date endpoint. need m…
ktrops Sep 24, 2015
f9a7eea
got /customers/:id/movies/past enpoint to work
ktrops Sep 24, 2015
9b854ff
Rentals controller - Wrote method for checkin
vikshab Sep 25, 2015
814cb76
Did some refactoring
vikshab Sep 25, 2015
88428bc
Refactored some code
vikshab Sep 25, 2015
0f418d1
Merge pull request #8 from vikshab/katie
vikshab Sep 25, 2015
f8d20d7
finshed /customers/:id/movies/past endpoint
ktrops Sep 25, 2015
39adcee
Fixed merge conflicts
vikshab Sep 25, 2015
f60d61e
merge conflicts
ktrops Sep 25, 2015
af10cd0
Merge pull request #9 from vikshab/checkin
ktrops Sep 25, 2015
e2c3ba2
merging conflicts
ktrops Sep 25, 2015
9948607
Merge pull request #10 from vikshab/katie
vikshab Sep 25, 2015
b7099ac
Added url for test purpose
vikshab Sep 25, 2015
3bc7410
Deleted commented out code
vikshab Sep 25, 2015
1486bc7
refactoring, tests wip
vikshab Sep 25, 2015
9f1f825
WIP schema
ktrops Sep 25, 2015
bbf6dbc
changed seed and schema so that it runs one command as a time(i.e. ad…
ktrops Sep 25, 2015
c1ea0c5
added scripts so that I can run the seed and schema from the runner(i…
ktrops Sep 25, 2015
6dea048
Merge pull request #11 from vikshab/katie
vikshab Sep 25, 2015
a442471
Deleted only from tests
vikshab Sep 25, 2015
1583720
fixed seed adn schema
ktrops Sep 25, 2015
213ec66
Merge branch 'kja+vs/master' of github.com:vikshab/C3Projects--VideoS…
ktrops Sep 25, 2015
b4fe7f3
fixing syntax error
ktrops Sep 25, 2015
97db1f0
Merge pull request #12 from vikshab/katie
vikshab Sep 25, 2015
0b73b8a
29 green tests, fixed movies_controller_test and custome_contollers_t…
vikshab Sep 25, 2015
ef3096c
Merge pull request #13 from vikshab/vika
vikshab Sep 25, 2015
e4aece5
Added tests for /movies endpoints - movies_controller_test is completed
vikshab Sep 25, 2015
d8f0b82
refactoring some code, added tests, 35 green tests
vikshab Sep 25, 2015
8b44564
added /customers/2/movies/current endpoint
ktrops Sep 26, 2015
9f7ad8f
merge conflicts
ktrops Sep 26, 2015
4f1748f
Merge pull request #14 from vikshab/katie
ktrops Sep 26, 2015
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
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
.DS_Store
node_modules/
db/
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,9 @@ The API you build should have the following capabilities. The schema of your dat
- Given a customer's `id` and a movie's `title` ...
- "check out" one of the movie's inventory to the customer
- Establish a return date
- Charge the customer's account (cost up to you)
- "check in" one of customer's rentals
- return the movie to its inventory
- Charge the customer's account (cost up to you)
- See a list of customers with overdue movies

### Interface
Expand Down
64 changes: 64 additions & 0 deletions app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');


var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

var customers = require('./routes/customers');
app.use('/customers', customers);

var movies = require('./routes/movies');
app.use('/movies', movies);

var rent = require('./routes/rentals');
app.use('/rent', rent);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});

// error handlers

// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: err
});
});
}

// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
message: err.message,
error: {}
});
});


module.exports = app;
90 changes: 90 additions & 0 deletions bin/www
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
#!/usr/bin/env node

/**
* Module dependencies.
*/

var app = require('../app');
var debug = require('debug')('C3Projects--VideoStoreAPI:server');
var http = require('http');

/**
* Get port from environment and store in Express.
*/

var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);

/**
* Create HTTP server.
*/

var server = http.createServer(app);

/**
* Listen on provided port, on all network interfaces.
*/

server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

/**
* Normalize a port into a number, string, or false.
*/

function normalizePort(val) {
var port = parseInt(val, 10);

if (isNaN(port)) {
// named pipe
return val;
}

if (port >= 0) {
// port number
return port;
}

return false;
}

/**
* Event listener for HTTP server "error" event.
*/

function onError(error) {
if (error.syscall !== 'listen') {
throw error;
}

var bind = typeof port === 'string'
? 'Pipe ' + port
: 'Port ' + port;

// handle specific listen errors with friendly messages
switch (error.code) {
case 'EACCES':
console.error(bind + ' requires elevated privileges');
process.exit(1);
break;
case 'EADDRINUSE':
console.error(bind + ' is already in use');
process.exit(1);
break;
default:
throw error;
}
}

/**
* Event listener for HTTP server "listening" event.
*/

function onListening() {
var addr = server.address();
var bind = typeof addr === 'string'
? 'pipe ' + addr
: 'port ' + addr.port;
debug('Listening on ' + bind);
}
55 changes: 55 additions & 0 deletions controllers/customers.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
"use strict";
var Customer = require("../models/customer.js");

exports.customersController = {
findAllCustomers: function(req, res) {
var dbCustomer = new Customer();
var result = dbCustomer.find_all(function(err,result){
return res.status(200).json(result);
});
},

sortCustomersByName: function(req, res) {
var dbCustomer = new Customer();
var limit = req.params.limit;
var offset = req.params.offset;
var result = dbCustomer.sort_by("name", limit, offset, function(err,result){
return res.status(200).json(result);
});
},

sortCustomersByRegisteredAt: function(req, res) {
var dbCustomer = new Customer();
var limit = req.params.limit;
var offset = req.params.offset;
// console.log(res)
var result = dbCustomer.sort_by_registered_date("registered_at", limit, offset, function(err,result){
return res.status(200).json(result);
});
},

sortCustomersByPostalCode: function(req, res) {
var dbCustomer = new Customer();
var limit = req.params.limit;
var offset = req.params.offset;
var result = dbCustomer.sort_by("postal_code", limit, offset, function(err,result){
return res.status(200).json(result);
});
},

getMoviesByCustomer: function(req, res) {
var dbCustomer = new Customer();
var customerId = req.params.id;
dbCustomer.past_rentals_by_customer(customerId, function(err, result) {
res.status(200).json(result);
});
},

getCurrentMoviesbyCustomer: function(req, res) {
var dbCustomer = new Customer();
var customerId = req.params.id;
dbCustomer.current_checkout_rentals('customer_id', customerId, function(err, result) {
res.status(200).json(result);
});
}
}
81 changes: 81 additions & 0 deletions controllers/movies.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
"use strict";
var Movie = require("../models/movie.js");
var Rental = require("../models/rental");
var Customer = require("../models/customer");

exports.moviesController = {
findAllMovies: function(req, res) {
var dbMovie = new Movie();
dbMovie.find_all(function(err,result){
res.status(200).json(result);
});
},

findMovieByTitle: function(req, res) {
var dbMovie = new Movie();
var value = req.params.title;
console.log(value);
dbMovie.find_by("title", value, function(err,result){
res.status(200).json(result);
});
},

sortMoviesByTitle: function(req, res) {
var dbMovie = new Movie();
var limit = req.params.limit;
var offset = req.params.offset;
dbMovie.sort_by("title", limit, offset, function(err,result){
res.status(200).json(result);
});
},

sortMoviesByReleaseDate: function(req, res) {
var dbMovie = new Movie();
var limit = req.params.limit;
var offset = req.params.offset;
dbMovie.sort_by("release_date", limit, offset, function(err,result){
res.status(200).json(result);
});
},

currentCustomerRentals: function(req, res) {
var dbMovie = new Movie();
var dbRental = new Rental();
var dbCustomer = new Customer();
var title = req.params.title;
dbMovie.getCurrentRentalCustomer(dbMovie, dbRental, dbCustomer, title, function(error, result) {
console.log(result);
res.status(200).json(result);
});
},

pastCustomerRentals: function(req, res) {
var dbMovie = new Movie();
var dbRental = new Rental();
var dbCustomer = new Customer();
var title = req.params.title;
var regex = /[^\/]+$/
var sort = regex.exec(req.url)
dbMovie.getPastRentalCustomer(dbMovie, dbRental, dbCustomer, title, sort[0], function(error, result) {
res.status(200).json(result);
});

},

pastCustomerRentalsByDate: function(req, res) {
var dbMovie = new Movie();
var title = req.params.title;

dbMovie.getPastRentalCustomerByDate(dbMovie, title, function(error, result) {
res.status(200).json(result)
});
},

availableMovies: function(req, res) {
var dbMovie = new Movie();
var title = req.params.title;
dbMovie.available(title, function(err,result){
res.status(200).json(result);
});
}
}
Loading