youtube-nestjs-base/prisma/schema.prisma

85 lines
1.7 KiB
Plaintext

generator client {
provider = "prisma-client-js"
output = "../generated/prisma"
}
datasource db {
provider = "postgresql"
url = env("POSTGRES_URI")
}
model Movie {
id String @id @default(uuid())
title String
description String?
releaseYear Int @map("release_year")
rating Float @default(0.0)
isAvailabel Boolean @default(false) @map("is_available")
genre Genre @default(DRAMMA)
poster MoviePoster @relation(fields: [posterId], references: [id])
posterId String @unique @map("poster_id")
reviews Review[] @relation("movie_reviews")
actors Actor[] @relation("movie_actors")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
@@index([releaseYear, title])
@@map("movies")
}
model MoviePoster {
id String @id @default(uuid())
url String
movie Movie? @relation()
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
@@map("movie_posters")
}
model Review {
id String @id @default(uuid())
text String
rating Decimal @default(0.0)
movie Movie @relation("movie_reviews", fields: [movieId], references: [id], onDelete: Cascade)
movieId String @map("movie_id")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
@@map("reviews")
}
model Actor {
id String @id @default(uuid())
name String
movies Movie[] @relation("movie_actors")
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
@@map("actors")
}
enum Genre {
ACTION
COMEDY
DRAMMA
HORROR
@@map("enum_genres")
}