Add house leaderboard feature: Integrate house leaderboard functionality in LeaderboardPage and LeaderboardSection components. Update userStatsService to fetch house leaderboard data, and enhance UI to display house rankings, scores, and member details. Update Prisma schema to include house-related models and relationships, and seed database with initial house data.
Some checks failed
Deploy with Docker Compose / deploy (push) Has been cancelled
Some checks failed
Deploy with Docker Compose / deploy (push) Has been cancelled
This commit is contained in:
@@ -31,6 +31,11 @@ model User {
|
||||
challengesAsChallenged Challenge[] @relation("Challenged")
|
||||
challengesAsAdmin Challenge[] @relation("AdminValidator")
|
||||
challengesAsWinner Challenge[] @relation("ChallengeWinner")
|
||||
houseMemberships HouseMembership[]
|
||||
houseInvitationsSent HouseInvitation[] @relation("Inviter")
|
||||
houseInvitationsReceived HouseInvitation[] @relation("Invitee")
|
||||
houseRequestsSent HouseRequest[] @relation("Requester")
|
||||
housesCreated House[] @relation("HouseCreator")
|
||||
|
||||
@@index([score])
|
||||
@@index([email])
|
||||
@@ -166,3 +171,87 @@ model Challenge {
|
||||
@@index([status])
|
||||
@@index([adminId])
|
||||
}
|
||||
|
||||
model House {
|
||||
id String @id @default(cuid())
|
||||
name String
|
||||
description String?
|
||||
creatorId String
|
||||
creator User @relation("HouseCreator", fields: [creatorId], references: [id], onDelete: Cascade)
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
memberships HouseMembership[]
|
||||
invitations HouseInvitation[]
|
||||
requests HouseRequest[]
|
||||
|
||||
@@index([creatorId])
|
||||
@@index([name])
|
||||
}
|
||||
|
||||
model HouseMembership {
|
||||
id String @id @default(cuid())
|
||||
houseId String
|
||||
userId String
|
||||
role HouseRole @default(MEMBER)
|
||||
joinedAt DateTime @default(now())
|
||||
house House @relation(fields: [houseId], references: [id], onDelete: Cascade)
|
||||
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@unique([houseId, userId])
|
||||
@@index([houseId])
|
||||
@@index([userId])
|
||||
}
|
||||
|
||||
model HouseInvitation {
|
||||
id String @id @default(cuid())
|
||||
houseId String
|
||||
inviterId String // Utilisateur qui envoie l'invitation
|
||||
inviteeId String // Utilisateur invité
|
||||
status InvitationStatus @default(PENDING)
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
house House @relation(fields: [houseId], references: [id], onDelete: Cascade)
|
||||
inviter User @relation("Inviter", fields: [inviterId], references: [id], onDelete: Cascade)
|
||||
invitee User @relation("Invitee", fields: [inviteeId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@unique([houseId, inviteeId])
|
||||
@@index([houseId])
|
||||
@@index([inviteeId])
|
||||
@@index([status])
|
||||
}
|
||||
|
||||
model HouseRequest {
|
||||
id String @id @default(cuid())
|
||||
houseId String
|
||||
requesterId String // Utilisateur qui demande à rejoindre
|
||||
status RequestStatus @default(PENDING)
|
||||
createdAt DateTime @default(now())
|
||||
updatedAt DateTime @updatedAt
|
||||
house House @relation(fields: [houseId], references: [id], onDelete: Cascade)
|
||||
requester User @relation("Requester", fields: [requesterId], references: [id], onDelete: Cascade)
|
||||
|
||||
@@unique([houseId, requesterId])
|
||||
@@index([houseId])
|
||||
@@index([requesterId])
|
||||
@@index([status])
|
||||
}
|
||||
|
||||
enum HouseRole {
|
||||
OWNER
|
||||
ADMIN
|
||||
MEMBER
|
||||
}
|
||||
|
||||
enum InvitationStatus {
|
||||
PENDING
|
||||
ACCEPTED
|
||||
REJECTED
|
||||
CANCELLED
|
||||
}
|
||||
|
||||
enum RequestStatus {
|
||||
PENDING
|
||||
ACCEPTED
|
||||
REJECTED
|
||||
CANCELLED
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user