Merge branch 'master' into idac

This commit is contained in:
Dniel97
2026-06-06 14:36:30 +02:00
132 changed files with 106028 additions and 27031 deletions
@@ -0,0 +1,313 @@
"""IDAC Season 3
Revision ID: 71fad2543ff7
Revises: 318d52559e83
Create Date: 2024-12-29 21:15:36.621390
"""
from alembic import op
import sqlalchemy as sa
from sqlalchemy.dialects import mysql
# revision identifiers, used by Alembic.
revision = "71fad2543ff7"
down_revision = "318d52559e83"
branch_labels = None
depends_on = None
PROFILE_STOCK_COLUMNS = [
"avatar_face_list",
"avatar_face_new_list",
"avatar_eye_list",
"avatar_eye_new_list",
"avatar_hair_list",
"avatar_hair_new_list",
"avatar_body_list",
"avatar_body_new_list",
"avatar_mouth_list",
"avatar_mouth_new_list",
"avatar_glasses_list",
"avatar_glasses_new_list",
"avatar_face_accessory_list",
"avatar_face_accessory_new_list",
"avatar_body_accessory_list",
"avatar_body_accessory_new_list",
"avatar_behind_list",
"avatar_behind_new_list",
"avatar_bg_list",
"avatar_bg_new_list",
"avatar_effect_list",
"avatar_effect_new_list",
"avatar_special_list",
"avatar_special_new_list",
"stamp_list",
"stamp_new_list",
"keyholder_list",
"keyholder_new_list",
"papercup_list",
"papercup_new_list",
"tachometer_list",
"tachometer_new_list",
"aura_list",
"aura_new_list",
"aura_color_list",
"aura_color_new_list",
"aura_line_list",
"aura_line_new_list",
"bgm_list",
"bgm_new_list",
"dx_color_list",
"dx_color_new_list",
"start_menu_bg_list",
"start_menu_bg_new_list",
"under_neon_list",
]
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.create_table(
"idac_team_info",
sa.Column("id", sa.Integer(), nullable=False),
sa.Column("version", sa.Integer(), nullable=False),
sa.Column("name", sa.String(length=15), nullable=False),
sa.Column("mileage", sa.Integer(), nullable=False, server_default="0"),
sa.Column("sticker_id", sa.Integer(), nullable=False, server_default="1"),
sa.Column(
"sticker_stock",
sa.String(length=256),
nullable=False,
server_default="0111111111111".ljust(256, "0"),
),
sa.Column("country", sa.Integer(), nullable=False),
sa.Column("store_id", sa.Integer(), nullable=True),
sa.Column("password", sa.String(length=10), nullable=False),
sa.Column("auto_invite_flag", sa.Integer(), nullable=False, server_default="0"),
sa.PrimaryKeyConstraint("id"),
sa.UniqueConstraint("password", name="idac_team_info_password_uk"),
sa.UniqueConstraint("id", "version", name="idac_team_info_uk"),
mysql_charset="utf8mb4",
)
op.create_table(
"idac_team_member",
sa.Column("id", sa.Integer(), primary_key=True),
sa.Column("version", sa.Integer(), nullable=False),
sa.Column("team_id", sa.Integer(), nullable=False),
sa.Column("user", sa.Integer(), nullable=False),
sa.Column("role", sa.Integer(), nullable=False, server_default="0"),
sa.Column("daily_bonus", sa.Integer(), nullable=False, server_default="0"),
sa.Column("weekly_bonus", sa.Integer(), nullable=False, server_default="0"),
sa.Column(
"create_date_daily",
sa.TIMESTAMP(),
nullable=False,
server_default=sa.text("now()"),
),
sa.Column(
"create_date_weekly",
sa.TIMESTAMP(),
nullable=False,
server_default=sa.text("now()"),
),
sa.Column(
"join_dt", sa.TIMESTAMP(), server_default=sa.text("now()"), nullable=False
),
sa.ForeignKeyConstraint(
["team_id"], ["idac_team_info.id"], onupdate="cascade", ondelete="cascade"
),
sa.ForeignKeyConstraint(
["user"], ["aime_user.id"], onupdate="cascade", ondelete="cascade"
),
sa.UniqueConstraint("user", "version", name="idac_team_member_uk"),
mysql_charset="utf8mb4",
)
op.create_table(
"idac_league_info",
sa.Column("id", sa.Integer(), primary_key=True),
sa.Column("version", sa.Integer(), nullable=False),
sa.Column("round_id", sa.Integer(), nullable=False),
sa.Column("team_id", sa.Integer(), nullable=False),
sa.Column("league_rank_id", sa.Integer(), nullable=False, server_default="0"),
sa.Column("league_point", sa.Integer(), nullable=False, server_default="0"),
sa.ForeignKeyConstraint(
["team_id"], ["idac_team_info.id"], onupdate="cascade", ondelete="cascade"
),
sa.UniqueConstraint(
"version", "round_id", "team_id", name="idac_league_info_uk"
),
mysql_charset="utf8mb4",
)
op.create_table(
"idac_user_league_info",
sa.Column("id", sa.Integer(), primary_key=True),
sa.Column("version", sa.Integer(), nullable=False),
sa.Column("user", sa.Integer(), nullable=False),
sa.Column("team_id", sa.Integer(), nullable=False),
sa.Column("round_id", sa.Integer(), nullable=False),
sa.Column("point", sa.Integer(), nullable=False, server_default="0"),
sa.Column("rewards_claimed", sa.Boolean(), nullable=False, server_default="0"),
sa.ForeignKeyConstraint(
["user"], ["aime_user.id"], onupdate="cascade", ondelete="cascade"
),
sa.UniqueConstraint(
"user", "version", "round_id", name="idac_user_league_info_uk"
),
mysql_charset="utf8mb4",
)
op.drop_column("idac_user_car", "total_car_parts_count")
op.drop_column("idac_profile", "team_id")
op.drop_column("idac_profile_config", "config_id")
op.add_column(
"idac_profile",
sa.Column(
"total_car_parts_count", sa.Integer(), nullable=False, server_default="0"
),
)
op.add_column("idac_profile_config", sa.Column("favorite_bgm_list", sa.Text()))
op.add_column("idac_profile_config", sa.Column("break_flag", sa.INTEGER()))
op.add_column(
"idac_profile_config",
sa.Column("visible_my_stats", sa.INTEGER()),
)
op.add_column(
"idac_profile_config",
sa.Column("visible_rival_stats", sa.INTEGER()),
)
op.add_column("idac_profile_tips", sa.Column("last_team_join_dt", sa.TIMESTAMP))
op.create_table(
"idac_team_member_info",
sa.Column("id", sa.Integer(), primary_key=True),
sa.Column("version", sa.Integer(), nullable=False),
sa.Column("team_id", sa.Integer(), nullable=False),
sa.Column("user", sa.Integer(), nullable=False),
sa.Column("action_id", sa.Integer(), nullable=False, server_default="2"),
sa.Column(
"action_dt", sa.DateTime(), server_default=sa.text("now()"), nullable=False
),
sa.ForeignKeyConstraint(
["team_id"], ["idac_team_info.id"], onupdate="cascade", ondelete="cascade"
),
sa.ForeignKeyConstraint(
["user"], ["aime_user.id"], onupdate="cascade", ondelete="cascade"
),
mysql_charset="utf8mb4",
)
op.create_index(
"idx_trial_ranking",
"idac_user_time_trial",
["version", "course_id", "style_car_id", "user", "goal_time"],
)
op.alter_column(
"idac_user_battle_gift",
"gift_status",
new_column_name="gift_get_status",
existing_type=sa.Integer(),
existing_nullable=True,
)
for column_name in PROFILE_STOCK_COLUMNS:
op.alter_column(
"idac_profile_stock",
column_name,
existing_type=sa.String(length=255),
type_=sa.Text(),
existing_nullable=True,
)
op.alter_column(
"idac_profile_stock",
"mytitle_list",
existing_type=sa.String(length=1024),
type_=sa.Text(),
existing_nullable=True,
)
op.alter_column(
"idac_profile_stock",
"mytitle_new_list",
existing_type=sa.String(length=1024),
type_=sa.Text(),
existing_nullable=True,
)
op.create_unique_constraint(
"idac_round_info_uk",
"idac_round_info",
["round_id_in_json", "season"]
)
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_table("idac_team_member_info")
op.drop_table("idac_team_member")
op.drop_table("idac_league_info")
op.drop_table("idac_team_info")
op.drop_table("idac_user_league_info")
op.drop_column("idac_profile", "total_car_parts_count")
op.add_column(
"idac_user_car",
sa.Column(
"total_car_parts_count", sa.Integer(), nullable=False, server_default="0"
),
)
op.drop_column("idac_profile_config", "favorite_bgm_list")
op.drop_column("idac_profile_config", "visible_rival_stats")
op.drop_column("idac_profile_config", "visible_my_stats")
op.drop_column("idac_profile_config", "break_flag")
op.drop_column("idac_profile_tips", "last_team_join_dt")
op.drop_index("idx_trial_ranking", "idac_user_time_trial")
op.add_column(
"idac_profile",
sa.Column("team_id", sa.INTEGER(), server_default="0"),
)
op.add_column(
"idac_profile_config",
sa.Column("config_id", sa.INTEGER()),
)
op.alter_column(
"idac_user_battle_gift",
"gift_get_status",
new_column_name="gift_status",
existing_type=sa.Integer(),
existing_nullable=True,
)
for column_name in PROFILE_STOCK_COLUMNS:
op.alter_column(
"idac_profile_stock",
column_name,
existing_type=sa.Text(),
type_=sa.String(length=255),
existing_nullable=True,
)
op.alter_column(
"idac_profile_stock",
"mytitle_list",
existing_type=sa.Text(),
type_=sa.String(length=1024),
existing_nullable=True,
)
op.alter_column(
"idac_profile_stock",
"mytitle_new_list",
existing_type=sa.Text(),
type_=sa.String(length=1024),
existing_nullable=True,
)
op.drop_constraint(
"idac_round_info_uk",
"idac_round_info",
type_="unique"
)
# ### end Alembic commands ###
+6 -1
View File
@@ -1,6 +1,8 @@
from typing import Dict, List, Tuple, Any
import asyncio
import json
import logging, coloredlogs
from typing import Dict, List, Tuple, Any
from logging.handlers import TimedRotatingFileHandler
from starlette.requests import Request
from starlette.responses import Response
@@ -140,6 +142,9 @@ class TitleServlet:
if hasattr(handler_cls, "setup") and should_call_setup:
handler_cls.setup()
should_call_setup = False
if hasattr(handler_cls, "async_init"):
asyncio.create_task(handler_cls.async_init())
self.title_registry[code] = handler_cls