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;