import mongoose, { type InferSchemaType } from 'mongoose'

const meetingSchema = new mongoose.Schema(
  {
    meetingCode: { type: String, required: true, unique: true, index: true },
    hostId: { type: mongoose.Schema.Types.ObjectId, ref: 'User', default: null },
    hostGuestId: { type: String, default: null, index: true },
    title: { type: String, required: true, trim: true, maxlength: 120 },
    scheduledAt: { type: Date, default: null },
    status: { type: String, enum: ['scheduled', 'live', 'ended'], default: 'live', index: true },
    settings: {
      waitingRoom: { type: Boolean, default: true },
      allowChat: { type: Boolean, default: true },
      allowScreenShare: { type: Boolean, default: true },
    },
  },
  { timestamps: { createdAt: true, updatedAt: true } },
)

export type MeetingDocument = InferSchemaType<typeof meetingSchema> & { _id: mongoose.Types.ObjectId }

export const Meeting = mongoose.model('Meeting', meetingSchema)
