from datetime import datetime from sqlalchemy import BigInteger, DateTime, String, func from sqlalchemy.orm import Mapped, mapped_column, relationship from app.db.base import Base class User(Base): __tablename__ = "users" id: Mapped[int] = mapped_column(primary_key=True) telegram_id: Mapped[int] = mapped_column(BigInteger, unique=True, index=True) username: Mapped[str | None] = mapped_column(String(128)) first_name: Mapped[str | None] = mapped_column(String(128)) last_name: Mapped[str | None] = mapped_column(String(128)) locale: Mapped[str] = mapped_column(String(8), default="ru", server_default="ru") currency: Mapped[str] = mapped_column(String(3), default="RUB", server_default="RUB") created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), server_default=func.now()) updated_at: Mapped[datetime] = mapped_column( DateTime(timezone=True), server_default=func.now(), onupdate=func.now() ) cars = relationship("Car", back_populates="owner", cascade="all, delete-orphan") push_subscriptions = relationship( "PushSubscription", back_populates="user", cascade="all, delete-orphan" )