from pydantic import BaseModel
from typing import Optional
from datetime import datetime
from uuid import UUID


class WatchHistoryCreate(BaseModel):
    stream_id: UUID
    last_position_seconds: int = 0
    completed: bool = False


class WatchHistoryUpdate(BaseModel):
    last_position_seconds: int
    completed: Optional[bool] = None


class WatchHistoryResponse(BaseModel):
    id: UUID
    user_id: UUID
    stream_id: UUID
    last_position_seconds: int
    completed: bool
    last_watched_at: datetime
    created_at: datetime

    class Config:
        from_attributes = True


class WatchHistoryWithStream(WatchHistoryResponse):
    stream_title: Optional[str] = None
    stream_thumbnail_url: Optional[str] = None
    stream_duration_seconds: Optional[int] = None
