from sqlalchemy import Column, String, Boolean, DateTime, ForeignKey, UniqueConstraint from sqlalchemy.sql import func from app.core.database.db_session import Base class Permission(Base): __tablename__ = "permissions" permission_id = Column(String(26), primary_key=True) module = Column(String(50), nullable=False) resource = Column(String(50), nullable=False) action = Column(String(50), nullable=False) permission_code = Column(String(150), unique=True, nullable=False) # module.resource.action description = Column(String(255), nullable=True) is_active = Column(Boolean, default=True) created_at = Column(DateTime, server_default=func.now()) class RolePermission(Base): __tablename__ = "role_permissions" id = Column(String(26), primary_key=True) role_id = Column(String(26), ForeignKey("roles.role_id", ondelete="CASCADE"), nullable=False) permission_id = Column(String(26), ForeignKey("permissions.permission_id", ondelete="CASCADE"), nullable=False) created_at = Column(DateTime, server_default=func.now()) __table_args__ = ( UniqueConstraint("role_id", "permission_id", name="uq_role_permission"), )