import mongoose, { Schema, models, model } from "mongoose";

export type OrderMessageSender = "admin" | "client";

export interface OrderMessageDoc {
  _id: string;
  orderId: mongoose.Types.ObjectId;
  senderId: mongoose.Types.ObjectId;
  senderType: OrderMessageSender;
  text: string;
  createdAt: Date;
}

const orderMessageSchema = new Schema<OrderMessageDoc>(
  {
    orderId: { type: Schema.Types.ObjectId, ref: "Order", required: true, index: true },
    senderId: { type: Schema.Types.ObjectId, ref: "Client", required: true },
    senderType: { type: String, enum: ["admin", "client"], required: true },
    text: { type: String, required: true, trim: true, maxlength: 2000 },
  },
  { timestamps: true }
);

export const OrderMessage =
  (models.OrderMessage as mongoose.Model<OrderMessageDoc>) ||
  model<OrderMessageDoc>("OrderMessage", orderMessageSchema);
