Files
chat/backend/app/models/user_streak.py
T
2026-06-14 10:01:47 +08:00

23 lines
866 B
Python

"""用户每日签到/连续天数模型"""
from datetime import date, datetime
from sqlalchemy import String, Integer, Date, DateTime, ForeignKey
from sqlalchemy.orm import Mapped, mapped_column, relationship
from app.database import Base
class UserStreak(Base):
__tablename__ = "user_streaks"
user_id: Mapped[str] = mapped_column(String(36), ForeignKey("users.id", ondelete="CASCADE"), primary_key=True)
streak: Mapped[int] = mapped_column(Integer, default=0) # 连续打开天数
last_open_date: Mapped[date | None] = mapped_column(Date, nullable=True)
total_days: Mapped[int] = mapped_column(Integer, default=0) # 累计打开天数
updated_at: Mapped[datetime] = mapped_column(
DateTime, default=lambda: datetime.utcnow(), onupdate=lambda: datetime.utcnow()
)
user = relationship("User", foreign_keys=[user_id])