fxxk merge

This commit is contained in:
MingxuanGame
2025-07-23 18:56:53 +08:00
11 changed files with 462 additions and 612 deletions

View File

@@ -8,6 +8,7 @@ from sqlalchemy import (
JSON,
Boolean,
Column,
Date,
DateTime,
Float,
ForeignKey,
@@ -15,6 +16,7 @@ from sqlalchemy import (
String,
Text,
)
from sqlalchemy.dialects.mysql import TINYINT, VARCHAR
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
@@ -91,11 +93,19 @@ class User(Base):
lazer_achievements = relationship(
"LazerUserAchievement", back_populates="user", cascade="all, delete-orphan"
)
lazer_profile_sections = relationship(
"LazerUserProfileSections", # 修正类名拼写添加s
back_populates="user",
cascade="all, delete-orphan",
)
statistics = relationship(
"LegacyUserStatistics", back_populates="user", cascade="all, delete-orphan"
)
achievements = relationship(
"LazerUserAchievement", back_populates="user", cascade="all, delete-orphan"
"LazerUserAchievement",
back_populates="user",
cascade="all, delete-orphan",
overlaps="lazer_achievements",
)
team_membership = relationship(
"TeamMember", back_populates="user", cascade="all, delete-orphan"
@@ -115,6 +125,28 @@ class User(Base):
primaryjoin="and_(User.id==UserAvatar.user_id, UserAvatar.is_active==True)",
uselist=False,
)
active_banners = relationship(
"LazerUserBanners", # 原定义指向LazerUserBanners实际应为UserAvatar
back_populates="user",
primaryjoin=(
"and_(User.id==LazerUserBanners.user_id, LazerUserBanners.is_active==True)"
),
uselist=False,
)
lazer_badges = relationship(
"LazerUserBadge", back_populates="user", cascade="all, delete-orphan"
)
lazer_monthly_playcounts = relationship(
"LazerUserMonthlyPlaycounts",
back_populates="user",
cascade="all, delete-orphan",
)
lazer_previous_usernames = relationship(
"LazerUserPreviousUsername", back_populates="user", cascade="all, delete-orphan"
)
lazer_replays_watched = relationship(
"LazerUserReplaysWatched", back_populates="user", cascade="all, delete-orphan"
)
# ============================================
@@ -176,6 +208,20 @@ class LazerUserProfile(Base):
user = relationship("User", back_populates="lazer_profile")
class LazerUserProfileSections(Base):
__tablename__ = "lazer_user_profile_sections"
id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey("users.id"), nullable=False)
section_name = Column(VARCHAR(50), nullable=False)
display_order = Column(Integer)
created_at = Column(DateTime, default=datetime.utcnow)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
user = relationship("User", back_populates="lazer_profile_sections")
class LazerUserCountry(Base):
__tablename__ = "lazer_user_countries"
@@ -280,6 +326,22 @@ class LazerUserStatistics(Base):
user = relationship("User", back_populates="lazer_statistics")
class LazerUserBanners(Base):
__tablename__ = "lazer_user_tournament_banners"
id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey("users.id"), nullable=False)
tournament_id = Column(Integer, nullable=False)
image_url = Column(VARCHAR(500), nullable=False)
is_active = Column(TINYINT(1))
# 修正user关系的back_populates值
user = relationship(
"User",
back_populates="active_banners", # 改为实际存在的属性名
)
class LazerUserAchievement(Base):
__tablename__ = "lazer_user_achievements"
@@ -294,6 +356,65 @@ class LazerUserAchievement(Base):
user = relationship("User", back_populates="lazer_achievements")
class LazerUserBadge(Base):
__tablename__ = "lazer_user_badges"
id = Column(Integer, primary_key=True, index=True)
user_id = Column(Integer, ForeignKey("users.id"), nullable=False)
badge_id = Column(Integer, nullable=False)
awarded_at = Column(DateTime)
description = Column(Text)
image_url = Column(String(500))
url = Column(String(500))
created_at = Column(DateTime, default=datetime.utcnow)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
user = relationship("User", back_populates="lazer_badges")
class LazerUserMonthlyPlaycounts(Base):
__tablename__ = "lazer_user_monthly_playcounts"
id = Column(Integer, primary_key=True, index=True)
user_id = Column(Integer, ForeignKey("users.id"), nullable=False)
start_date = Column(Date, nullable=False)
play_count = Column(Integer, default=0)
created_at = Column(DateTime, default=datetime.utcnow)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
user = relationship("User", back_populates="lazer_monthly_playcounts")
class LazerUserPreviousUsername(Base):
__tablename__ = "lazer_user_previous_usernames"
id = Column(Integer, primary_key=True, index=True)
user_id = Column(Integer, ForeignKey("users.id"), nullable=False)
username = Column(String(32), nullable=False)
changed_at = Column(DateTime, nullable=False)
created_at = Column(DateTime, default=datetime.utcnow)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
user = relationship("User", back_populates="lazer_previous_usernames")
class LazerUserReplaysWatched(Base):
__tablename__ = "lazer_user_replays_watched"
id = Column(Integer, primary_key=True, index=True)
user_id = Column(Integer, ForeignKey("users.id"), nullable=False)
start_date = Column(Date, nullable=False)
count = Column(Integer, default=0)
created_at = Column(DateTime, default=datetime.utcnow)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
user = relationship("User", back_populates="lazer_replays_watched")
# ============================================
# 旧的兼容性表模型(保留以便向后兼容)
# ============================================