refactor(database): rename filename to find the models by table name easily

This commit is contained in:
MingxuanGame
2025-10-03 03:33:47 +00:00
parent 40670c094b
commit 37b4eadf79
58 changed files with 76 additions and 115 deletions

View File

@@ -12,7 +12,7 @@ from .beatmapset import (
BeatmapsetResp,
)
from .beatmapset_ratings import BeatmapRating
from .best_score import BestScore
from .best_scores import PPBestScore
from .chat import (
ChannelType,
ChatChannel,
@@ -28,22 +28,16 @@ from .counts import (
from .daily_challenge import DailyChallengeStats, DailyChallengeStatsResp
from .events import Event
from .favourite_beatmapset import FavouriteBeatmapset
from .lazer_user import (
MeResp,
User,
UserResp,
)
from .multiplayer_event import MultiplayerEvent, MultiplayerEventResp
from .notification import Notification, UserNotification
from .password_reset import PasswordReset
from .playlist_attempts import (
from .item_attempts_count import (
ItemAttemptsCount,
ItemAttemptsResp,
PlaylistAggregateScore,
)
from .multiplayer_event import MultiplayerEvent, MultiplayerEventResp
from .notification import Notification, UserNotification
from .password_reset import PasswordReset
from .playlist_best_score import PlaylistBestScore
from .playlists import Playlist, PlaylistResp
from .pp_best_score import PPBestScore
from .rank_history import RankHistory, RankHistoryResp, RankTop
from .relationship import Relationship, RelationshipResp, RelationshipType
from .room import APIUploadedRoom, Room, RoomResp
@@ -62,6 +56,12 @@ from .statistics import (
UserStatisticsResp,
)
from .team import Team, TeamMember, TeamRequest
from .total_score_best_scores import BestScore
from .user import (
MeResp,
User,
UserResp,
)
from .user_account_history import (
UserAccountHistory,
UserAccountHistoryResp,

View File

@@ -24,7 +24,7 @@ from sqlmodel import (
from sqlmodel.ext.asyncio.session import AsyncSession
if TYPE_CHECKING:
from .lazer_user import User
from .user import User
class UserAchievementBase(SQLModel, UTCBaseModel):

View File

@@ -19,7 +19,7 @@ from sqlmodel import (
)
if TYPE_CHECKING:
from .lazer_user import User
from .user import User
class OAuthToken(UTCBaseModel, SQLModel, table=True):

View File

@@ -23,7 +23,7 @@ from sqlmodel.ext.asyncio.session import AsyncSession
if TYPE_CHECKING:
from app.fetcher import Fetcher
from .lazer_user import User
from .user import User
class BeatmapOwner(SQLModel):

View File

@@ -20,7 +20,7 @@ from sqlmodel.ext.asyncio.session import AsyncSession
if TYPE_CHECKING:
from .beatmap import Beatmap, BeatmapResp
from .beatmapset import BeatmapsetResp
from .lazer_user import User
from .user import User
class BeatmapPlaycounts(AsyncAttrs, SQLModel, table=True):

View File

@@ -5,7 +5,7 @@ from app.config import settings
from app.models.beatmap import BeatmapRankStatus, Genre, Language
from app.models.score import GameMode
from .lazer_user import BASE_INCLUDES, User, UserResp
from .user import BASE_INCLUDES, User, UserResp
from pydantic import BaseModel, field_validator, model_validator
from sqlalchemy import JSON, Boolean, Column, DateTime, Text

View File

@@ -1,7 +1,7 @@
from __future__ import annotations
from app.database.beatmapset import Beatmapset
from app.database.lazer_user import User
from app.database.user import User
from sqlmodel import BigInteger, Column, Field, ForeignKey, Relationship, SQLModel

View File

@@ -3,7 +3,7 @@ from typing import TYPE_CHECKING
from app.database.statistics import UserStatistics
from app.models.score import GameMode
from .lazer_user import User
from .user import User
from sqlmodel import (
BigInteger,

View File

@@ -2,7 +2,7 @@ from datetime import datetime
from enum import Enum
from typing import Self
from app.database.lazer_user import RANKING_INCLUDES, User, UserResp
from app.database.user import RANKING_INCLUDES, User, UserResp
from app.models.model import UTCBaseModel
from app.utils import utcnow

View File

@@ -11,7 +11,7 @@ from sqlmodel import (
)
if TYPE_CHECKING:
from .lazer_user import User
from .user import User
class CountBase(SQLModel):

View File

@@ -17,7 +17,7 @@ from sqlmodel import (
from sqlmodel.ext.asyncio.session import AsyncSession
if TYPE_CHECKING:
from .lazer_user import User
from .user import User
class DailyChallengeStatsBase(SQLModel, UTCBaseModel):

View File

@@ -18,7 +18,7 @@ from sqlmodel import (
)
if TYPE_CHECKING:
from .lazer_user import User
from .user import User
class EventType(str, Enum):

View File

@@ -1,7 +1,7 @@
import datetime
from app.database.beatmapset import Beatmapset
from app.database.lazer_user import User
from app.database.user import User
from sqlalchemy.ext.asyncio import AsyncAttrs
from sqlmodel import (

View File

@@ -1,39 +0,0 @@
"""
数据库字段类型工具
提供处理数据库和 Pydantic 之间类型转换的工具
"""
from typing import Any
from pydantic import field_validator
from sqlalchemy import Boolean
def bool_field_validator(field_name: str):
"""为特定布尔字段创建验证器,处理数据库中的 0/1 整数"""
@field_validator(field_name, mode="before")
@classmethod
def validate_bool_field(cls, v: Any) -> bool:
"""将整数 0/1 转换为布尔值"""
if isinstance(v, int):
return bool(v)
return v
return validate_bool_field
def create_bool_field(**kwargs):
"""创建一个带有正确 SQLAlchemy 列定义的布尔字段"""
from sqlmodel import Column, Field
# 如果没有指定 sa_column则使用 Boolean 类型
if "sa_column" not in kwargs:
# 处理 index 参数
index = kwargs.pop("index", False)
if index:
kwargs["sa_column"] = Column(Boolean, index=True)
else:
kwargs["sa_column"] = Column(Boolean)
return Field(**kwargs)

View File

@@ -1,5 +1,5 @@
from .lazer_user import User, UserResp
from .playlist_best_score import PlaylistBestScore
from .user import User, UserResp
from pydantic import BaseModel
from sqlalchemy.ext.asyncio import AsyncAttrs

View File

@@ -1,6 +1,6 @@
from typing import TYPE_CHECKING
from .lazer_user import User
from .user import User
from redis.asyncio import Redis
from sqlmodel import (

View File

@@ -21,7 +21,7 @@ from sqlmodel import (
from sqlmodel.ext.asyncio.session import AsyncSession
if TYPE_CHECKING:
from .lazer_user import User
from .user import User
class RankHistory(SQLModel, table=True):

View File

@@ -1,6 +1,6 @@
from enum import Enum
from .lazer_user import User, UserResp
from .user import User, UserResp
from pydantic import BaseModel
from sqlmodel import (

View File

@@ -1,6 +1,6 @@
from datetime import datetime
from app.database.playlist_attempts import PlaylistAggregateScore
from app.database.item_attempts_count import PlaylistAggregateScore
from app.database.room_participated_user import RoomParticipatedUser
from app.models.model import UTCBaseModel
from app.models.multiplayer_hub import ServerMultiplayerRoom
@@ -14,8 +14,8 @@ from app.models.room import (
)
from app.utils import utcnow
from .lazer_user import User, UserResp
from .playlists import Playlist, PlaylistResp
from .user import User, UserResp
from sqlalchemy.ext.asyncio import AsyncAttrs
from sqlmodel import (

View File

@@ -15,8 +15,8 @@ from sqlmodel import (
)
if TYPE_CHECKING:
from .lazer_user import User
from .room import Room
from .user import User
class RoomParticipatedUser(AsyncAttrs, SQLModel, table=True):

View File

@@ -38,17 +38,17 @@ from app.utils import utcnow
from .beatmap import Beatmap, BeatmapResp
from .beatmapset import BeatmapsetResp
from .best_score import BestScore
from .best_scores import PPBestScore
from .counts import MonthlyPlaycounts
from .events import Event, EventType
from .lazer_user import User, UserResp
from .playlist_best_score import PlaylistBestScore
from .pp_best_score import PPBestScore
from .relationship import (
Relationship as DBRelationship,
RelationshipType,
)
from .score_token import ScoreToken
from .total_score_best_scores import BestScore
from .user import User, UserResp
from pydantic import BaseModel, field_serializer, field_validator
from redis.asyncio import Redis

View File

@@ -5,7 +5,7 @@ from app.models.score import GameMode
from app.utils import utcnow
from .beatmap import Beatmap
from .lazer_user import User
from .user import User
from sqlalchemy import Column, DateTime, Index
from sqlalchemy.orm import Mapped

View File

@@ -23,7 +23,7 @@ from sqlmodel import (
from sqlmodel.ext.asyncio.session import AsyncSession
if TYPE_CHECKING:
from .lazer_user import User, UserResp
from .user import User, UserResp
class UserStatisticsBase(SQLModel):
@@ -122,7 +122,7 @@ class UserStatisticsResp(UserStatisticsBase):
"progress": int(math.fmod(obj.level_current, 1) * 100),
}
if "user" in include:
from .lazer_user import RANKING_INCLUDES, UserResp
from .user import RANKING_INCLUDES, UserResp
user = await UserResp.from_db(await obj.awaitable_attrs.user, session, include=RANKING_INCLUDES)
s.user = user
@@ -149,7 +149,7 @@ class UserStatisticsResp(UserStatisticsBase):
async def get_rank(session: AsyncSession, statistics: UserStatistics, country: str | None = None) -> int | None:
from .lazer_user import User
from .user import User
query = select(
UserStatistics.user_id,

View File

@@ -8,7 +8,7 @@ from sqlalchemy import Column, DateTime
from sqlmodel import BigInteger, Field, ForeignKey, Relationship, SQLModel
if TYPE_CHECKING:
from .lazer_user import User
from .user import User
class Team(SQLModel, UTCBaseModel, table=True):

View File

@@ -4,7 +4,7 @@ from app.calculator import calculate_score_to_level
from app.database.statistics import UserStatistics
from app.models.score import GameMode, Rank
from .lazer_user import User
from .user import User
from sqlmodel import (
JSON,

View File

@@ -261,11 +261,11 @@ class UserResp(UserBase):
) -> "UserResp":
from app.dependencies.database import get_redis
from .best_score import BestScore
from .best_scores import PPBestScore
from .favourite_beatmapset import FavouriteBeatmapset
from .pp_best_score import PPBestScore
from .relationship import Relationship, RelationshipResp, RelationshipType
from .score import Score, get_user_first_score_count
from .total_score_best_scores import BestScore
ruleset = ruleset or obj.playmode

View File

@@ -11,7 +11,7 @@ from typing import ClassVar
from app.auth import get_token_by_access_token
from app.const import SUPPORT_TOTP_VERIFICATION_VER
from app.database.lazer_user import User
from app.database.user import User
from app.database.verification import LoginSession
from app.dependencies.database import get_redis, with_db
from app.log import logger

View File

@@ -7,10 +7,10 @@ import json
from typing import Any
from app.database.chat import ChannelType, ChatChannel # ChatChannel 模型 & 枚举
from app.database.lazer_user import User
from app.database.playlists import Playlist as DBPlaylist
from app.database.room import Room
from app.database.room_participated_user import RoomParticipatedUser
from app.database.user import User
from app.dependencies.database import Database, get_redis
from app.dependencies.fetcher import get_fetcher
from app.dependencies.storage import get_storage_service

View File

@@ -1,8 +1,8 @@
from __future__ import annotations
from app.config import settings
from app.database.lazer_user import User
from app.database.notification import Notification, UserNotification
from app.database.user import User
from app.dependencies.database import Database
from app.dependencies.user import get_client_user
from app.models.chat import ChatEvent

View File

@@ -12,9 +12,9 @@ from app.const import BANCHOBOT_ID
from app.database import ChatMessageResp
from app.database.beatmap import Beatmap
from app.database.chat import ChannelType, ChatChannel, ChatMessage, MessageType
from app.database.lazer_user import User
from app.database.score import Score, get_best_id
from app.database.statistics import UserStatistics, get_rank
from app.database.user import User
from app.dependencies.fetcher import get_fetcher
from app.exception import InvokeException
from app.models.mods import APIMod, get_available_mods, mod_to_save

View File

@@ -10,7 +10,7 @@ from app.database.chat import (
SilenceUser,
UserSilenceResp,
)
from app.database.lazer_user import User, UserResp
from app.database.user import User, UserResp
from app.dependencies.database import Database, get_redis
from app.dependencies.param import BodyOrForm
from app.dependencies.user import get_current_user

View File

@@ -10,7 +10,7 @@ from app.database.chat import (
SilenceUser,
UserSilenceResp,
)
from app.database.lazer_user import User
from app.database.user import User
from app.dependencies.database import Database, get_redis
from app.dependencies.param import BodyOrForm
from app.dependencies.user import get_current_user

View File

@@ -4,8 +4,8 @@ import asyncio
from typing import overload
from app.database.chat import ChannelType, ChatChannel, ChatChannelResp, ChatMessageResp
from app.database.lazer_user import User
from app.database.notification import UserNotification, insert_notification
from app.database.user import User
from app.dependencies.database import (
DBFactory,
get_db_factory,

View File

@@ -2,7 +2,7 @@ from __future__ import annotations
import hashlib
from app.database.lazer_user import User
from app.database.user import User
from app.dependencies.database import Database
from app.dependencies.storage import get_storage_service
from app.dependencies.user import get_client_user

View File

@@ -3,8 +3,8 @@ from __future__ import annotations
from app.database.beatmap import Beatmap
from app.database.beatmapset import Beatmapset
from app.database.beatmapset_ratings import BeatmapRating
from app.database.lazer_user import User
from app.database.score import Score
from app.database.user import User
from app.dependencies.database import Database
from app.dependencies.user import get_client_user
from app.service.beatmapset_update_service import get_beatmapset_update_service

View File

@@ -2,7 +2,7 @@ from __future__ import annotations
import hashlib
from app.database.lazer_user import User, UserProfileCover
from app.database.user import User, UserProfileCover
from app.dependencies.database import Database
from app.dependencies.storage import get_storage_service
from app.dependencies.user import get_client_user

View File

@@ -3,7 +3,7 @@ from __future__ import annotations
import secrets
from app.database.auth import OAuthClient, OAuthToken
from app.database.lazer_user import User
from app.database.user import User
from app.dependencies.database import Database, get_redis
from app.dependencies.user import get_client_user

View File

@@ -1,7 +1,7 @@
from __future__ import annotations
from app.database.lazer_user import User
from app.database.score import Score
from app.database.user import User
from app.dependencies.database import Database, get_redis
from app.dependencies.storage import get_storage_service
from app.dependencies.user import get_client_user

View File

@@ -2,8 +2,8 @@ from __future__ import annotations
import hashlib
from app.database.lazer_user import BASE_INCLUDES, User, UserResp
from app.database.team import Team, TeamMember, TeamRequest
from app.database.user import BASE_INCLUDES, User, UserResp
from app.dependencies.database import Database, get_redis
from app.dependencies.storage import get_storage_service
from app.dependencies.user import get_client_user

View File

@@ -9,7 +9,7 @@ from app.auth import (
)
from app.const import BACKUP_CODE_LENGTH
from app.database.auth import TotpKeys
from app.database.lazer_user import User
from app.database.user import User
from app.dependencies.database import Database, get_redis
from app.dependencies.user import get_client_user
from app.models.totp import FinishStatus, StartCreateTotpKeyResp

View File

@@ -3,7 +3,7 @@ from __future__ import annotations
from app.auth import validate_username
from app.config import settings
from app.database.events import Event, EventType
from app.database.lazer_user import User
from app.database.user import User
from app.dependencies.database import Database
from app.dependencies.user import get_client_user
from app.utils import utcnow

View File

@@ -2,8 +2,8 @@ from __future__ import annotations
from typing import Literal
from app.database.lazer_user import User
from app.database.statistics import UserStatistics
from app.database.user import User
from app.dependencies.database import Database, get_redis
from app.log import logger
from app.models.score import GameMode

View File

@@ -3,7 +3,7 @@ from __future__ import annotations
from datetime import datetime, timedelta
from typing import Literal
from app.database.pp_best_score import PPBestScore
from app.database.best_scores import PPBestScore
from app.database.score import Score, get_leaderboard
from app.dependencies.database import Database
from app.models.mods import int_to_mods, mod_to_save, mods_to_int

View File

@@ -3,8 +3,8 @@ from __future__ import annotations
from datetime import datetime
from typing import Literal
from app.database.lazer_user import User
from app.database.statistics import UserStatistics, UserStatisticsResp
from app.database.user import User
from app.dependencies.database import Database, get_redis
from app.log import logger
from app.models.score import GameMode

View File

@@ -1,7 +1,7 @@
from __future__ import annotations
from app.database import Relationship, RelationshipResp, RelationshipType, User
from app.database.lazer_user import UserResp
from app.database.user import UserResp
from app.dependencies.api_version import APIVersion
from app.dependencies.database import Database
from app.dependencies.user import get_client_user, get_current_user

View File

@@ -5,13 +5,13 @@ from typing import Literal
from app.database.beatmap import Beatmap, BeatmapResp
from app.database.beatmapset import BeatmapsetResp
from app.database.lazer_user import User, UserResp
from app.database.item_attempts_count import ItemAttemptsCount, ItemAttemptsResp
from app.database.multiplayer_event import MultiplayerEvent, MultiplayerEventResp
from app.database.playlist_attempts import ItemAttemptsCount, ItemAttemptsResp
from app.database.playlists import Playlist, PlaylistResp
from app.database.room import APIUploadedRoom, Room, RoomResp
from app.database.room_participated_user import RoomParticipatedUser
from app.database.score import Score
from app.database.user import User, UserResp
from app.dependencies.database import Database, get_redis
from app.dependencies.user import get_client_user, get_current_user
from app.models.room import RoomCategory, RoomStatus

View File

@@ -18,7 +18,7 @@ from app.database import (
from app.database.achievement import process_achievements
from app.database.counts import ReplayWatchedCount
from app.database.daily_challenge import process_daily_challenge_score
from app.database.playlist_attempts import ItemAttemptsCount
from app.database.item_attempts_count import ItemAttemptsCount
from app.database.playlist_best_score import (
PlaylistBestScore,
get_position,

View File

@@ -2,8 +2,8 @@ from __future__ import annotations
from app.database.beatmap import Beatmap
from app.database.beatmap_tags import BeatmapTagVote
from app.database.lazer_user import User
from app.database.score import Score
from app.database.user import User
from app.dependencies.database import get_db
from app.dependencies.user import get_client_user
from app.models.score import Rank

View File

@@ -12,10 +12,10 @@ from app.database import (
User,
UserResp,
)
from app.database.best_scores import PPBestScore
from app.database.events import Event
from app.database.lazer_user import SEARCH_INCLUDED
from app.database.pp_best_score import PPBestScore
from app.database.score import LegacyScoreResp, Score, ScoreResp, get_user_first_scores
from app.database.user import SEARCH_INCLUDED
from app.dependencies.api_version import APIVersion
from app.dependencies.database import Database, get_redis
from app.dependencies.user import get_current_user

View File

@@ -1,8 +1,8 @@
from __future__ import annotations
from app.const import BANCHOBOT_ID
from app.database.lazer_user import User
from app.database.statistics import UserStatistics
from app.database.user import User
from app.dependencies.database import with_db
from app.models.score import GameMode

View File

@@ -6,11 +6,11 @@ from math import ceil
from app.const import BANCHOBOT_ID
from app.database.daily_challenge import DailyChallengeStats
from app.database.lazer_user import User
from app.database.playlist_best_score import PlaylistBestScore
from app.database.playlists import Playlist
from app.database.room import Room
from app.database.score import Score
from app.database.user import User
from app.dependencies.database import get_redis, with_db
from app.dependencies.scheduler import get_scheduler
from app.log import logger

View File

@@ -10,7 +10,7 @@ from app.database.chat import (
ChatMessageResp,
MessageType,
)
from app.database.lazer_user import User
from app.database.user import User
from app.log import logger
from app.service.message_queue import message_queue
@@ -71,7 +71,7 @@ class OptimizedMessageService:
# 创建临时响应对象(简化版本,用于立即响应)
from datetime import datetime
from app.database.lazer_user import UserResp
from app.database.user import UserResp
# 创建基本的用户响应对象
user_resp = UserResp(

View File

@@ -2,8 +2,8 @@ from __future__ import annotations
from app.config import settings
from app.const import BANCHOBOT_ID
from app.database.lazer_user import User
from app.database.statistics import UserStatistics
from app.database.user import User
from app.dependencies.database import with_db
from app.models.score import GameMode

View File

@@ -6,7 +6,7 @@ import json
from app.calculator import calculate_pp
from app.config import settings
from app.database.beatmap import BannedBeatmaps, Beatmap
from app.database.pp_best_score import PPBestScore
from app.database.best_scores import PPBestScore
from app.database.score import Score, calculate_user_pp
from app.database.statistics import UserStatistics
from app.dependencies.database import get_redis, with_db

View File

@@ -15,7 +15,7 @@ import time
from typing import Any
from app.database.chat import ChatMessage, ChatMessageResp, MessageType
from app.database.lazer_user import RANKING_INCLUDES, User, UserResp
from app.database.user import RANKING_INCLUDES, User, UserResp
from app.dependencies.database import get_redis_message, with_db
from app.log import logger
from app.utils import bg_tasks

View File

@@ -12,8 +12,8 @@ from typing import TYPE_CHECKING, Any
from app.config import settings
from app.const import BANCHOBOT_ID
from app.database import User, UserResp
from app.database.lazer_user import SEARCH_INCLUDED
from app.database.score import LegacyScoreResp, ScoreResp
from app.database.user import SEARCH_INCLUDED
from app.dependencies.database import with_db
from app.log import logger
from app.models.score import GameMode

View File

@@ -7,11 +7,11 @@ from typing import override
from app.database import Room
from app.database.beatmap import Beatmap
from app.database.chat import ChannelType, ChatChannel
from app.database.lazer_user import User
from app.database.multiplayer_event import MultiplayerEvent
from app.database.playlists import Playlist
from app.database.relationship import Relationship, RelationshipType
from app.database.room_participated_user import RoomParticipatedUser
from app.database.user import User
from app.dependencies.database import get_redis, with_db
from app.dependencies.fetcher import get_fetcher
from app.exception import InvokeException

View File

@@ -14,7 +14,7 @@ from app.config import settings
from app.const import BANCHOBOT_ID
from app.database import BestScore, UserStatistics
from app.database.beatmap import Beatmap
from app.database.pp_best_score import PPBestScore
from app.database.best_scores import PPBestScore
from app.database.score import Score, calculate_playtime, calculate_user_pp
from app.dependencies.database import engine, get_redis
from app.dependencies.fetcher import get_fetcher