from __future__ import annotations
from typing import Optional
from datetime import datetime
from pydantic import BaseModel, Field


class ImageOut(BaseModel):
    id: int
    product_id: int
    url: str
    webp_url: Optional[str] = None
    alt_text: Optional[str] = None
    sort_order: int = 0
    is_primary: bool = False
    created_at: Optional[datetime] = None

    model_config = {"from_attributes": True}


class ImageCreate(BaseModel):
    url: str = Field(..., max_length=500)
    alt_text: Optional[str] = Field(None, max_length=200)
    sort_order: int = Field(0, ge=0)
    is_primary: bool = False


class ImageUpdate(BaseModel):
    alt_text: Optional[str] = Field(None, max_length=200)
    sort_order: Optional[int] = Field(None, ge=0)
    is_primary: Optional[bool] = None