from sqlalchemy import Column, ForeignKey, String, Text, Integer, Boolean
from sqlalchemy import TIMESTAMP, Index
from sqlalchemy.dialects.mysql import BIGINT, VARCHAR, TINYINT, TEXT
from sqlalchemy.orm import relationship
from app.db.base_class import Base


class TattooStyle(Base):
    __tablename__ = "tattoo_styles"

    style_id = Column(BIGINT(unsigned=True), primary_key=True, autoincrement=True)
    category_id = Column(
        BIGINT(unsigned=True),
        ForeignKey("categories.category_id", ondelete="CASCADE"),
        nullable=False,
        index=True,
    )
    name = Column(VARCHAR(100), nullable=False)
    slug = Column(VARCHAR(100), nullable=False, unique=True, index=True)
    description = Column(Text, nullable=True)
    thumbnail_url = Column(Text, nullable=True)
    is_active = Column(TINYINT(1), nullable=True, default=1)
    sort_order = Column(Integer, nullable=True, default=0)
    is_free = Column(TINYINT(1), nullable=True, default=0)
    is_thumbnail = Column(TINYINT(1), nullable=True, default=0)
    is_popular = Column(TINYINT(1), nullable=True, default=0)
    created_at = Column(BIGINT, nullable=False)
    updated_at = Column(BIGINT, nullable=False)

    # Relationships
    category = relationship("Category", back_populates="tattoo_styles")

    def __repr__(self) -> str:
        return f"<TattooStyle id={self.style_id} slug={self.slug} category_id={self.category_id}>"
