from pydantic import BaseModel, EmailStr from typing import Optional, Union, List import datetime class LoginRequest(BaseModel): username: str password: str class LoginResponse(BaseModel): user_id: int username: str caption: str email: EmailStr token: str class UserInfo(BaseModel): user_id: int username: str caption: str email: EmailStr created_at: datetime.datetime meetings_created: int meetings_attended: int class AttendeeInfo(BaseModel): user_id: int caption: str class Meeting(BaseModel): meeting_id: int title: str meeting_time: Optional[datetime.datetime] summary: Optional[str] created_at: datetime.datetime attendees: Union[List[str], List[AttendeeInfo]] # Support both formats creator_id: int creator_username: str audio_file_path: Optional[str] = None class TranscriptSegment(BaseModel): segment_id: int meeting_id: int speaker_tag: str start_time_ms: int end_time_ms: int text_content: str class CreateMeetingRequest(BaseModel): title: str meeting_time: Optional[datetime.datetime] attendee_ids: list[int] class UpdateMeetingRequest(BaseModel): title: str meeting_time: Optional[datetime.datetime] summary: Optional[str] attendee_ids: list[int]