Coverage for src / auth / models.py: 100%

14 statements  

« prev     ^ index     » next       coverage.py v7.13.5, created at 2026-05-10 22:03 +0200

1import uuid 

2from datetime import datetime, timezone 

3from typing import List 

4 

5from fastapi_users_db_sqlalchemy import SQLAlchemyBaseUserTable 

6from sqlalchemy import Integer, String, DateTime 

7from sqlalchemy.orm import Mapped, mapped_column 

8from sqlalchemy.orm import relationship 

9from src.database import Base 

10 

11 

12class User(SQLAlchemyBaseUserTable[int], Base): 

13 id: Mapped[int] = mapped_column( 

14 Integer, primary_key=True, index=True 

15 ) 

16 email: Mapped[str] = mapped_column( 

17 String, unique=True, index=True, nullable=False 

18 ) 

19 hashed_password: Mapped[str] = mapped_column( 

20 String, nullable=False 

21 ) 

22 registered_at: Mapped[datetime] = mapped_column( 

23 DateTime(timezone=True), 

24 default=lambda: datetime.now(timezone.utc), 

25 nullable=False 

26 ) 

27 links: Mapped[List["Link"]] = relationship( 

28 "Link", 

29 back_populates="user", 

30 lazy="selectin")