""" Python representation of `usercapability` table. """ from enum import Enum from typing import TYPE_CHECKING from sqlmodel import Field, Relationship, SQLModel if TYPE_CHECKING: from .user import User class Capability(Enum): """ Allowed values for capabilities """ admin = "admin" login = "login" issue = "issue" renew = "renew" def __repr__(self) -> str: return self.value class UserCapabilityBase(SQLModel): """ Common to all representations of capabilities """ capability_name: str = Field(primary_key=True) @property def _(self) -> Capability: """ Transform into a `Capability`. """ return Capability(self.capability_name) def __repr__(self) -> str: return self.capability_name class UserCapability(UserCapabilityBase, table=True): """ Representation of usercapability table """ user_name: str = Field(primary_key=True, foreign_key="user.name") user: "User" = Relationship( back_populates="capabilities", )