from typing import List
from pydantic import BaseModel, ConfigDict
from app.schemas.product_template import ProductTemplateInfo

class ProjectCreate(BaseModel):
    project_name: str
    client_name: str

    model_config = ConfigDict(extra="forbid")

class ProjectRead(BaseModel):
    id: int
    project_name: str
    client_name: str
    overlay_image_path: str | None
    overlay_thumbnail_path: str | None
    logo_image_path: str | None = None
    logo_thumbnail_path: str | None = None

    model_config = ConfigDict(from_attributes=True, extra="ignore")

class ProjectUpdateResponse(BaseModel):
    success: bool
    message: str
    project_id: int

class ProjectListResponse(BaseModel):
    success: bool = True
    page: int
    limit: int
    total: int
    projects: List[ProjectRead]

    model_config = ConfigDict(from_attributes=True, extra="ignore")

class ProductImageDetailRead(BaseModel):
    id: int
    final_image_path: str
    final_image_thumbnail_path: str | None = None
    final_image_product_path: str | None = None
    product_template: ProductTemplateInfo

    model_config = ConfigDict(from_attributes=True)

class ProjectDetailRead(ProjectRead):
    images: List[ProductImageDetailRead]
