enum MeetingStatus {
  DRAFT
  SCHEDULED
  SUBMITTED
  COMPLETED
}

model Meeting {
  id                Int           @id @default(autoincrement())
  title             String        @db.VarChar(100)
  description       String?
  meetingDate       DateTime?     @map("meeting_date") @db.Date
  startTime         DateTime?     @map("start_time") @db.Time
  endTime           DateTime?     @map("end_time") @db.Time
  location          String?
  documentReference String?       @map("document_reference")
  status            MeetingStatus @default(DRAFT)
  meetingRequestId  Int?          @map("meeting_request_id")
  userId            Int           @map("user_id")
  createdAt         DateTime      @default(now()) @map("created_at")
  updatedAt         DateTime      @updatedAt @map("updated_at")
  deletedAt         DateTime?     @map("deleted_at")

  meetingRequest   MeetingRequests? @relation("meetings", fields: [meetingRequestId], references: [id])
  user             User             @relation("meetings", fields: [userId], references: [id])
  guests           MeetingGuest[]
  meetingSummaries MeetingSummary[] @relation("meeting_summaries")

  @@index([meetingRequestId])
  @@index([userId])
  @@index([meetingDate])
  @@index([status])
  @@map("meetings")
}

model MeetingGuest {
  id        Int       @id @default(autoincrement())
  meetingId Int       @map("meeting_id")
  email     String?   @db.VarChar(100)
  userId    Int?      @map("user_id")
  createdAt DateTime  @default(now()) @map("created_at")
  updatedAt DateTime  @updatedAt @map("updated_at")
  deletedAt DateTime? @map("deleted_at")

  meeting Meeting @relation(fields: [meetingId], references: [id])
  user    User?   @relation("guests", fields: [userId], references: [id])

  @@index([meetingId])
  @@index([userId])
  @@map("meeting_guests")
}
