// 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") } 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 beerPosts BeerPost[] beerStyles BeerStyle[] breweryPosts BreweryPost[] beerComments BeerComment[] breweryComments BreweryComment[] BeerPostLikes BeerPostLike[] BeerImage BeerImage[] BreweryImage BreweryImage[] BreweryPostLike BreweryPostLike[] Location Location[] Glassware Glassware[] } 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[] } 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 Location { 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 Location @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 }