Coverage for app / models / user.py: 100%
12 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-05-05 17:54 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-05-05 17:54 +0000
1import uuid
2from datetime import datetime, timezone
4from sqlalchemy import String, DateTime, func
5from sqlalchemy.orm import Mapped, mapped_column, relationship
7from app.db.base import Base
10class User(Base):
11 __tablename__ = "users"
13 id: Mapped[uuid.UUID] = mapped_column(primary_key=True, default=uuid.uuid4)
14 email: Mapped[str] = mapped_column(String(255), unique=True, nullable=False)
15 supabase_uid: Mapped[str] = mapped_column(String(128), unique=True, nullable=False)
16 created_at: Mapped[datetime] = mapped_column(
17 DateTime(timezone=True),
18 server_default=func.now(),
19 default=lambda: datetime.now(timezone.utc),
20 )
22 monitors: Mapped[list["Monitor"]] = relationship(
23 "Monitor", back_populates="user", cascade="all, delete-orphan"
24 )