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
13 changes: 13 additions & 0 deletions models/Movie.mode.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
const mongoose = require('mongoose');

const movieSchema = new mongoose.Schema({
title: String,
director: String,
stars: [String],
image: String,
description: String,
showtimes: [String]
});

const Movie = mongoose.model('Movie', movieSchema);
module.exports = Movie;
33 changes: 30 additions & 3 deletions routes/index.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,34 @@
const express = require('express');
const router = express.Router();
const Movie = require('../models/Movie.model');

/* GET home page */
router.get('/', (req, res, next) => res.render('index'));
router.get('/', (req, res, next) => {
res.render('index');
});

module.exports = router;
router.get('/movies', (req, res) => {
Movie.find()
.then(movies => {
res.render('movies', { movies });
})
.catch(err => {
console.error(err);
res.status(500).send('Error retrieving movies');
});
});

router.get('/movies/:id', (req, res) => {
Movie.findById(req.params.id)
.then(movie => {
if (!movie) {
return res.status(404).send('Movie not found');
}
res.render('movie-detail', { movie });
})
.catch(err => {
console.error(err);
res.status(500).send('Error retrieving movie');
});
});

module.exports = router;
24 changes: 18 additions & 6 deletions seeds/movies.seed.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
const mongoose = require('mongoose');
const Movie = require('../models/Movie.model');

const movies = [
{
title: "A Wrinkle in Time",
Expand Down Expand Up @@ -81,9 +84,18 @@ const movies = [
}
];


// Add here the script that will be run to actually seed the database (feel free to refer to the previous lesson)



// ... your code here
mongoose.connect('mongodb://localhost/cinema', { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => {
return Movie.deleteMany();
})
.then(() => {
return Movie.insertMany(movies);
})
.then(() => {
console.log("Database seeded!");
mongoose.connection.close();
})
.catch(err => {
console.error(err);
mongoose.connection.close();
});
14 changes: 12 additions & 2 deletions views/index.hbs
Original file line number Diff line number Diff line change
@@ -1,2 +1,12 @@
<h1>{{title}}</h1>
<p>Welcome to {{title}}</p>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Cinema Home</title>
<link rel="stylesheet" href="path/to/bootstrap.css">
</head>
<body>
<h1>Welcome to Cinema</h1>
<a href="/movies" class="btn btn-primary">See Movies</a>
</body>
</html>
16 changes: 16 additions & 0 deletions views/movie-detail.hbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{movie.title}}</title>
<link rel="stylesheet" href="path/to/bootstrap.css">
</head>
<body>
<h1>{{movie.title}}</h1>
<img src="{{movie.image}}" alt="{{movie.title}}">
<p><strong>Director:</strong> {{movie.director}}</p>
<p><strong>Description:</strong> {{movie.description}}</p>
<p><strong>Stars:</strong> {{#each movie.stars}} {{this}} {{/each}}</p>
<p><strong>Showtimes:</strong> {{#each movie.showtimes}} {{this}} {{/each}}</p>
</body>
</html>
19 changes: 19 additions & 0 deletions views/movies.hbs
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Movies List</title>
<link rel="stylesheet" href="/path/to/node_modules/bootstrap/dist/css/bootstrap.min.css"></head>
<body>
<h1>Movies List</h1>
<ul>
{{#each movies}}
<li>
<img src="{{this.image}}" alt="{{this.title}}">
<h2>{{this.title}}</h2>
<a href="/movies/{{this._id}}">See More</a>
</li>
{{/each}}
</ul>
</body>
</html>