Added Chat Page

This commit is contained in:
2026-01-21 18:13:35 +01:00
parent 0ca8ce8b52
commit 3eed79ca93
37 changed files with 3966 additions and 64 deletions

View File

@@ -17,6 +17,8 @@ model User {
name String?
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
conversations ConversationParticipant[]
sentMessages Message[]
}
model Chauffeur {
@@ -75,7 +77,8 @@ model Trajet {
adresseDepart String // Adresse de départ
adresseArrivee String // Adresse d'arrivée
commentaire String? // Commentaire optionnel
statut String @default("Planifié") // Planifié, En cours, Terminé, Annulé
statut String @default("Planifié") // Planifié, En cours, Terminé, Annulé, Validé
archived Boolean @default(false) // Indique si le trajet est archivé
adherentId String // Référence à l'adhérent
adherent Adherent @relation(fields: [adherentId], references: [id])
chauffeurId String? // Référence au chauffeur (optionnel)
@@ -83,3 +86,57 @@ model Trajet {
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Conversation {
id String @id @default(cuid())
name String? // Nom pour les groupes (null pour les conversations individuelles)
type String @default("direct") // "direct" ou "group"
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
participants ConversationParticipant[]
messages Message[]
}
model ConversationParticipant {
id String @id @default(cuid())
conversationId String
conversation Conversation @relation(fields: [conversationId], references: [id], onDelete: Cascade)
userId String
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
joinedAt DateTime @default(now())
lastReadAt DateTime? // Dernière fois que l'utilisateur a lu les messages
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@@unique([conversationId, userId])
@@index([userId])
@@index([conversationId])
}
model Message {
id String @id @default(cuid())
conversationId String
conversation Conversation @relation(fields: [conversationId], references: [id], onDelete: Cascade)
senderId String
sender User @relation(fields: [senderId], references: [id])
content String? // Contenu textuel du message (peut être null si seulement des fichiers)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
files MessageFile[]
@@index([conversationId, createdAt])
@@index([senderId])
}
model MessageFile {
id String @id @default(cuid())
messageId String
message Message @relation(fields: [messageId], references: [id], onDelete: Cascade)
filename String // Nom original du fichier
filepath String // Chemin de stockage du fichier
fileType String // Type MIME du fichier
fileSize Int // Taille en bytes
createdAt DateTime @default(now())
@@index([messageId])
}