from datetime import datetime
from sqlalchemy import Column, Integer, String, Float, Boolean, DateTime, Text
from app.database import Base
from app.utils.timezone import jakarta_now, to_jakarta_iso

class Cloth(Base):
    __tablename__ = "clothes"
    
    id = Column(Integer, primary_key=True, index=True)
    sku = Column(String, unique=True, index=True, nullable=False)
    name = Column(String, nullable=False)
    category = Column(String, default="Tops")
    brand = Column(String, default="MAP Collection")
    gender = Column(String, default="Unisex")
    price = Column(Float, default=0.0)
    description = Column(Text, default="")
    tryon_prompt = Column(Text, default="")
    original_image_url = Column(String, default="")
    cutout_image_url = Column(String, default="")
    mask_image_url = Column(String, default="")
    is_active = Column(Boolean, default=True)
    sort_order = Column(Integer, default=0)
    created_at = Column(DateTime, default=jakarta_now)
    updated_at = Column(DateTime, default=jakarta_now, onupdate=jakarta_now)

    def to_dict(self):
        return {
            "id": self.id,
            "sku": self.sku,
            "name": self.name,
            "category": self.category,
            "brand": self.brand,
            "gender": self.gender,
            "price": self.price,
            "description": self.description,
            "tryon_prompt": self.tryon_prompt,
            "original_image_url": self.original_image_url,
            "cutout_image_url": self.cutout_image_url,
            "mask_image_url": self.mask_image_url,
            "is_active": self.is_active,
            "sort_order": self.sort_order,
            "created_at": to_jakarta_iso(self.created_at),
            "updated_at": to_jakarta_iso(self.updated_at)
        }
