fix: 重构用户相关数据库模型和关系
- 更新了 User 类中的多个关系属性,修正了部分属性的拼写错误和关联关系 - 修改了 LazerUserProfileSections 类的关联关系 - 修正了 LazerUserBanners 类的结构和关联关系 - 更新了 create_sample_data.py 中的统计类引用 - 在 config.py 中更新了数据库连接 URL
This commit is contained in:
@@ -5,7 +5,7 @@ load_dotenv()
|
|||||||
|
|
||||||
class Settings:
|
class Settings:
|
||||||
# 数据库设置
|
# 数据库设置
|
||||||
DATABASE_URL: str = os.getenv("DATABASE_URL", "mysql+pymysql://root:password@localhost:3306/osu_api")
|
DATABASE_URL: str = os.getenv("DATABASE_URL", "mysql+pymysql://root:Chinabug610@localhost:3306/osu_api")
|
||||||
REDIS_URL: str = os.getenv("REDIS_URL", "redis://localhost:6379/0")
|
REDIS_URL: str = os.getenv("REDIS_URL", "redis://localhost:6379/0")
|
||||||
|
|
||||||
# JWT 设置
|
# JWT 设置
|
||||||
|
|||||||
@@ -62,14 +62,28 @@ class User(Base):
|
|||||||
lazer_profile = relationship("LazerUserProfile", back_populates="user", uselist=False, cascade="all, delete-orphan")
|
lazer_profile = relationship("LazerUserProfile", back_populates="user", uselist=False, cascade="all, delete-orphan")
|
||||||
lazer_statistics = relationship("LazerUserStatistics", back_populates="user", cascade="all, delete-orphan")
|
lazer_statistics = relationship("LazerUserStatistics", back_populates="user", cascade="all, delete-orphan")
|
||||||
lazer_achievements = relationship("LazerUserAchievement", back_populates="user", cascade="all, delete-orphan")
|
lazer_achievements = relationship("LazerUserAchievement", back_populates="user", cascade="all, delete-orphan")
|
||||||
lazer_profile_sections=relationship("LazerUserProfileSection", 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")
|
statistics = relationship("LegacyUserStatistics", back_populates="user", cascade="all, delete-orphan")
|
||||||
achievements = relationship("LazerUserAchievement", back_populates="user", cascade="all, delete-orphan")
|
achievements = relationship(
|
||||||
|
"LazerUserAchievement",
|
||||||
|
back_populates="user",
|
||||||
|
cascade="all, delete-orphan",
|
||||||
|
overlaps="lazer_achievements"
|
||||||
|
)
|
||||||
team_membership = relationship("TeamMember", back_populates="user", cascade="all, delete-orphan")
|
team_membership = relationship("TeamMember", back_populates="user", cascade="all, delete-orphan")
|
||||||
daily_challenge_stats = relationship("DailyChallengeStats", back_populates="user", uselist=False, cascade="all, delete-orphan")
|
daily_challenge_stats = relationship("DailyChallengeStats", back_populates="user", uselist=False, cascade="all, delete-orphan")
|
||||||
rank_history = relationship("RankHistory", back_populates="user", cascade="all, delete-orphan")
|
rank_history = relationship("RankHistory", back_populates="user", cascade="all, delete-orphan")
|
||||||
avatar = relationship("UserAvatar", back_populates="user", primaryjoin="and_(User.id==UserAvatar.user_id, UserAvatar.is_active==True)", uselist=False)
|
avatar = relationship("UserAvatar", back_populates="user", primaryjoin="and_(User.id==UserAvatar.user_id, UserAvatar.is_active==True)", uselist=False)
|
||||||
active_banners=relationship("LazerUserBanners",back_populates="user",cascade="all, delete-orphan")
|
active_banners = relationship(
|
||||||
|
"UserAvatar", # 原定义指向LazerUserBanners,实际应为UserAvatar
|
||||||
|
back_populates="user",
|
||||||
|
primaryjoin="and_(User.id==UserAvatar.user_id, UserAvatar.is_active==True)",
|
||||||
|
uselist=False
|
||||||
|
)
|
||||||
lazer_badges = relationship("LazerUserBadge", back_populates="user", cascade="all, delete-orphan")
|
lazer_badges = relationship("LazerUserBadge", back_populates="user", cascade="all, delete-orphan")
|
||||||
lazer_monthly_playcounts = relationship("LazerUserMonthlyPlaycounts", 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_previous_usernames = relationship("LazerUserPreviousUsername", back_populates="user", cascade="all, delete-orphan")
|
||||||
@@ -132,6 +146,7 @@ class LazerUserProfile(Base):
|
|||||||
# 关联关系
|
# 关联关系
|
||||||
user = relationship("User", back_populates="lazer_profile")
|
user = relationship("User", back_populates="lazer_profile")
|
||||||
|
|
||||||
|
|
||||||
class LazerUserProfileSections(Base):
|
class LazerUserProfileSections(Base):
|
||||||
__tablename__ = "lazer_user_profile_sections"
|
__tablename__ = "lazer_user_profile_sections"
|
||||||
|
|
||||||
@@ -143,7 +158,8 @@ class LazerUserProfileSections(Base):
|
|||||||
created_at=Column(DateTime, default=datetime.utcnow)
|
created_at=Column(DateTime, default=datetime.utcnow)
|
||||||
updated_at=Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|
updated_at=Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|
||||||
|
|
||||||
user = relationship("User", back_populates="lazer_profile_order")
|
user = relationship("User", back_populates="lazer_profile_sections")
|
||||||
|
|
||||||
|
|
||||||
class LazerUserCountry(Base):
|
class LazerUserCountry(Base):
|
||||||
__tablename__ = "lazer_user_countries"
|
__tablename__ = "lazer_user_countries"
|
||||||
@@ -251,13 +267,17 @@ class LazerUserStatistics(Base):
|
|||||||
class LazerUserBanners(Base):
|
class LazerUserBanners(Base):
|
||||||
__tablename__ = "lazer_user_tournament_banners"
|
__tablename__ = "lazer_user_tournament_banners"
|
||||||
|
|
||||||
id=Column(Integer,primary_key=True)
|
id = Column(Integer, primary_key=True)
|
||||||
user_id = Column(Integer, ForeignKey("users.id"), nullable=False)
|
user_id = Column(Integer, ForeignKey("users.id"), nullable=False)
|
||||||
tournament_id=Column(Integer, nullable=False)
|
tournament_id = Column(Integer, nullable=False)
|
||||||
image_url = Column(VARCHAR(500),nullable=False)
|
image_url = Column(VARCHAR(500), nullable=False)
|
||||||
is_active=Column(TINYINT(1))
|
is_active = Column(TINYINT(1))
|
||||||
|
|
||||||
user=relationship("User", back_populates="lazer_active_banners")
|
# 修正user关系的back_populates值
|
||||||
|
user = relationship(
|
||||||
|
"User",
|
||||||
|
back_populates="active_banners" # 改为实际存在的属性名
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class LazerUserAchievement(Base):
|
class LazerUserAchievement(Base):
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ from datetime import datetime, timedelta
|
|||||||
import time
|
import time
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
from app.dependencies import get_db, engine
|
from app.dependencies import get_db, engine
|
||||||
from app.database import Base, User, UserStatistics, UserAchievement, DailyChallengeStats, RankHistory
|
from app.database import Base, User, LazerUserStatistics, UserAchievement, DailyChallengeStats, RankHistory
|
||||||
from app.auth import get_password_hash
|
from app.auth import get_password_hash
|
||||||
|
|
||||||
# 创建所有表
|
# 创建所有表
|
||||||
@@ -134,7 +134,7 @@ def create_sample_user():
|
|||||||
db.refresh(user)
|
db.refresh(user)
|
||||||
|
|
||||||
# 创建 osu! 模式统计
|
# 创建 osu! 模式统计
|
||||||
osu_stats = UserStatistics(
|
osu_stats = LazerUserStatistics(
|
||||||
user_id=user.id,
|
user_id=user.id,
|
||||||
mode="osu",
|
mode="osu",
|
||||||
count_100=276274,
|
count_100=276274,
|
||||||
@@ -165,7 +165,7 @@ def create_sample_user():
|
|||||||
)
|
)
|
||||||
|
|
||||||
# 创建 taiko 模式统计
|
# 创建 taiko 模式统计
|
||||||
taiko_stats = UserStatistics(
|
taiko_stats = LazerUserStatistics(
|
||||||
user_id=user.id,
|
user_id=user.id,
|
||||||
mode="taiko",
|
mode="taiko",
|
||||||
count_100=160,
|
count_100=160,
|
||||||
@@ -188,7 +188,7 @@ def create_sample_user():
|
|||||||
)
|
)
|
||||||
|
|
||||||
# 创建 fruits 模式统计
|
# 创建 fruits 模式统计
|
||||||
fruits_stats = UserStatistics(
|
fruits_stats = LazerUserStatistics(
|
||||||
user_id=user.id,
|
user_id=user.id,
|
||||||
mode="fruits",
|
mode="fruits",
|
||||||
count_100=109,
|
count_100=109,
|
||||||
@@ -212,7 +212,7 @@ def create_sample_user():
|
|||||||
)
|
)
|
||||||
|
|
||||||
# 创建 mania 模式统计
|
# 创建 mania 模式统计
|
||||||
mania_stats = UserStatistics(
|
mania_stats = LazerUserStatistics(
|
||||||
user_id=user.id,
|
user_id=user.id,
|
||||||
mode="mania",
|
mode="mania",
|
||||||
count_100=7867,
|
count_100=7867,
|
||||||
|
|||||||
Reference in New Issue
Block a user