Reflex/backend/models/Conversation.js

37 lines
1.7 KiB
JavaScript
Raw Normal View History

2025-05-21 22:13:09 +07:00
const mongoose = require('mongoose');
const conversationSchema = new mongoose.Schema(
{
participants: [
{
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
required: true,
},
],
// Можно добавить поле для последнего сообщения, чтобы легче было сортировать/отображать в списке чатов
lastMessage: {
type: mongoose.Schema.Types.ObjectId,
ref: 'Message',
},
// lastMessageTimestamp: { // Или просто timestamp последнего сообщения
// type: Date,
// default: Date.now
// }
},
{
timestamps: true, // createdAt, updatedAt для диалога
}
);
// Индекс для участников, чтобы быстро находить диалоги по двум пользователям
// Уникальный индекс гарантирует, что между двумя пользователями будет только один диалог
// Порядок участников в массиве важен для уникальности, если не использовать $all
// Для простоты можно не делать его уникальным на уровне схемы, а проверять при создании.
// Либо хранить участников всегда в отсортированном порядке их ID.
// Пока оставим без уникального индекса, будем проверять в коде.
// conversationSchema.index({ participants: 1 });
const Conversation = mongoose.model('Conversation', conversationSchema);
module.exports = Conversation;