from typing import TYPE_CHECKING from sqlalchemy import Boolean, String from sqlalchemy.orm import Mapped, mapped_column, relationship from app.models.base import Base, TimestampMixin, UUIDMixin if TYPE_CHECKING: from app.models.project import Project class User(Base, UUIDMixin, TimestampMixin): __tablename__ = "user" authentik_sub: Mapped[str] = mapped_column( String(255), unique=True, index=True ) email: Mapped[str] = mapped_column( String(255), unique=True, index=True ) display_name: Mapped[str | None] = mapped_column( String(255), nullable=True ) is_active: Mapped[bool] = mapped_column( Boolean, default=True ) projects: Mapped[list["Project"]] = relationship( back_populates="owner" )