import uuid from datetime import datetime from sqlalchemy import DateTime, ForeignKey from sqlalchemy.orm import Mapped, mapped_column, relationship from app.models.base import Base, TimestampMixin, UUIDPrimaryKeyMixin from app.models.user import User class AuthSession(UUIDPrimaryKeyMixin, TimestampMixin, Base): """Server-side login session; the id doubles as the cookie token.""" __tablename__ = "auth_sessions" user_id: Mapped[uuid.UUID] = mapped_column( ForeignKey("users.id", ondelete="CASCADE"), index=True ) expires_at: Mapped[datetime] = mapped_column(DateTime(timezone=True)) user: Mapped[User] = relationship(lazy="joined")