feat(custom-rulesets): support custom rulesets (#23)
* feat(custom_ruleset): add custom rulesets support * feat(custom-ruleset): add version check * feat(custom-ruleset): add LegacyIO API to get ruleset hashes * feat(pp): add check for rulesets whose pp cannot be calculated * docs(readme): update README to include support for custom rulesets * fix(custom-ruleset): make `rulesets` empty instead of throw a error when version check is disabled Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * chore(custom-ruleset): apply the latest changes of generatorc891bcd159ande25041ad3b* feat(calculator): add fallback performance calculation for unsupported modes * fix(calculator): remove debug print * fix: resolve reviews * feat(calculator): add difficulty calculation checks --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -13,11 +13,12 @@ from .create_banchobot import create_banchobot
|
||||
from .daily_challenge import daily_challenge_job, process_daily_challenge_top
|
||||
from .geoip import init_geoip
|
||||
from .load_achievements import load_achievements
|
||||
from .osu_rx_statistics import create_rx_statistics
|
||||
from .special_statistics import create_custom_ruleset_statistics, create_rx_statistics
|
||||
|
||||
__all__ = [
|
||||
"calculate_user_rank",
|
||||
"create_banchobot",
|
||||
"create_custom_ruleset_statistics",
|
||||
"create_rx_statistics",
|
||||
"daily_challenge_job",
|
||||
"init_geoip",
|
||||
|
||||
@@ -57,3 +57,34 @@ async def create_rx_statistics():
|
||||
logger.success(
|
||||
f"Created {rx_created} RX statistics rows and {ap_created} AP statistics rows during backfill"
|
||||
)
|
||||
|
||||
|
||||
async def create_custom_ruleset_statistics():
|
||||
async with with_db() as session:
|
||||
users = (await session.exec(select(User.id))).all()
|
||||
total_users = len(users)
|
||||
logger.info(f"Ensuring custom ruleset statistics exist for {total_users} users")
|
||||
created_count = 0
|
||||
for i in users:
|
||||
if i == BANCHOBOT_ID:
|
||||
continue
|
||||
|
||||
for mode in GameMode:
|
||||
if not mode.is_custom_ruleset():
|
||||
continue
|
||||
|
||||
is_exist = (
|
||||
await session.exec(
|
||||
select(exists()).where(
|
||||
UserStatistics.user_id == i,
|
||||
UserStatistics.mode == mode,
|
||||
)
|
||||
)
|
||||
).first()
|
||||
if not is_exist:
|
||||
statistics = UserStatistics(mode=mode, user_id=i)
|
||||
session.add(statistics)
|
||||
created_count += 1
|
||||
await session.commit()
|
||||
if created_count:
|
||||
logger.success(f"Created {created_count} custom ruleset statistics rows during backfill")
|
||||
Reference in New Issue
Block a user