from sqlalchemy import String from sqlalchemy.orm import Mapped, mapped_column, relationship from app.core.database import Base from app.models.associations import role_permissions class Permission(Base): __tablename__ = "permissions" id: Mapped[int] = mapped_column(primary_key=True) # Convention: ":", e.g. "users:read". name: Mapped[str] = mapped_column(String(128), unique=True, index=True) description: Mapped[str | None] = mapped_column(String(255), default=None) roles: Mapped[list["Role"]] = relationship( # noqa: F821 secondary=role_permissions, back_populates="permissions", )