from pydantic import BaseModel, Field from typing import Optional, List from datetime import datetime class MeetingBase(BaseModel): title: str = Field(..., max_length=255) tags: Optional[str] = None meeting_time: Optional[datetime] = None status: str = "draft" class MeetingCreate(MeetingBase): pass class MeetingUpdate(BaseModel): title: Optional[str] = None tags: Optional[str] = None status: Optional[str] = None summary: Optional[str] = None class AttendeeOut(BaseModel): attendee_id: int user_id: Optional[int] display_name: Optional[str] = None avatar: Optional[str] = None class Config: from_attributes = True class MeetingOut(MeetingBase): meeting_id: int user_id: Optional[int] creator_name: Optional[str] = None creator_avatar: Optional[str] = None summary: Optional[str] = None created_at: datetime updated_at: datetime attendees: List[AttendeeOut] = [] class Config: from_attributes = True class TranscriptSegmentOut(BaseModel): segment_id: int speaker_id: Optional[int] speaker_tag: Optional[str] start_time_ms: int end_time_ms: int text_content: str class Config: from_attributes = True class MeetingDetailOut(MeetingOut): segments: List[TranscriptSegmentOut] = [] # Add other details like audio list if needed class MeetingListOut(BaseModel): items: List[MeetingOut] total: int