Добавлены новые зависимости для работы с эмодзи и улучшена структура базы данных. Реализована модель сообщений и обновлены компоненты для поддержки новых функций мессенджера. Обновлены запросы и мутации для работы с сообщениями и чатом.

This commit is contained in:
Bivekich
2025-07-16 22:07:38 +03:00
parent 823ef9a28c
commit 205c9eae98
33 changed files with 3288 additions and 229 deletions

View File

@ -15,6 +15,7 @@ model User {
id String @id @default(cuid())
phone String @unique
avatar String? // URL аватара в S3
managerName String? // Имя управляющего
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
@ -25,6 +26,9 @@ model User {
// SMS коды для авторизации
smsCodes SmsCode[]
// Отправленные сообщения
sentMessages Message[] @relation("SentMessages")
@@map("users")
}
@ -106,6 +110,10 @@ model Organization {
organizationCounterparties Counterparty[] @relation("OrganizationCounterparties")
counterpartyOf Counterparty[] @relation("CounterpartyOf")
// Сообщения
sentMessages Message[] @relation("SentMessages")
receivedMessages Message[] @relation("ReceivedMessages")
@@map("organizations")
}
@ -189,3 +197,41 @@ enum CounterpartyRequestStatus {
REJECTED // Отклонена
CANCELLED // Отменена отправителем
}
// Модель сообщений в мессенджере
model Message {
id String @id @default(cuid())
content String? // Текст сообщения (nullable для медиа)
type MessageType @default(TEXT)
voiceUrl String? // URL голосового файла в S3
voiceDuration Int? // Длительность голосового сообщения в секундах
fileUrl String? // URL файла/изображения в S3
fileName String? // Оригинальное имя файла
fileSize Int? // Размер файла в байтах
fileType String? // MIME тип файла
isRead Boolean @default(false)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
// Отправитель
sender User @relation("SentMessages", fields: [senderId], references: [id])
senderId String
senderOrganization Organization @relation("SentMessages", fields: [senderOrganizationId], references: [id])
senderOrganizationId String
// Получатель
receiverOrganization Organization @relation("ReceivedMessages", fields: [receiverOrganizationId], references: [id])
receiverOrganizationId String
@@index([senderOrganizationId, receiverOrganizationId, createdAt])
@@index([receiverOrganizationId, isRead])
@@map("messages")
}
// Типы сообщений
enum MessageType {
TEXT
VOICE
IMAGE
FILE
}