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

29 statements  

« prev     ^ index     » next       coverage.py v7.5.4, created at 2024-07-01 22:29 +0200

1from sqlalchemy.orm import Mapped, mapped_column, relationship 

2from sqlalchemy import Boolean, ForeignKey, Integer, String, Date 

3from sqlalchemy.orm import DeclarativeBase 

4from datetime import date 

5 

6 

7class Base(DeclarativeBase): 

8 pass 

9 

10 

11class Contact(Base): 

12 __tablename__ = "contacts" 

13 

14 id: Mapped[int] = mapped_column(primary_key=True) 

15 first_name: Mapped[str] = mapped_column(String(50), index=True) 

16 last_name: Mapped[str] = mapped_column(String(50), index=True) 

17 email: Mapped[str] = mapped_column(String(100), unique=True, index=True) 

18 birthday: Mapped[date] = mapped_column(Date) 

19 additional_data: Mapped[str] = mapped_column(String, nullable=True) 

20 created_at: Mapped[date] = mapped_column(Date, default=date.today) 

21 updated_at: Mapped[date] = mapped_column(Date, default=date.today, onupdate=date.today) 

22 

23 user_id: Mapped[int] = mapped_column(Integer, ForeignKey("users.id"), nullable=True) 

24 user: Mapped["User"] = relationship("User", backref="contacts", lazy="joined") 

25 

26 

27class User(Base): 

28 __tablename__ = "users" 

29 

30 id: Mapped[int] = mapped_column(primary_key=True) 

31 username: Mapped[str] = mapped_column(String(50)) 

32 email: Mapped[str] = mapped_column(String(150), nullable=False, unique=True, index=True) 

33 password: Mapped[str] = mapped_column(String(255), nullable=False) 

34 avatar: Mapped[str] = mapped_column(String(255), nullable=True) 

35 refresh_token: Mapped[str] = mapped_column(String(255), nullable=True) 

36 created_at: Mapped[date] = mapped_column(Date, default=date.today) 

37 updated_at: Mapped[date] = mapped_column(Date, default=date.today, onupdate=date.today) 

38 confirmed: Mapped[bool] = mapped_column(Boolean, default=False, nullable=True)