const mongoose = require('mongoose');

const messageSchema = new mongoose.Schema(
  {
    conversationId: {
      type: mongoose.Schema.Types.ObjectId,
      ref: 'Conversation',
      required: true,
    },
    sender: {
      type: mongoose.Schema.Types.ObjectId,
      ref: 'User',
      required: true,
    },
    // receiver: { // Можно убрать, так как другой участник есть в Conversation.participants
    //   type: mongoose.Schema.Types.ObjectId,
    //   ref: 'User',
    //   required: true,
    // },
    text: {
      type: String,
      required: true,
      trim: true,
    },
    readBy: [{ // Массив ID пользователей, прочитавших сообщение (если чат групповой, для 1-на-1 достаточно одного ID)
        type: mongoose.Schema.Types.ObjectId,
        ref: 'User'
    }],
    isEdited: {
      type: Boolean,
      default: false,
    },
    editedAt: {
      type: Date,
    },
    status: {
      type: String,
      enum: ['sending', 'delivered', 'read'],
      default: 'sending'
    },
    // Или просто флаг для 1-на-1 чата
    // isRead: { 
    //   type: Boolean,
    //   default: false
    // }
  },
  {
    timestamps: true, // createdAt (время отправки), updatedAt
  }
);

// Индекс для быстрой выборки сообщений по диалогу и сортировки по времени
messageSchema.index({ conversationId: 1, createdAt: -1 });

const Message = mongoose.model('Message', messageSchema);

module.exports = Message;