This commit is contained in:
2026-06-14 10:01:47 +08:00
parent 6fbf610277
commit ca39190ad7
11 changed files with 556 additions and 13 deletions
+22
View File
@@ -0,0 +1,22 @@
"""用户每日签到/连续天数模型"""
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])