* feat(tags): 添加 beatmap tags 相关功能 - 新增 BeatmapTags 模型类,用于表示 beatmap 的标签信息 - 实现加载标签数据、根据 ID 获取标签、获取所有标签等功能 * feat(database): 新增 BeatmapTagVote 数据库模型和迁移脚本 * fix(database): 修改 BeatmapTagVote 模型并创建新表 - 将 BeatmapTagVote 模型的表名从 "beatmap_tag_votes" 改为 "beatmap_tags" - 创建新的数据库迁移文件以替换错误的原迁移文件 - 删除错误的迁移文件 "4a827ddba235_add_table_beatmap_tags.py" * feat(tags): 添加用户标签功能 - 在 BeatmapResp 类中添加了 top_tag_ids 和 current_user_tag_ids 字段 - 新增了 /tags 相关的路由,包括获取所有标签和投票/取消投票功能 - 实现了标签投票和取消投票的数据库操作 * fix(tags): 修复标签投票查询和返回过程中的逻辑问题 - 修复 BeatmapResp 类中 current_user_tag_ids 字段的查询逻辑 - 优化 vote_beatmap_tags 函数中的标签验证过程 * fix(tags): add suggested changes from reviews - 在 BeatmapResp 中添加 top_tag_ids 和 current_user_tag_ids 字段 - 实现用户标签投票功能,包括检查用户是否有资格投票 - 优化标签数据的加载方式 - 调整标签相关路由,增加路径参数描述 * fix(tags): apply changes from review * fix(tag): apply changes from review suggests - 更新标签接口文档,统一参数描述 - 修改标签投票接口状态码为 204 - 优化标签投票接口的用户认证方式 - 改进标签相关错误处理,使用更友好的错误信息 * fix(tag): use client authorization * chore(linter): auto fix by pre-commit hooks --------- Co-authored-by: MingxuanGame <MingxuanGame@outlook.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
147 lines
3.5 KiB
Python
147 lines
3.5 KiB
Python
from .achievement import UserAchievement, UserAchievementResp
|
|
from .auth import OAuthClient, OAuthToken, V1APIKeys
|
|
from .beatmap import (
|
|
Beatmap,
|
|
BeatmapResp,
|
|
)
|
|
from .beatmap_playcounts import BeatmapPlaycounts, BeatmapPlaycountsResp
|
|
from .beatmap_tags import BeatmapTagVote
|
|
from .beatmapset import (
|
|
Beatmapset,
|
|
BeatmapsetResp,
|
|
)
|
|
from .beatmapset_ratings import BeatmapRating
|
|
from .best_score import BestScore
|
|
from .chat import (
|
|
ChannelType,
|
|
ChatChannel,
|
|
ChatChannelResp,
|
|
ChatMessage,
|
|
ChatMessageResp,
|
|
)
|
|
from .counts import (
|
|
CountResp,
|
|
MonthlyPlaycounts,
|
|
ReplayWatchedCount,
|
|
)
|
|
from .daily_challenge import DailyChallengeStats, DailyChallengeStatsResp
|
|
from .email_verification import EmailVerification, LoginSession
|
|
from .events import Event
|
|
from .favourite_beatmapset import FavouriteBeatmapset
|
|
from .lazer_user import (
|
|
User,
|
|
UserResp,
|
|
)
|
|
from .multiplayer_event import MultiplayerEvent, MultiplayerEventResp
|
|
from .notification import Notification, UserNotification
|
|
from .password_reset import PasswordReset
|
|
from .playlist_attempts import (
|
|
ItemAttemptsCount,
|
|
ItemAttemptsResp,
|
|
PlaylistAggregateScore,
|
|
)
|
|
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
|
|
from .room_participated_user import RoomParticipatedUser
|
|
from .score import (
|
|
MultiplayerScores,
|
|
Score,
|
|
ScoreAround,
|
|
ScoreBase,
|
|
ScoreResp,
|
|
ScoreStatistics,
|
|
)
|
|
from .score_token import ScoreToken, ScoreTokenResp
|
|
from .statistics import (
|
|
UserStatistics,
|
|
UserStatisticsResp,
|
|
)
|
|
from .team import Team, TeamMember, TeamRequest
|
|
from .user_account_history import (
|
|
UserAccountHistory,
|
|
UserAccountHistoryResp,
|
|
UserAccountHistoryType,
|
|
)
|
|
from .user_login_log import UserLoginLog
|
|
|
|
__all__ = [
|
|
"APIUploadedRoom",
|
|
"Beatmap",
|
|
"BeatmapPlaycounts",
|
|
"BeatmapPlaycountsResp",
|
|
"BeatmapRating",
|
|
"BeatmapResp",
|
|
"BeatmapTagVote",
|
|
"Beatmapset",
|
|
"BeatmapsetResp",
|
|
"BestScore",
|
|
"ChannelType",
|
|
"ChatChannel",
|
|
"ChatChannelResp",
|
|
"ChatMessage",
|
|
"ChatMessageResp",
|
|
"CountResp",
|
|
"DailyChallengeStats",
|
|
"DailyChallengeStatsResp",
|
|
"EmailVerification",
|
|
"Event",
|
|
"FavouriteBeatmapset",
|
|
"ItemAttemptsCount",
|
|
"ItemAttemptsResp",
|
|
"LoginSession",
|
|
"MonthlyPlaycounts",
|
|
"MultiplayerEvent",
|
|
"MultiplayerEventResp",
|
|
"MultiplayerScores",
|
|
"Notification",
|
|
"OAuthClient",
|
|
"OAuthToken",
|
|
"PPBestScore",
|
|
"PasswordReset",
|
|
"Playlist",
|
|
"PlaylistAggregateScore",
|
|
"PlaylistBestScore",
|
|
"PlaylistResp",
|
|
"RankHistory",
|
|
"RankHistoryResp",
|
|
"RankTop",
|
|
"Relationship",
|
|
"RelationshipResp",
|
|
"RelationshipType",
|
|
"ReplayWatchedCount",
|
|
"Room",
|
|
"RoomParticipatedUser",
|
|
"RoomResp",
|
|
"Score",
|
|
"ScoreAround",
|
|
"ScoreBase",
|
|
"ScoreResp",
|
|
"ScoreStatistics",
|
|
"ScoreToken",
|
|
"ScoreTokenResp",
|
|
"Team",
|
|
"TeamMember",
|
|
"TeamRequest",
|
|
"User",
|
|
"UserAccountHistory",
|
|
"UserAccountHistoryResp",
|
|
"UserAccountHistoryType",
|
|
"UserAchievement",
|
|
"UserAchievement",
|
|
"UserAchievementResp",
|
|
"UserLoginLog",
|
|
"UserNotification",
|
|
"UserResp",
|
|
"UserStatistics",
|
|
"UserStatisticsResp",
|
|
"V1APIKeys",
|
|
]
|
|
|
|
for i in __all__:
|
|
if i.endswith("Resp"):
|
|
globals()[i].model_rebuild() # type: ignore[call-arg]
|