From b9fe7d7cd3fd3a2d0f2955041719a4e396eb9596 Mon Sep 17 00:00:00 2001 From: Mohammad Adnan <111442736+Mohammadadnan07@users.noreply.github.com> Date: Sat, 17 Feb 2024 08:51:11 +0530 Subject: [PATCH 1/4] Create Movie.model.js --- models/Movie.model.js | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 models/Movie.model.js diff --git a/models/Movie.model.js b/models/Movie.model.js new file mode 100644 index 0000000..4783932 --- /dev/null +++ b/models/Movie.model.js @@ -0,0 +1,33 @@ +// models/Movie.model.js +const mongoose = require('mongoose'); + +const movieSchema = new mongoose.Schema({ + title: { + type: String, + required: true, + }, + director: { + type: String, + required: true, + }, + stars: { + type: [String], + required: true, + }, + image: { + type: String, + required: true, + }, + description: { + type: String, + required: true, + }, + showtimes: { + type: [String], + required: true, + }, +}); + +const Movie = mongoose.model('Movie', movieSchema); + +module.exports = Movie; From be24567fb6bbec4743d40e8cabd17b60820ca372 Mon Sep 17 00:00:00 2001 From: Mohammad Adnan <111442736+Mohammadadnan07@users.noreply.github.com> Date: Sat, 17 Feb 2024 08:53:02 +0530 Subject: [PATCH 2/4] Update server.js --- server.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/server.js b/server.js index b815b16..d3f6fd5 100644 --- a/server.js +++ b/server.js @@ -1,6 +1,8 @@ -const app = require("./app"); +// server.js +const express = require('express'); +const app = express(); + -// ℹ️ Sets the PORT for our app to have access to it. If no env has been set, we hard code it to 3000 const PORT = process.env.PORT || 3000; app.listen(PORT, () => { From f53fc10952ab28dc90c85f8217b4cf326abb0664 Mon Sep 17 00:00:00 2001 From: Mohammad Adnan <111442736+Mohammadadnan07@users.noreply.github.com> Date: Sat, 17 Feb 2024 08:53:58 +0530 Subject: [PATCH 3/4] Update app.js --- app.js | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/app.js b/app.js index a037764..7f25189 100644 --- a/app.js +++ b/app.js @@ -5,12 +5,10 @@ require('dotenv/config'); // ℹ️ Connects to the database require('./db'); -// Handles http requests (express is node js framework) +// Handles http requests (express is a Node.js framework) // https://www.npmjs.com/package/express const express = require('express'); - -// Handles the handlebars -// https://www.npmjs.com/package/hbs +const exphbs = require('express-handlebars'); const hbs = require('hbs'); const app = express(); @@ -18,17 +16,36 @@ const app = express(); // ℹ️ This function is getting exported from the config folder. It runs most middlewares require('./config')(app); +// Set up Handlebars as the view engine +app.engine('hbs', exphbs({ extname: 'hbs' })); +app.set('view engine', 'hbs'); + // default value for title local const projectName = 'lab-express-cinema'; const capitalized = string => string[0].toUpperCase() + string.slice(1).toLowerCase(); - app.locals.title = `${capitalized(projectName)}- Generated with Ironlauncher`; // 👇 Start handling routes here const index = require('./routes/index'); app.use('/', index); -// ❗ To handle errors. Routes that don't exist or errors that you handle in specific routes + +// ❗ To handle errors. require('./error-handling')(app); + + +// Define a route to render the movies page +app.get('/movies', async (req, res) => { + try { + // Fetch movies from the database + const movies = await MovieModel.find(); + + res.render('movies', { title: 'Movies', movies }); + } catch (error) { + console.error('Error fetching movies:', error); + res.status(500).send('Internal Server Error'); + } + }); + module.exports = app; From c8791f1b25e61b75a339c93d05646f0e744fc07b Mon Sep 17 00:00:00 2001 From: Mohammad Adnan <111442736+Mohammadadnan07@users.noreply.github.com> Date: Sat, 17 Feb 2024 08:55:15 +0530 Subject: [PATCH 4/4] Update package.json --- package.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 8ff4bc0..65cf20f 100644 --- a/package.json +++ b/package.json @@ -9,9 +9,10 @@ "dependencies": { "cookie-parser": "^1.4.5", "dotenv": "^8.2.0", - "express": "^4.17.1", + "express": "^4.18.2", + "express-handlebars": "^7.1.2", "hbs": "^4.1.1", - "mongoose": "^6.1.2", + "mongoose": "^6.12.5", "morgan": "^1.10.0", "serve-favicon": "^2.5.0" },