"""
Modèle SQLAlchemy pour les catégories d'articles
"""
from sqlalchemy import Column, Integer, String, ForeignKey
from sqlalchemy.orm import relationship
from app.database import Base


class Categorie(Base):
    """
    Catégorie arborescente pour organiser les articles
    Exemples: Stock > Bois > Planche
    """
    __tablename__ = "categories"
    
    id = Column(Integer, primary_key=True, index=True)
    nom = Column(String(100), nullable=False)
    icone = Column(String(10), nullable=True)  # Emoji comme 🪵, 🔩
    niveau = Column(Integer, default=1)  # 1=racine, 2=sous-cat, 3=sous-sous-cat
    parent_id = Column(Integer, ForeignKey("categories.id"), nullable=True)
    
    # Relations
    parent = relationship("Categorie", remote_side=[id], backref="enfants")
    articles = relationship("Article", back_populates="categorie")
    
    def __repr__(self):
        return f"<Categorie {self.nom}>"
    
    @property
    def chemin_complet(self):
        """Retourne le chemin complet: Stock › Bois › Planche"""
        if self.parent:
            return f"{self.parent.chemin_complet} › {self.nom}"
        return self.nom
