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
6 changes: 0 additions & 6 deletions .env.example

This file was deleted.

1 change: 1 addition & 0 deletions prisma/migrations/20240923143258_movies/migration.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
-- This is an empty migration.
1 change: 1 addition & 0 deletions prisma/migrations/20240923143430_screens/migration.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
-- This is an empty migration.
49 changes: 45 additions & 4 deletions src/routers/customer.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,54 @@
const express = require("express");
const {
createCustomer
} = require('../controllers/customer');

const { createCustomer} = require('../controllers/customer');
const prisma = require("../utils/prisma.js");
const router = express.Router();

// In index.js, we told express that the /customer route should use this router file
// The below /register route extends that, so the end result will be a URL
// that looks like http://localhost:4040/customer/register

router.post("/register", createCustomer);

// Put Request

router.put("/:id", async (req, res) => {
try {
const { id } = req.params;
const { name } = req.body;

// Basic input validation
if (!name || typeof name !== "string") {
return res.status(400).json({ error: "Invalid input: name is required" });
}

// Check if the customer exists before trying to update
const existingCustomer = await prisma.customer.findUnique({
where: { id: Number(id) },
});

if (!existingCustomer) {
return res.status(404).json({ error: "Customer not found" });
}

// Perform the update
const customer = await prisma.customer.update({
where: {
id: Number(id),
},
data: {
name,
},
include: {
contact: true,
},
});

res.status(201).json({ customer });
} catch (error) {
console.error("Error updating customer:", error);
res.status(500).json({ error: "An error occurred while updating the customer" });
}
});


module.exports = router;
77 changes: 77 additions & 0 deletions src/routers/movies.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
const express = require("express");
const prisma = require("../utils/prisma.js");
const { response } = require("../server.js");

const router = express.Router();

// GET REQUESTS

router.get("/", async (req, res) => {
// GET ALL THE MOVIES AND THEIR SCREENINGS

const response = await prisma.movie.findMany({
include: { screenings: true },
}); // GET ALL MOVIES

res.json({ movies: response });
});

router.get("/:id", async (req, res) => {
try {
// TRY TO RUN THE ASYNC AWAIT FUNCTION
const [movie] = await prisma.movie.findMany({
// GET MOVIE WITH GIVEN ID
where: {
id: Number(req.params.id),
},
include: { screenings: true },
});

res.json({ movie });
} catch (error) {
// IF THERE ARE NO MOVIES THE AWAIT WILL THROW AN ERROR. THIS WILL CATCH IT
res.status(404).json({ error: "MOVIE NOT FOUND" });
}
});

// POST REQUESTS

router.post("/", async (req, res) => {
const movie = await prisma.movie.create({
// CREATES A NEW MOVIE WITH THE GIVEN TITLE AND RUNTIME IN THE REQUEST BODY
data: {
title: req.body.title,
runtimeMins: req.body.runtimeMins,
},
include: { screenings: true },
});

res.status(201).json({ movie: movie });
});

// PUT REQUESTS

router.put("/:id", async (req, res) => {
try {
// TRY TO RUN THE ASYNC AWAIT FUNCTION
const movie = await prisma.movie.update({
// UPDATE MOVIE WITH GIVEN ID
where: {
id: Number(req.params.id),
},
data: {
title: req.body.title,
runtimeMins: req.body.runtimeMins,
},
include: { screenings: true },
});

res.status(201).json({ movie });
} catch (error) {
// IF THERE ARE NO MOVIES THE AWAIT WILL THROW AN ERROR. THIS WILL CATCH IT
res.status(404).json({ error: "MOVIE NOT FOUND" });
}
});

module.exports = router;

19 changes: 19 additions & 0 deletions src/routers/screens.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
const express = require("express");
const prisma = require("../utils/prisma.js");
const { response } = require("../server.js");

const router = express.Router();

// THE SOLE POST REQUEST

router.post("/", async (req, res) => {
const screen = await prisma.screen.create({
data: {
number: Number(req.body.number),
},
});

res.status(201).json({ screen });
});

module.exports = router;
6 changes: 6 additions & 0 deletions src/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,13 @@ app.use(express.urlencoded({ extended: true }));

// Tell express to use your routers here
const customerRouter = require('./routers/customer');
const moviesRouter = require("./routers/movies");
const screensRouter = require("./routers/screens");
// const prisma = require("./utils/prisma");

app.use('/customers', customerRouter);
app.use('/movies', moviesRouter);
app.use('/screens', screensRouter);


module.exports = app
2 changes: 1 addition & 1 deletion test/setupTests.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ const prisma = require("../src/utils/prisma")

const deleteTables = () => {
const deleteTables = [
prisma.ticket.deleteMany(),
// prisma.ticket.deleteMany(),
prisma.screening.deleteMany(),
prisma.movie.deleteMany(),
prisma.screen.deleteMany(),
Expand Down