20 lines
655 B
Python
20 lines
655 B
Python
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: "<resource>:<action>", 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",
|
|
)
|