| @@ -0,0 +1,112 @@ | ||
| var Movie = require("../models/movie"); | ||
|
|
||
| var MovieController = { | ||
| all: function(req, res, next) { | ||
| Movie.all(function(error, movies) { | ||
| if(error) { | ||
| var err = new Error("Error retrieving movies list:\n" + error.message); | ||
| err.status = 500; | ||
| next(err); | ||
| } else { | ||
| res.render('index', { title: 'Movies' , stuff: movies}); | ||
| } | ||
| }) | ||
| }, | ||
|
|
||
| item: function(req, res, next) { | ||
| Movie.item([Number(req.params.id)], function(error, item) { | ||
| if(error) { | ||
| var err = new Error("Error retrieving movie:\n" + error.message); | ||
| err.status = 500; | ||
| next(err); | ||
| } else { | ||
| console.log(item) | ||
| res.render('item', { title: 'Movies' , person: 'Director', stuff: item}); | ||
| } | ||
| }) | ||
| }, | ||
|
|
||
| upvote: function(req, res, next) { | ||
| Movie.upvote([Number(req.params.id)], function(error, item) { | ||
| if(error) { | ||
| var err = new Error("Error retrieving movie:\n" + error.message); | ||
| err.status = 500; | ||
| next(err); | ||
| } else { | ||
| Movie.item([Number(req.params.id)], function(error, item) { | ||
| if(error) { | ||
| var err = new Error("Error retrieving movie:\n" + error.message); | ||
| err.status = 500; | ||
| next(err); | ||
| } else { | ||
| res.redirect('http://localhost:3000/movies/'+req.params.id); | ||
| } | ||
| }) | ||
| } | ||
| }) | ||
| }, | ||
|
|
||
| edit: function(req, res, next) { | ||
| Movie.item([Number(req.params.id)], function(error, item) { | ||
| if(error) { | ||
| var err = new Error("Error retrieving movie:\n" + error.message); | ||
| err.status = 500; | ||
| next(err); | ||
| } else { | ||
| console.log(item) | ||
| res.render('edit', { title: 'Movies', person: "Director", stuff: item}); | ||
| } | ||
| }) | ||
| }, | ||
|
|
||
| saveedit: function(req, res, next) { | ||
| // console.log(req.body) | ||
| Movie.saveedit([req.body.id, req.body.name, req.body.person, req.body.description], function(error, item) { | ||
| if(error) { | ||
| var err = new Error("Error retrieving movie:\n" + error.message); | ||
| err.status = 500; | ||
| next(err); | ||
| } else { | ||
| Movie.item([Number(req.params.id)], function(error, item) { | ||
| if(error) { | ||
| var err = new Error("Error retrieving movie:\n" + error.message); | ||
| err.status = 500; | ||
| next(err); | ||
| } else { | ||
| res.redirect('http://localhost:3000/movies/'+req.body.id); | ||
| } | ||
| }) | ||
| } | ||
| }) | ||
| }, | ||
|
|
||
| delete: function(req, res, next) { | ||
| console.log(req.params.id) | ||
| Movie.delete([Number(req.params.id)], function(error, item) { | ||
| if(error) { | ||
| var err = new Error("Error deleting movie:\n" + error.message); | ||
| err.status = 500; | ||
| next(err); | ||
| } else { | ||
| // console.log(item) | ||
| res.redirect('http://localhost:3000/movies'); | ||
| } | ||
| }) | ||
| }, | ||
|
|
||
| new: function(req, res, next) { | ||
| // console.log(req.body.name) | ||
| Movie.new([req.body.name, req.body.person, req.body.description], function(error, item) { | ||
| if(error) { | ||
| var err = new Error("Error creating movie:\n" + error.message); | ||
| err.status = 500; | ||
| next(err); | ||
| } else { | ||
| console.log(item) | ||
| res.redirect('http://localhost:3000/movies/'+item.id); | ||
| } | ||
| }) | ||
| } | ||
| } | ||
|
|
||
| module.exports = MovieController; |
| @@ -0,0 +1,82 @@ | ||
| var app = require("../app"); | ||
| var db = app.get("db"); | ||
|
|
||
| var Album = function (album) { | ||
| this.id = album.id; | ||
| this.type = album.type; | ||
| this.name = album.name; | ||
| this.person = album.artist; | ||
| this.description = album.description; | ||
| this.votes = album.votes; | ||
| }; | ||
|
|
||
| Album.all = function(callback) { | ||
| db.query("SELECT * FROM albums ORDER BY votes desc;", function(error, albums) { | ||
| if(error || !albums) { | ||
| callback(error || new Error("Could not retrieve albums"), undefined); | ||
| } else { | ||
| callback(null, albums.map(function(album) { | ||
| return new Album(album); | ||
| })) | ||
| } | ||
| }) | ||
| } | ||
|
|
||
| Album.item = function(id, callback) { | ||
| db.query("SELECT * FROM albums WHERE id=$1", id, function(error, item) { | ||
| if(error || !item) { | ||
| callback(error || new Error("Could not retrieve album"), undefined); | ||
| } else { | ||
| var oneItem = item.map(function(item) { | ||
| return new Album(item); | ||
| }); | ||
| callback(null, oneItem); | ||
| } | ||
| }) | ||
| } | ||
|
|
||
| Album.upvote = function(id, callback) { | ||
| db.query("UPDATE albums SET votes = votes+1 WHERE id=$1;", id, function(error, item) { | ||
| if(error || !item) { | ||
| callback(error || new Error("Could not retrieve album"), undefined); | ||
| } else { | ||
| var oneItem = item.map(function(item) { | ||
| return new Album(item); | ||
| }); | ||
| callback(null, oneItem); | ||
| } | ||
| }) | ||
| } | ||
|
|
||
| Album.saveedit = function(params, callback) { | ||
| db.albums.update({id: params[0], name: params[1], artist: params[2], description: params[3]},function(error, item) { | ||
| if(error || !item) { | ||
| callback(error || new Error("Could not retrieve album"), undefined); | ||
| } else { | ||
| callback(null, item); | ||
| } | ||
| }) | ||
| } | ||
|
|
||
| Album.delete = function(ids, callback) { | ||
| db.albums.destroy({id: ids}, function(error, item) { | ||
| if(error || !item) { | ||
| callback(error || new Error("Could not retrieve album"), undefined); | ||
| } else { | ||
| callback(null, item); | ||
| } | ||
| }) | ||
| } | ||
|
|
||
| Album.new = function(params, callback) { | ||
| db.albums.insert({name: params[0], artist: params[1], description: params[2], type: 'albums', votes: 0},function(error, item) { | ||
| if(error || !item) { | ||
| callback(error || new Error("Could not retrieve album"), undefined); | ||
| } else { | ||
| callback(null, item); | ||
| } | ||
| }) | ||
| } | ||
|
|
||
|
|
||
| module.exports = Album; |
| @@ -0,0 +1,82 @@ | ||
| var app = require("../app"); | ||
| var db = app.get("db"); | ||
|
|
||
| var Book = function (book) { | ||
| this.id = book.id; | ||
| this.type = book.type; | ||
| this.name = book.name; | ||
| this.person = book.author; | ||
| this.description = book.description; | ||
| this.votes = book.votes; | ||
| }; | ||
|
|
||
| Book.all = function(callback) { | ||
| db.query("SELECT * FROM books ORDER BY votes desc;", function(error, books) { | ||
| if(error || !books) { | ||
| callback(error || new Error("Could not retrieve books"), undefined); | ||
| } else { | ||
| callback(null, books.map(function(book) { | ||
| return new Book(book); | ||
| })) | ||
| } | ||
| }) | ||
| } | ||
|
|
||
|
|
||
| Book.item = function(id, callback) { | ||
| db.query("SELECT * FROM books WHERE id=$1", id, function(error, item) { | ||
| if(error || !item) { | ||
| callback(error || new Error("Could not retrieve book"), undefined); | ||
| } else { | ||
| var oneItem = item.map(function(item) { | ||
| return new Book(item); | ||
| }); | ||
| callback(null, oneItem); | ||
| } | ||
| }) | ||
| } | ||
|
|
||
| Book.upvote = function(id, callback) { | ||
| db.query("UPDATE books SET votes = votes+1 WHERE id=$1;", id, function(error, item) { | ||
| if(error || !item) { | ||
| callback(error || new Error("Could not retrieve book"), undefined); | ||
| } else { | ||
| var oneItem = item.map(function(item) { | ||
| return new Book(item); | ||
| }); | ||
| callback(null, oneItem); | ||
| } | ||
| }) | ||
| } | ||
|
|
||
| Book.saveedit = function(params, callback) { | ||
| db.books.update({id: params[0], name: params[1], author: params[2], description: params[3]},function(error, item) { | ||
| if(error || !item) { | ||
| callback(error || new Error("Could not retrieve book"), undefined); | ||
| } else { | ||
| callback(null, item); | ||
| } | ||
| }) | ||
| } | ||
|
|
||
| Book.delete = function(ids, callback) { | ||
| db.books.destroy({id: ids}, function(error, item) { | ||
| if(error || !item) { | ||
| callback(error || new Error("Could not delete book"), undefined); | ||
| } else { | ||
| callback(null, item); | ||
| } | ||
| }) | ||
| } | ||
|
|
||
| Book.new = function(params, callback) { | ||
| db.books.insert({name: params[0], author: params[1], description: params[2], type: 'books', votes: 0},function(error, item) { | ||
| if(error || !item) { | ||
| callback(error || new Error("Could not retrieve book"), undefined); | ||
| } else { | ||
| callback(null, item); | ||
| } | ||
| }) | ||
| } | ||
|
|
||
| module.exports = Book; |
| @@ -0,0 +1,84 @@ | ||
| var app = require("../app"); | ||
| var db = app.get("db"); | ||
|
|
||
| var Movie = function (movie) { | ||
| this.id = movie.id; | ||
| this.type = movie.type; | ||
| this.name = movie.name; | ||
| this.person = movie.director; | ||
| this.description = movie.description; | ||
| this.votes = movie.votes; | ||
| }; | ||
|
|
||
| Movie.all = function(callback) { | ||
| db.query("SELECT * FROM movies ORDER BY votes desc;", function(error, movies) { | ||
| if(error || !movies) { | ||
| callback(error || new Error("Could not retrieve movies"), undefined); | ||
| } else { | ||
| callback(null, movies.map(function(movie) { | ||
| return new Movie(movie); | ||
| })) | ||
| } | ||
| }) | ||
| } | ||
|
|
||
| Movie.item = function(id, callback) { | ||
| db.query("SELECT * FROM movies WHERE id=$1", id, function(error, item) { | ||
| if(error || !item) { | ||
| callback(error || new Error("Could not retrieve movie"), undefined); | ||
| } else { | ||
| var oneItem = item.map(function(item) { | ||
| return new Movie(item); | ||
| }); | ||
| callback(null, oneItem); | ||
| } | ||
| }) | ||
| } | ||
|
|
||
| Movie.upvote = function(id, callback) { | ||
| db.query("UPDATE movies SET votes = votes+1 WHERE id=$1;", id, function(error, item) { | ||
| if(error || !item) { | ||
| callback(error || new Error("Could not retrieve movie"), undefined); | ||
| } else { | ||
| var oneItem = item.map(function(item) { | ||
| return new Movie(item); | ||
| }); | ||
| callback(null, oneItem); | ||
| } | ||
| }) | ||
| } | ||
|
|
||
|
|
||
| Movie.saveedit = function(params, callback) { | ||
| db.movies.update({id: params[0], name: params[1], director: params[2], description: params[3]},function(error, item) { | ||
| if(error || !item) { | ||
| callback(error || new Error("Could not retrieve movie"), undefined); | ||
| } else { | ||
| callback(null, item); | ||
| } | ||
| }) | ||
| } | ||
|
|
||
| Movie.delete = function(ids, callback) { | ||
| db.movies.destroy({id: ids}, function(error, item) { | ||
| if(error || !item) { | ||
| callback(error || new Error("Could not delete movie"), undefined); | ||
| } else { | ||
| callback(null, item); | ||
| } | ||
| }) | ||
| } | ||
|
|
||
| Movie.new = function(params, callback) { | ||
| db.movies.insert({name: params[0], director: params[1], description: params[2], type: 'movies', votes: 0},function(error, item) { | ||
| if(error || !item) { | ||
| callback(error || new Error("Could not retrieve movie"), undefined); | ||
| } else { | ||
| callback(null, item); | ||
| } | ||
| }) | ||
| } | ||
|
|
||
|
|
||
|
|
||
| module.exports = Movie; |
| @@ -0,0 +1,28 @@ | ||
| var express = require('express'); | ||
| var router = express.Router(); | ||
| var Albums = require('../controllers/albums') | ||
|
|
||
|
|
||
| /* GET home page. */ | ||
| router.get('/', Albums.all); | ||
|
|
||
| router.get('/new', function(req, res, next) { | ||
| res.render('addnew', { thing: 'Albums', person: 'Artist'}); | ||
| }); | ||
|
|
||
| router.post('/new', Albums.new); | ||
|
|
||
| router.get('/:id', Albums.item); | ||
|
|
||
| router.post('/:id', Albums.upvote); | ||
|
|
||
| router.get('/:id/edit', Albums.edit); | ||
|
|
||
| router.post('/:id/edit', Albums.saveedit); | ||
|
|
||
| router.post('/:id/delete', Albums.delete); | ||
|
|
||
| // router.get('/:id', Albums.item); | ||
|
|
||
|
|
||
| module.exports = router; |
| @@ -0,0 +1,26 @@ | ||
| var express = require('express'); | ||
| var router = express.Router(); | ||
| var Books = require('../controllers/books') | ||
|
|
||
|
|
||
| /* GET home page. */ | ||
| router.get('/', Books.all); | ||
|
|
||
| router.get('/new', function(req, res, next) { | ||
| res.render('addnew', { thing: 'Books', person: 'Author'}); | ||
| }); | ||
|
|
||
| router.post('/new', Books.new); | ||
|
|
||
| router.get('/:id', Books.item); | ||
|
|
||
| router.post('/:id', Books.upvote); | ||
|
|
||
| router.get('/:id/edit', Books.edit); | ||
|
|
||
| router.post('/:id/edit', Books.saveedit); | ||
|
|
||
| router.post('/:id/delete', Books.delete); | ||
|
|
||
|
|
||
| module.exports = router; |
| @@ -1,9 +1,15 @@ | ||
| var express = require('express'); | ||
| var router = express.Router(); | ||
| var Index = require('../controllers/index') | ||
|
|
||
|
|
||
| /* GET home page. */ | ||
| // router.get('/', function(req, res, next) { | ||
| // res.render('index', { title: 'Express' }); | ||
| // }); | ||
|
|
||
| router.get('/', Index.all); | ||
|
|
||
|
|
||
| // router.get('/', Controller.) | ||
| module.exports = router; |
| @@ -0,0 +1,28 @@ | ||
| var express = require('express'); | ||
| var router = express.Router(); | ||
| var Movies = require('../controllers/movies') | ||
|
|
||
| /* GET home page. */ | ||
| router.get('/', Movies.all); | ||
|
|
||
| router.get('/new', function(req, res, next) { | ||
| res.render('addnew', { thing: 'Movies', person: 'Director'}); | ||
| }); | ||
|
|
||
| router.post('/new', Movies.new); | ||
|
|
||
| router.get('/:id', Movies.item); | ||
|
|
||
| router.post('/:id', Movies.upvote); | ||
|
|
||
| router.get('/:id/edit', Movies.edit); | ||
|
|
||
| router.post('/:id/edit', Movies.saveedit); | ||
|
|
||
| router.post('/:id/delete', Movies.delete); | ||
|
|
||
| // { | ||
| // res.redirect('/test'); | ||
| // }); | ||
|
|
||
| module.exports = router; |
| @@ -0,0 +1,22 @@ | ||
| <!DOCTYPE html> | ||
| <html> | ||
| <head> | ||
| <title><%= thing %></title> | ||
| <link rel='stylesheet' href='/stylesheets/style.css' /> | ||
| </head> | ||
| <body> | ||
| <h1>New <%= thing %></h1> | ||
| <form action="" method="post"> | ||
| <label>Name: </label> | ||
| <input type="text" name="name" placeholder="Insert Text Here" > | ||
|
|
||
| <label><%= person %>: </label> | ||
| <input type="text" name="person" placeholder="John Smith"> | ||
|
|
||
| <label>Description: </label> | ||
| <input type="text" name="description" placeholder="Describe Things"> | ||
|
|
||
| <input type="submit" value="Submit"> | ||
| </form> | ||
| </body> | ||
| </html> |
| @@ -0,0 +1,23 @@ | ||
| <!DOCTYPE html> | ||
| <html> | ||
| <head> | ||
| <title><%= title %></title> | ||
| <link rel='stylesheet' href='/stylesheets/style.css' /> | ||
| </head> | ||
| <body> | ||
|
|
||
| <h1>Edit <%= title %></h1> | ||
|
|
||
| <form action="" method="post"> | ||
| <input type="hidden" name="id" value="<%=stuff[0].id%>"> | ||
| Name:<br> | ||
| <input type="text" name="name" value="<%=stuff[0].name%>"><br><br> | ||
| <%=person%>:<br> | ||
| <input type="text" name="person" value="<%=stuff[0].person%>"><br><br> | ||
| Description:<br> | ||
| <input type="text" name="description" value="<%=stuff[0].description%>" ><br><br> | ||
|
|
||
| <input type="submit" value="Save"> | ||
| </form> | ||
| </body> | ||
| </html> |
| @@ -0,0 +1,58 @@ | ||
| <!DOCTYPE html> | ||
| <html> | ||
| <head> | ||
| <title><%= title %></title> | ||
| <link rel='stylesheet' href='/stylesheets/style.css' /> | ||
| </head> | ||
| <body> | ||
| <h1>Media Ranker: a ranking of medias</h1> | ||
| <!-- <p>Welcome to <%= title %></p> --> | ||
| <table class="hometable"> | ||
| <tr> | ||
| <th><h2>Top Movies</h2></th> | ||
| <th><h2>Top Books</h2></th> | ||
| <th><h2>Top Albums</h2></th> | ||
| </tr> | ||
|
|
||
| <%for(var i=0; i < 10; i++) {%> | ||
| <tr> | ||
| <td> | ||
| <% if (movies[i]) { %> | ||
| <h3><a href=<%="movies/"+movies[i].id%>><%= movies[i].name%></a></h3> Votes: <%= movies[i].votes%> | ||
| <% } else {}%> | ||
| </td> | ||
| <td> | ||
| <% if (books[i]) { %> | ||
| <h3><a href=<%="books/"+books[i].id%>><%= books[i].name%></a></h3> Votes: <%= books[i].votes%> | ||
| <% } else {}%> | ||
| </td> | ||
| <td> | ||
| <% if (albums[i]) { %> | ||
| <h3><a href=<%="albums/"+albums[i].id%>><%= albums[i].name%></a></h3> Votes: <%= albums[i].votes%> | ||
| <% } else {}%> | ||
| </td> | ||
| </tr> | ||
| <% }%> | ||
|
|
||
| <tr> | ||
| <td> | ||
| <a href=<%="movies/"%>>View More Movies</a> | ||
| </td> | ||
|
|
||
| <td> | ||
| <a href=<%="books/"%>>View More Books</a> | ||
| </td> | ||
|
|
||
| <td> | ||
| <a href=<%="albums/"%>>View More Albums</a> | ||
| </td> | ||
| </tr> | ||
|
|
||
| </table> | ||
|
|
||
| </body> | ||
| </html> |
| @@ -0,0 +1,27 @@ | ||
| <!DOCTYPE html> | ||
| <html> | ||
| <head> | ||
| <title><%= title %></title> | ||
| <link rel='stylesheet' href='/stylesheets/style.css' /> | ||
| </head> | ||
| <body> | ||
| <!-- <h1><%= title %></h1> | ||
| <p>Welcome to <%= title %></p> --> | ||
| <h1><%= stuff[0].name %></h1> | ||
| <p><%=person+": "+stuff[0].person %></p> | ||
| <p>Description: <%= stuff[0].description %></p> | ||
| <p>Votes: <%= stuff[0].votes %></p> | ||
| <form action= <%=stuff[0].id%> method="post"> | ||
| <input type="submit" value="Upvote"> | ||
| </form> | ||
| <form action= <%=stuff[0].id+"/"+"edit"%> > | ||
| <input type="submit" value="Edit"> | ||
| </form> | ||
| <form action= <%=stuff[0].id+"/delete"%> method="post" > | ||
| <input type="submit" value="Delete"> | ||
| </form> | ||
| <form action= <%="/"+stuff[0].type%> > | ||
| <input type="submit" value="View All"> | ||
| </form> | ||
| </body> | ||
| </html> |