Files
ai_game/server/app/models/user.py

59 lines
2.2 KiB
Python
Raw Normal View History

"""
用户相关ORM模型
"""
from sqlalchemy import Column, Integer, String, Boolean, TIMESTAMP, ForeignKey, UniqueConstraint
from sqlalchemy.sql import func
from app.database import Base
class User(Base):
"""用户表"""
__tablename__ = "users"
id = Column(Integer, primary_key=True, autoincrement=True)
openid = Column(String(100), unique=True, nullable=False)
nickname = Column(String(100), default="")
avatar_url = Column(String(255), default="")
gender = Column(Integer, default=0)
total_play_count = Column(Integer, default=0)
total_endings = Column(Integer, default=0)
created_at = Column(TIMESTAMP, server_default=func.now())
updated_at = Column(TIMESTAMP, server_default=func.now(), onupdate=func.now())
class UserProgress(Base):
"""用户进度表"""
__tablename__ = "user_progress"
id = Column(Integer, primary_key=True, autoincrement=True)
user_id = Column(Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False)
story_id = Column(Integer, ForeignKey("stories.id", ondelete="CASCADE"), nullable=False)
current_node_key = Column(String(50), default="start")
is_completed = Column(Boolean, default=False)
ending_reached = Column(String(100), default="")
is_liked = Column(Boolean, default=False)
is_collected = Column(Boolean, default=False)
play_count = Column(Integer, default=1)
created_at = Column(TIMESTAMP, server_default=func.now())
updated_at = Column(TIMESTAMP, server_default=func.now(), onupdate=func.now())
__table_args__ = (
UniqueConstraint('user_id', 'story_id', name='uk_user_story'),
)
class UserEnding(Base):
"""用户结局收集表"""
__tablename__ = "user_endings"
id = Column(Integer, primary_key=True, autoincrement=True)
user_id = Column(Integer, ForeignKey("users.id", ondelete="CASCADE"), nullable=False)
story_id = Column(Integer, ForeignKey("stories.id", ondelete="CASCADE"), nullable=False)
ending_name = Column(String(100), nullable=False)
ending_score = Column(Integer, default=0)
unlocked_at = Column(TIMESTAMP, server_default=func.now())
__table_args__ = (
UniqueConstraint('user_id', 'story_id', 'ending_name', name='uk_user_ending'),
)