Add dotenv package for environment variable management and update pnpm-lock.yaml. Adjust layout in RegisterPage and LoginPage components for improved responsiveness. Enhance AdminPanel with ChallengeManagement section and update navigation links for challenges. Refactor Prisma schema to include Challenge model and related enums.
This commit is contained in:
@@ -1,6 +1,3 @@
|
||||
// This is your Prisma schema file,
|
||||
// learn more about it in the docs: https://pris.ly/d/prisma-schema
|
||||
|
||||
generator client {
|
||||
provider = "prisma-client"
|
||||
output = "./generated/prisma"
|
||||
@@ -10,6 +7,103 @@ datasource db {
|
||||
provider = "sqlite"
|
||||
}
|
||||
|
||||
model User {
|
||||
id String @id @default(cuid())
|
||||
email String @unique
|
||||
password String
|
||||
username String @unique
|
||||
role Role @default(USER)
|
||||
score Int @default(0)
|
||||
level Int @default(1)
|
||||
hp Int @default(1000)
|
||||
maxHp Int @default(1000)
|
||||
xp Int @default(0)
|
||||
maxXp Int @default(5000)
|
||||
avatar String?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
bio String?
|
||||
characterClass CharacterClass?
|
||||
eventFeedbacks EventFeedback[]
|
||||
eventRegistrations EventRegistration[]
|
||||
preferences UserPreferences?
|
||||
challengesAsChallenger Challenge[] @relation("Challenger")
|
||||
challengesAsChallenged Challenge[] @relation("Challenged")
|
||||
challengesAsAdmin Challenge[] @relation("AdminValidator")
|
||||
challengesAsWinner Challenge[] @relation("ChallengeWinner")
|
||||
|
||||
@@index([score])
|
||||
@@index([email])
|
||||
}
|
||||
|
||||
model UserPreferences {
|
||||
id String @id @default(cuid())
|
||||
userId String @unique
|
||||
homeBackground String?
|
||||
eventsBackground String?
|
||||
leaderboardBackground String?
|
||||
theme String? @default("default")
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
}
|
||||
|
||||
model Event {
|
||||
id String @id @default(cuid())
|
||||
date DateTime
|
||||
name String
|
||||
description String
|
||||
type EventType
|
||||
room String?
|
||||
time String?
|
||||
maxPlaces Int?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
feedbacks EventFeedback[]
|
||||
registrations EventRegistration[]
|
||||
|
||||
@@index([date])
|
||||
}
|
||||
|
||||
model EventRegistration {
|
||||
id String @id @default(cuid())
|
||||
userId String
|
||||
eventId String
|
||||
createdAt DateTime @default(now())
|
||||
event Event @relation(fields: [eventId], references: [id], onDelete: Cascade)
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@unique([userId, eventId])
|
||||
@@index([userId])
|
||||
@@index([eventId])
|
||||
}
|
||||
|
||||
model EventFeedback {
|
||||
id String @id @default(cuid())
|
||||
userId String
|
||||
eventId String
|
||||
rating Int
|
||||
comment String?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
event Event @relation(fields: [eventId], references: [id], onDelete: Cascade)
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@unique([userId, eventId])
|
||||
@@index([userId])
|
||||
@@index([eventId])
|
||||
}
|
||||
|
||||
model SitePreferences {
|
||||
id String @id @default("global")
|
||||
homeBackground String?
|
||||
eventsBackground String?
|
||||
leaderboardBackground String?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
primaryColor String? @default("#0be4cc")
|
||||
}
|
||||
|
||||
enum Role {
|
||||
USER
|
||||
ADMIN
|
||||
@@ -35,99 +129,36 @@ enum CharacterClass {
|
||||
NECROMANCER
|
||||
}
|
||||
|
||||
model User {
|
||||
id String @id @default(cuid())
|
||||
email String @unique
|
||||
password String
|
||||
username String @unique
|
||||
role Role @default(USER)
|
||||
score Int @default(0)
|
||||
level Int @default(1)
|
||||
hp Int @default(1000)
|
||||
maxHp Int @default(1000)
|
||||
xp Int @default(0)
|
||||
maxXp Int @default(5000)
|
||||
avatar String?
|
||||
bio String?
|
||||
characterClass CharacterClass?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
preferences UserPreferences?
|
||||
eventRegistrations EventRegistration[]
|
||||
eventFeedbacks EventFeedback[]
|
||||
|
||||
@@index([score])
|
||||
@@index([email])
|
||||
enum ChallengeStatus {
|
||||
PENDING
|
||||
ACCEPTED
|
||||
COMPLETED
|
||||
REJECTED
|
||||
CANCELLED
|
||||
}
|
||||
|
||||
model UserPreferences {
|
||||
id String @id @default(cuid())
|
||||
userId String @unique
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
model Challenge {
|
||||
id String @id @default(cuid())
|
||||
challengerId String // Joueur qui lance le défi
|
||||
challengedId String // Joueur qui reçoit le défi
|
||||
challenger User @relation("Challenger", fields: [challengerId], references: [id], onDelete: Cascade)
|
||||
challenged User @relation("Challenged", fields: [challengedId], references: [id], onDelete: Cascade)
|
||||
title String // Titre du défi
|
||||
description String // Description détaillée du défi
|
||||
pointsReward Int @default(100) // Points à gagner pour le gagnant
|
||||
status ChallengeStatus @default(PENDING)
|
||||
adminId String? // Admin qui valide le défi
|
||||
admin User? @relation("AdminValidator", fields: [adminId], references: [id], onDelete: SetNull)
|
||||
adminComment String? // Commentaire de l'admin lors de la validation/rejet
|
||||
winnerId String? // ID du gagnant (challengerId ou challengedId)
|
||||
winner User? @relation("ChallengeWinner", fields: [winnerId], references: [id], onDelete: SetNull)
|
||||
createdAt DateTime @default(now())
|
||||
acceptedAt DateTime? // Date d'acceptation du défi
|
||||
completedAt DateTime? // Date de validation par l'admin
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
// Background images for each page
|
||||
homeBackground String?
|
||||
eventsBackground String?
|
||||
leaderboardBackground String?
|
||||
|
||||
// Other UI preferences can be added here
|
||||
theme String? @default("default")
|
||||
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
}
|
||||
|
||||
model Event {
|
||||
id String @id @default(cuid())
|
||||
date DateTime
|
||||
name String
|
||||
description String
|
||||
type EventType
|
||||
room String?
|
||||
time String?
|
||||
maxPlaces Int?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
registrations EventRegistration[]
|
||||
feedbacks EventFeedback[]
|
||||
|
||||
@@index([date])
|
||||
}
|
||||
|
||||
model EventRegistration {
|
||||
id String @id @default(cuid())
|
||||
userId String
|
||||
eventId String
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
event Event @relation(fields: [eventId], references: [id], onDelete: Cascade)
|
||||
createdAt DateTime @default(now())
|
||||
|
||||
@@unique([userId, eventId])
|
||||
@@index([userId])
|
||||
@@index([eventId])
|
||||
}
|
||||
|
||||
model EventFeedback {
|
||||
id String @id @default(cuid())
|
||||
userId String
|
||||
eventId String
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
event Event @relation(fields: [eventId], references: [id], onDelete: Cascade)
|
||||
rating Int // Note de 1 à 5
|
||||
comment String? // Commentaire optionnel
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
|
||||
@@unique([userId, eventId])
|
||||
@@index([userId])
|
||||
@@index([eventId])
|
||||
}
|
||||
|
||||
model SitePreferences {
|
||||
id String @id @default("global")
|
||||
homeBackground String?
|
||||
eventsBackground String?
|
||||
leaderboardBackground String?
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
@@index([challengerId])
|
||||
@@index([challengedId])
|
||||
@@index([status])
|
||||
@@index([adminId])
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user