mirror of
https://github.com/aaronpo97/the-biergarten-app.git
synced 2026-02-16 10:42:08 +00:00
229 lines
8.3 KiB
Plaintext
229 lines
8.3 KiB
Plaintext
// This is your Prisma schema file,
|
|
// learn more about it in the docs: https://pris.ly/d/prisma-schema
|
|
|
|
generator client {
|
|
provider = "prisma-client-js"
|
|
}
|
|
|
|
datasource db {
|
|
provider = "postgresql"
|
|
url = env("POSTGRES_PRISMA_URL") // uses connection pooling
|
|
directUrl = env("POSTGRES_URL_NON_POOLING") // uses a direct connection
|
|
shadowDatabaseUrl = env("SHADOW_DATABASE_URL")
|
|
}
|
|
|
|
enum Role {
|
|
USER
|
|
ADMIN
|
|
}
|
|
|
|
model User {
|
|
id String @id @default(cuid())
|
|
username String @unique
|
|
firstName String
|
|
lastName String
|
|
hash String
|
|
email String @unique
|
|
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
|
updatedAt DateTime? @updatedAt @db.Timestamptz(3)
|
|
accountIsVerified Boolean @default(false)
|
|
dateOfBirth DateTime
|
|
role Role @default(USER)
|
|
bio String?
|
|
beerPosts BeerPost[]
|
|
beerStyles BeerStyle[]
|
|
breweryPosts BreweryPost[]
|
|
beerComments BeerComment[]
|
|
breweryComments BreweryComment[]
|
|
beerPostLikes BeerPostLike[]
|
|
beerImages BeerImage[]
|
|
breweryImages BreweryImage[]
|
|
breweryPostLikes BreweryPostLike[]
|
|
locations BreweryLocation[]
|
|
glasswares Glassware[]
|
|
beerStyleLikes BeerStyleLike[]
|
|
beerStyleComments BeerStyleComment[]
|
|
userAvatar UserAvatar?
|
|
}
|
|
|
|
model UserAvatar {
|
|
id String @id @default(cuid())
|
|
path String
|
|
alt String
|
|
caption String
|
|
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
|
userId String @unique
|
|
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
|
updatedAt DateTime? @updatedAt @db.Timestamptz(3)
|
|
}
|
|
|
|
model BeerPost {
|
|
id String @id @default(cuid())
|
|
name String
|
|
ibu Float
|
|
abv Float
|
|
description String
|
|
postedBy User @relation(fields: [postedById], references: [id], onDelete: Cascade)
|
|
postedById String
|
|
brewery BreweryPost @relation(fields: [breweryId], references: [id], onDelete: Cascade)
|
|
breweryId String
|
|
style BeerStyle @relation(fields: [styleId], references: [id], onDelete: Cascade)
|
|
styleId String
|
|
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
|
updatedAt DateTime? @updatedAt @db.Timestamptz(3)
|
|
beerComments BeerComment[]
|
|
beerImages BeerImage[]
|
|
beerPostLikes BeerPostLike[]
|
|
}
|
|
|
|
model BeerPostLike {
|
|
id String @id @default(cuid())
|
|
beerPost BeerPost @relation(fields: [beerPostId], references: [id], onDelete: Cascade)
|
|
beerPostId String
|
|
likedBy User @relation(fields: [likedById], references: [id], onDelete: Cascade)
|
|
likedById String
|
|
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
|
updatedAt DateTime? @updatedAt @db.Timestamptz(3)
|
|
}
|
|
|
|
model BreweryPostLike {
|
|
id String @id @default(cuid())
|
|
breweryPost BreweryPost @relation(fields: [breweryPostId], references: [id], onDelete: Cascade)
|
|
breweryPostId String
|
|
likedBy User @relation(fields: [likedById], references: [id], onDelete: Cascade)
|
|
likedById String
|
|
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
|
updatedAt DateTime? @updatedAt @db.Timestamptz(3)
|
|
}
|
|
|
|
model BeerComment {
|
|
id String @id @default(cuid())
|
|
rating Int
|
|
beerPost BeerPost @relation(fields: [beerPostId], references: [id], onDelete: Cascade)
|
|
beerPostId String
|
|
postedBy User @relation(fields: [postedById], references: [id], onDelete: Cascade)
|
|
postedById String
|
|
content String
|
|
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
|
updatedAt DateTime? @updatedAt @db.Timestamptz(3)
|
|
}
|
|
|
|
model BeerStyle {
|
|
id String @id @default(cuid())
|
|
name String
|
|
description String
|
|
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
|
updatedAt DateTime? @updatedAt @db.Timestamptz(3)
|
|
postedBy User @relation(fields: [postedById], references: [id], onDelete: Cascade)
|
|
glassware Glassware @relation(fields: [glasswareId], references: [id], onDelete: Cascade)
|
|
glasswareId String
|
|
postedById String
|
|
abvRange Float[]
|
|
ibuRange Float[]
|
|
beerPosts BeerPost[]
|
|
beerStyleLike BeerStyleLike[]
|
|
beerStyleComment BeerStyleComment[]
|
|
}
|
|
|
|
model BeerStyleLike {
|
|
id String @id @default(cuid())
|
|
beerStyle BeerStyle @relation(fields: [beerStyleId], references: [id], onDelete: Cascade)
|
|
beerStyleId String
|
|
likedBy User @relation(fields: [likedById], references: [id], onDelete: Cascade)
|
|
likedById String
|
|
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
|
updatedAt DateTime? @updatedAt @db.Timestamptz(3)
|
|
}
|
|
|
|
model BeerStyleComment {
|
|
id String @id @default(cuid())
|
|
rating Int
|
|
beerStyle BeerStyle @relation(fields: [beerStyleId], references: [id], onDelete: Cascade)
|
|
beerStyleId String
|
|
postedBy User @relation(fields: [postedById], references: [id], onDelete: Cascade)
|
|
postedById String
|
|
content String
|
|
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
|
updatedAt DateTime? @updatedAt @db.Timestamptz(3)
|
|
}
|
|
|
|
model Glassware {
|
|
id String @id @default(cuid())
|
|
name String
|
|
description String
|
|
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
|
updatedAt DateTime? @updatedAt @db.Timestamptz(3)
|
|
postedBy User @relation(fields: [postedById], references: [id], onDelete: Cascade)
|
|
postedById String
|
|
beerStyle BeerStyle[]
|
|
}
|
|
|
|
model BreweryLocation {
|
|
id String @id @default(cuid())
|
|
city String
|
|
stateOrProvince String?
|
|
country String?
|
|
coordinates Float[]
|
|
address String
|
|
postedBy User @relation(fields: [postedById], references: [id], onDelete: Cascade)
|
|
postedById String
|
|
breweryPost BreweryPost?
|
|
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
|
updatedAt DateTime? @updatedAt @db.Timestamptz(3)
|
|
}
|
|
|
|
model BreweryPost {
|
|
id String @id @default(cuid())
|
|
name String
|
|
location BreweryLocation @relation(fields: [locationId], references: [id])
|
|
locationId String @unique
|
|
beers BeerPost[]
|
|
description String
|
|
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
|
updatedAt DateTime? @updatedAt @db.Timestamptz(3)
|
|
postedBy User @relation(fields: [postedById], references: [id], onDelete: Cascade)
|
|
postedById String
|
|
breweryComments BreweryComment[]
|
|
breweryImages BreweryImage[]
|
|
breweryPostLike BreweryPostLike[]
|
|
dateEstablished DateTime @default(now()) @db.Timestamptz(3)
|
|
}
|
|
|
|
model BreweryComment {
|
|
id String @id @default(cuid())
|
|
rating Int
|
|
breweryPost BreweryPost @relation(fields: [breweryPostId], references: [id], onDelete: Cascade)
|
|
breweryPostId String
|
|
postedBy User @relation(fields: [postedById], references: [id], onDelete: Cascade)
|
|
postedById String
|
|
content String
|
|
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
|
updatedAt DateTime? @updatedAt @db.Timestamptz(3)
|
|
}
|
|
|
|
model BeerImage {
|
|
id String @id @default(cuid())
|
|
beerPost BeerPost @relation(fields: [beerPostId], references: [id], onDelete: Cascade)
|
|
beerPostId String
|
|
path String
|
|
alt String
|
|
caption String
|
|
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
|
updatedAt DateTime? @updatedAt @db.Timestamptz(3)
|
|
postedBy User @relation(fields: [postedById], references: [id], onDelete: Cascade)
|
|
postedById String
|
|
}
|
|
|
|
model BreweryImage {
|
|
id String @id @default(cuid())
|
|
breweryPost BreweryPost @relation(fields: [breweryPostId], references: [id], onDelete: Cascade)
|
|
breweryPostId String
|
|
path String
|
|
createdAt DateTime @default(now()) @db.Timestamptz(3)
|
|
updatedAt DateTime? @updatedAt @db.Timestamptz(3)
|
|
caption String
|
|
alt String
|
|
postedBy User @relation(fields: [postedById], references: [id], onDelete: Cascade)
|
|
postedById String
|
|
}
|