Source code for app.db.models.role

from __future__ import annotations

from typing import TYPE_CHECKING

from advanced_alchemy.base import UUIDv7AuditBase
from advanced_alchemy.mixins import SlugKey
from sqlalchemy import String
from sqlalchemy.orm import (
    Mapped,
    mapped_column,
    relationship,
)

if TYPE_CHECKING:
    from .user import User as UserModel


[docs] class Role(UUIDv7AuditBase, SlugKey): """ORM Model representing user roles and permissions.""" __tablename__ = "role" name: Mapped[str] = mapped_column(String(100), unique=True, nullable=False) """The unique, displayable name of the role (e.g., 'Superuser', 'Application Access').""" description: Mapped[str | None] = mapped_column(String(255), nullable=True) """A brief description of the role's purpose and permissions.""" # ----------- # ORM Relationships # ------------ users: Mapped[list[UserModel]] = relationship( "User", back_populates="role", lazy="noload", viewonly=True, ) """The list of users assigned to this role."""