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
« 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
7class Base(DeclarativeBase):
8 pass
11class Contact(Base):
12 __tablename__ = "contacts"
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)
23 user_id: Mapped[int] = mapped_column(Integer, ForeignKey("users.id"), nullable=True)
24 user: Mapped["User"] = relationship("User", backref="contacts", lazy="joined")
27class User(Base):
28 __tablename__ = "users"
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)