from typing import Optional
from sqlmodel import SQLModel, Field
from datetime import datetime

class ProductTemplate(SQLModel, table=True):
    """
    Database model that represents an uploaded PSD product template.
    """
    __tablename__ = "product_template"

    id: Optional[int] = Field(default=None, primary_key=True)
    name: str = Field(index=True, nullable=False)
    uploaded_by: Optional[int] = Field(default=None, foreign_key="user.id")

    # On-disk paths
    file_path: str = Field(nullable=False)
    preview_png_path: Optional[str] = Field(default=None)

    # PSD image ratio
    ratio: Optional[str] = Field(default="0:0")

    # Soft-delete
    is_deleted: bool = Field(default=False)

    created_at: datetime = Field(default_factory=datetime.utcnow)
    updated_at: datetime = Field(default_factory=datetime.utcnow, sa_column_kwargs={"onupdate": datetime.utcnow})
