Files
THE-TIP-TOP/backend/prisma/schema.prisma

112 lines
2.4 KiB
Plaintext

generator client {
provider = "prisma-client-js"
}
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
enum Role {
CLIENT
EMPLOYEE
ADMIN
}
enum ClaimType {
STORE
ONLINE
}
enum ClaimStatus {
PENDING
DELIVERED
CANCELLED
}
model User {
id Int @id @default(autoincrement())
firstname String
lastname String
email String @unique
password String
role Role @default(CLIENT)
birthdate DateTime?
gender String?
marketingOptIn Boolean @default(false)
createdAt DateTime @default(now())
tickets Ticket[]
participations Participation[]
grandPrizeWinner GrandPrizeWinner?
claimsValidated Claim[] @relation("EmployeeClaims")
}
model Lot {
id Int @id @default(autoincrement())
name String
description String?
value Float?
percentage Float
tickets Ticket[]
participations Participation[]
}
model Ticket {
id Int @id @default(autoincrement())
code String @unique
isUsed Boolean @default(false)
usedAt DateTime?
lotId Int
lot Lot @relation(fields: [lotId], references: [id])
userId Int?
user User? @relation(fields: [userId], references: [id])
participation Participation?
createdAt DateTime @default(now())
}
model Participation {
id Int @id @default(autoincrement())
userId Int
user User @relation(fields: [userId], references: [id])
ticketId Int @unique
ticket Ticket @relation(fields: [ticketId], references: [id])
lotId Int
lot Lot @relation(fields: [lotId], references: [id])
claim Claim?
createdAt DateTime @default(now())
}
model Claim {
id Int @id @default(autoincrement())
status ClaimStatus @default(PENDING)
participationId Int @unique
participation Participation @relation(fields: [participationId], references: [id])
validatedByEmployeeId Int?
validatedByEmployee User? @relation("EmployeeClaims", fields: [validatedByEmployeeId], references: [id])
claimedAt DateTime?
createdAt DateTime @default(now())
}
model GrandPrizeWinner {
id Int @id @default(autoincrement())
userId Int @unique
user User @relation(fields: [userId], references: [id])
prize String @default("Un an de thé d'une valeur de 360€")
drawnAt DateTime @default(now())
}