mirror of
https://github.com/aaronpo97/the-biergarten-app.git
synced 2026-02-16 10:42:08 +00:00
This commit adds the necessary functionality to confirm a user's account. It includes the addition of a new column in the user table to track whether an account is confirmed or not, and the implementation of JWT for confirmation tokens. This commit integrates the SparkPost API as well as React Email to send dynamic emails for whatever purpose. Upon user registration, a confirmation email will be sent to the user.
136 lines
4.7 KiB
Plaintext
136 lines
4.7 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("DATABASE_URL")
|
|
}
|
|
|
|
model User {
|
|
id String @id @default(uuid())
|
|
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)
|
|
isAccountVerified Boolean @default(false)
|
|
dateOfBirth DateTime
|
|
beerPosts BeerPost[]
|
|
beerTypes BeerType[]
|
|
breweryPosts BreweryPost[]
|
|
beerComments BeerComment[]
|
|
breweryComments BreweryComment[]
|
|
BeerPostLikes BeerPostLike[]
|
|
BeerImage BeerImage[]
|
|
BreweryImage BreweryImage[]
|
|
}
|
|
|
|
model BeerPost {
|
|
id String @id @default(uuid())
|
|
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
|
|
type BeerType @relation(fields: [typeId], references: [id], onDelete: Cascade)
|
|
typeId 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(uuid())
|
|
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 BeerComment {
|
|
id String @id @default(uuid())
|
|
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 BeerType {
|
|
id String @id @default(uuid())
|
|
name 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
|
|
beerPosts BeerPost[]
|
|
}
|
|
|
|
model BreweryPost {
|
|
id String @id @default(uuid())
|
|
name String
|
|
location String
|
|
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[]
|
|
}
|
|
|
|
model BreweryComment {
|
|
id String @id @default(uuid())
|
|
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(uuid())
|
|
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(uuid())
|
|
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
|
|
}
|