from __future__ import annotations from datetime import datetime from typing import TYPE_CHECKING from uuid import UUID from sqlalchemy import DateTime, String, func from sqlalchemy.orm import Mapped, mapped_column, relationship from app.core.database import Base if TYPE_CHECKING: from app.models.nuzlocke_run import NuzlockeRun class User(Base): __tablename__ = "users" id: Mapped[UUID] = mapped_column(primary_key=True) email: Mapped[str] = mapped_column(String(255), unique=True, index=True) display_name: Mapped[str | None] = mapped_column(String(100)) created_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), server_default=func.now() ) runs: Mapped[list[NuzlockeRun]] = relationship(back_populates="owner") def __repr__(self) -> str: return f""