from pydantic import BaseModel
from typing import Optional
from datetime import datetime


class UserResponse(BaseModel):
    email: str
    name: str


class MeetingCreate(BaseModel):
    meet_link: str
    title: str | None = None
    scheduled_at: datetime | None = None
    platform: str | None = None


class ScheduledMeetingCreate(BaseModel):
    title: str
    start_time: datetime
    end_time: datetime
    description: str | None = None
    auto_schedule_bot: bool = True


class CalendarWatchRequest(BaseModel):
    webhook_url: str
    days_ahead: int = 7
    auto_schedule_bot: bool = True


class CalendarSyncSettingRequest(BaseModel):
    enabled: bool


class AdminUserDecisionRequest(BaseModel):
    action: str


class RecurringCandidateDecisionRequest(BaseModel):
    action: str


class RecordingResponse(BaseModel):
    id: int
    meeting_id: int
    file_path: Optional[str]
    status: str
    recall_recording_id: Optional[str] = None
    audio_download_url: Optional[str] = None
    video_download_url: Optional[str] = None
    transcript_download_url: Optional[str] = None
    transcript_provider_data_download_url: Optional[str] = None
    participant_events_download_url: Optional[str] = None
    speaker_timeline_download_url: Optional[str] = None
    participants_download_url: Optional[str] = None
    started_at: Optional[datetime]
    stopped_at: Optional[datetime]

    class Config:
        from_attributes = True
