Reflex/backend/models/Conversation.js
2025-05-21 22:13:09 +07:00

37 lines
1.7 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;