Added Chat Page
This commit is contained in:
BIN
prisma/dev.db
BIN
prisma/dev.db
Binary file not shown.
@@ -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])
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user