Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
ba74aa8
initial setup
PerikK Jul 1, 2024
faedb3f
add movie -domain -controller -router -just get all
PerikK Jul 1, 2024
48c28fb
add get movie by id
PerikK Jul 1, 2024
0fe38b0
finish -movie -customer -screen -core done
PerikK Jul 2, 2024
7263992
add -filter by runtime function -some error handling for createing ne…
PerikK Jul 2, 2024
26b9a00
add functionality to search for a movie with id or title
PerikK Jul 2, 2024
64780b2
errors shown properly in insomnia now
PerikK Jul 2, 2024
ebc492c
add create movie with screenings info
PerikK Jul 2, 2024
ec6e4b2
add update movie with screenings info
PerikK Jul 2, 2024
0bef682
add functionality to update customers contact info if provided
PerikK Jul 2, 2024
11bb312
add create screen with screenings
PerikK Jul 2, 2024
7e1c489
add new ticket creation -a bit different output
PerikK Jul 3, 2024
b243786
add error handling for ticket creation
PerikK Jul 3, 2024
4d4334b
fix an error in post new movie
PerikK Jul 3, 2024
b5ae81d
fix an error in update movie
PerikK Jul 3, 2024
3da81d5
fix update movie with or without screenings
PerikK Jul 3, 2024
e095dc3
fix customer update with contact info
PerikK Jul 3, 2024
04430e8
some cleanup
PerikK Jul 3, 2024
db8edea
add test for filtering movies by runtime
PerikK Jul 3, 2024
609c1cd
add tests for adding new movie
PerikK Jul 3, 2024
4addcfa
add tests for updating a movie
PerikK Jul 3, 2024
8b9b8b0
add get only future startsAt movies -test for filtering by minutes fails
PerikK Jul 4, 2024
814d186
tests pass not sure about my solution for get all
PerikK Jul 4, 2024
5e1a2e7
remove try-catch from controllers after installing -express-async-errors
PerikK Jul 4, 2024
6c162d8
add tests for screen
PerikK Jul 4, 2024
50bbec7
add revie prisma model
PerikK Jul 4, 2024
06f8d95
add seed function for review
PerikK Jul 4, 2024
2cc94c5
add get and post for reviews
PerikK Jul 4, 2024
146f1fe
add get review by movie title
PerikK Jul 4, 2024
c9f5e14
some cleanup
PerikK Jul 4, 2024
b22019e
some more cleanup and add a get all tickets
PerikK Jul 4, 2024
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.

55 changes: 32 additions & 23 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
"cors": "^2.8.5",
"dotenv": "^16.3.1",
"express": "^4.18.2",
"express-async-errors": "^3.1.1",
"morgan": "^1.10.0"
}
}
17 changes: 17 additions & 0 deletions prisma/migrations/20240704151358_add_reviews/migration.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
-- CreateTable
CREATE TABLE "Review" (
"id" SERIAL NOT NULL,
"customerId" INTEGER NOT NULL,
"movieId" INTEGER NOT NULL,
"content" VARCHAR(255) NOT NULL,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL,

CONSTRAINT "Review_pkey" PRIMARY KEY ("id")
);

-- AddForeignKey
ALTER TABLE "Review" ADD CONSTRAINT "Review_customerId_fkey" FOREIGN KEY ("customerId") REFERENCES "Customer"("id") ON DELETE RESTRICT ON UPDATE CASCADE;

-- AddForeignKey
ALTER TABLE "Review" ADD CONSTRAINT "Review_movieId_fkey" FOREIGN KEY ("movieId") REFERENCES "Movie"("id") ON DELETE RESTRICT ON UPDATE CASCADE;
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
-- This is an empty migration.
77 changes: 45 additions & 32 deletions prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,23 @@ datasource db {

// https://www.prisma.io/docs/concepts/components/prisma-schema/data-model
model Customer {
id Int @id @default(autoincrement())
name String
contact Contact?
tickets Ticket[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
id Int @id @default(autoincrement())
name String
contact Contact?
tickets Ticket[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
review Review[]
}

model Contact {
id Int @id @default(autoincrement())
customer Customer @relation(fields: [customerId], references: [id])
customerId Int @unique
phone String
email String @unique
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
id Int @id @default(autoincrement())
customer Customer @relation(fields: [customerId], references: [id])
customerId Int @unique
phone String
email String @unique
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}

model Movie {
Expand All @@ -37,34 +38,46 @@ model Movie {
runtimeMins Int
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
review Review[]
}

model Screen {
id Int @id @default(autoincrement())
number Int
screenings Screening[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
id Int @id @default(autoincrement())
number Int
screenings Screening[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}

model Screening {
id Int @id @default(autoincrement())
tickets Ticket[]
movie Movie @relation(fields: [movieId], references: [id])
movieId Int
screen Screen @relation(fields: [screenId], references: [id])
screenId Int
startsAt DateTime
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}

model Ticket {
id Int @id @default(autoincrement())
tickets Ticket[]
movie Movie @relation(fields: [movieId], references: [id])
movieId Int
screen Screen @relation(fields: [screenId], references: [id])
screenId Int
startsAt DateTime
screening Screening @relation(fields: [screeningId], references: [id])
screeningId Int
customer Customer @relation(fields: [customerId], references: [id])
customerId Int
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}

model Ticket {
id Int @id @default(autoincrement())
screening Screening @relation(fields: [screeningId], references: [id])
screeningId Int
customer Customer @relation(fields: [customerId], references: [id])
customerId Int
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
model Review {
id Int @id @default(autoincrement())
customer Customer @relation(fields: [customerId], references: [id])
customerId Int
movie Movie @relation(fields: [movieId], references: [id])
movieId Int
content String @db.VarChar(255)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
24 changes: 24 additions & 0 deletions prisma/seed.js
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,30 @@ async function createScreenings(screens, movies) {
}
}

async function createReviews(customers, movies) {
for (const customer of customers) {
for (let i = 0; i < movies.length; i++) {
const review = await prisma.review.create({
data: {
content: "Lorem ipsum great movie",
movie: {
connect: {
id: movies[i].id,
},
},
customer: {
connect: {
id: customer.id,
},
},
},
})

console.log("Reviews created", review)
}
}
}

seed()
.catch(async e => {
console.error(e);
Expand Down
Loading