from sqlalchemy import Column, Integer, Boolean, TIMESTAMP, ForeignKey, text
from sqlalchemy.orm import relationship
from db.session import Base


class Permission(Base):
    __tablename__ = "permissions"

    id = Column(Integer, primary_key=True, index=True, autoincrement=True)
    role_id = Column(Integer, ForeignKey("roles.id"), nullable=False)
    section_id = Column(Integer, ForeignKey("sections.id"), nullable=False)

    create = Column(Boolean, server_default="0", nullable=False)
    view = Column(Boolean, server_default="1", nullable=False)
    edit = Column(Boolean, server_default="0", nullable=False)
    delete = Column(Boolean, server_default="0", nullable=False)

    created_at = Column(
        TIMESTAMP,
        nullable=False,
        server_default=text("CURRENT_TIMESTAMP")
    )
    updated_at = Column(
        TIMESTAMP,
        nullable=False,
        server_default=text("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
    )

    # relationships (optional, only if you want to join with roles/sections)
    role = relationship("Role", back_populates="permissions")
    section = relationship("Section", back_populates="permissions")
