1.8
This commit is contained in:
@@ -15,6 +15,7 @@ from app.models.miss_echo import MissEcho
|
||||
from app.models.sync_seed import SyncQuestion, SyncSeed
|
||||
from app.models.chat_climate import ChatClimate
|
||||
from app.models.flash_event import FlashEvent, FlashParticipation
|
||||
from app.models.user_streak import UserStreak
|
||||
|
||||
__all__ = [
|
||||
"User",
|
||||
@@ -36,4 +37,5 @@ __all__ = [
|
||||
"ChatClimate",
|
||||
"FlashEvent",
|
||||
"FlashParticipation",
|
||||
"UserStreak",
|
||||
]
|
||||
|
||||
@@ -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])
|
||||
Reference in New Issue
Block a user