from sqlalchemy import Column, Integer, String, Boolean, DateTime, func, ForeignKey
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship


Base = declarative_base()
class Category(Base):
    __tablename__ = "categories"

    id = Column(Integer, primary_key=True,autoincrement=True)
    category_name = Column(String, nullable=False)
    category_desc = Column(String, nullable=False)
    is_active = Column(Boolean, nullable=False, default=True)
    created_at = Column(DateTime, nullable=False, server_default=func.now())  # Valeur par défaut

    employees = relationship("Employee", back_populates="category")
class Employee(Base):
    __tablename__ = "employees"

    id = Column(Integer, primary_key=True, index=True)
    first_name = Column(String, nullable=False)
    last_name = Column(String, nullable=False)
    matricule = Column(String, nullable=False)
    mail = Column(String, nullable=False)
    category_id = Column(Integer, ForeignKey("categories.id"), nullable=False)
    is_active = Column(Boolean, nullable=False, default=True)
    created_at = Column(DateTime, nullable=False, server_default=func.now())  # Valeur par défaut
    last_update = Column(DateTime, nullable=False, server_default=func.now(), onupdate=func.now())  # Mise à jour automatique
    category = relationship("Category", back_populates="employees")
    # def as_dict(self):
    #     return {
    #         "id": self.id,
    #         "first_name": self.first_name,
    #         "last_name": self.last_name,
    #         "matricule": self.matricule,
    #         "mail": self.mail,
    #         "category_id": self.category_id,
    #         "is_active": self.is_active,
    #         "created_at": self.created_at,
    #         "last_update": self.last_update,
    #         "category_name": self.category.category_name if self.category else "Unknown"
    #     }
