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

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

export interface WaitlistMessageDoc {
  _id: string;
  waitlistEntryId: mongoose.Types.ObjectId;
  senderId: mongoose.Types.ObjectId;
  senderType: WaitlistMessageSender;
  text: string;
  createdAt: Date;
}

const waitlistMessageSchema = new Schema<WaitlistMessageDoc>(
  {
    waitlistEntryId: { type: Schema.Types.ObjectId, ref: "WaitlistEntry", 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 WaitlistMessage =
  (models.WaitlistMessage as mongoose.Model<WaitlistMessageDoc>) ||
  model<WaitlistMessageDoc>("WaitlistMessage", waitlistMessageSchema);
