Spaces:
Running
Running
File size: 1,312 Bytes
29cbab9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | import uuid
from typing import List, TYPE_CHECKING
from sqlmodel import Field, SQLModel, Relationship
from .membership import Membership
if TYPE_CHECKING:
from .user import User
from .procedure import Procedure
from .institution import Institution
from .team_procedure_value import TeamProcedureValue
class Team(SQLModel, table=True):
"""
Represents a medical group within an institution.
Holds goals and invite codes.
"""
__tablename__ = "teams"
id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
name: str = Field(nullable=False)
institution_id: uuid.UUID = Field(foreign_key="institutions.id", nullable=False)
invite_code: str = Field(unique=True, index=True, nullable=False)
revenue_goal: float = Field(default=0.0, nullable=False)
procedure_goal: int = Field(default=0, nullable=False)
safety_goal: float = Field(default=3.0, description="Meta máxima de complicações (%)")
# Relationships
institution: "Institution" = Relationship(back_populates="teams")
members: List["User"] = Relationship(back_populates="teams", link_model=Membership)
procedures: List["Procedure"] = Relationship(back_populates="team")
procedure_values: List["TeamProcedureValue"] = Relationship(back_populates="team")
|