import { Model, model, Schema } from "mongoose";
import { IMessage } from "../interfaces/models/messageInterface";

const ChatMediaItemSchema = new Schema(
  {
    url: { type: String, required: true, trim: true },
    type: {
      type: String,
      enum: ["image", "video", "file"],
      required: true,
    },
    mimeType: { type: String, trim: true, default: null },
    fileName: { type: String, trim: true, default: null },
  },
  { _id: false },
);

const MessageSchema = new Schema<IMessage>(
  {
    conversationId: {
      type: Schema.Types.ObjectId,
      ref: "Conversation",
      required: true,
      index: true,
    },
    senderId: {
      type: Schema.Types.ObjectId,
      ref: "User",
      required: true,
      index: true,
    },
    text: {
      type: String,
      trim: true,
      maxlength: 2000,
      default: "",
    },
    media: {
      type: [ChatMediaItemSchema],
      default: [],
    },
  },
  { timestamps: true },
);

MessageSchema.index({ conversationId: 1, createdAt: -1 });

const MessageModel: Model<IMessage> = model<IMessage>("Message", MessageSchema);

export default MessageModel;
