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

1import uuid 

2from datetime import datetime, timezone 

3 

4from sqlalchemy import String, DateTime, func 

5from sqlalchemy.orm import Mapped, mapped_column, relationship 

6 

7from app.db.base import Base 

8 

9 

10class User(Base): 

11 __tablename__ = "users" 

12 

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 ) 

21 

22 monitors: Mapped[list["Monitor"]] = relationship( 

23 "Monitor", back_populates="user", cascade="all, delete-orphan" 

24 )