diff --git a/core/data/alembic/versions/91c682918b67_chuni_fix_total_scores.py b/core/data/alembic/versions/91c682918b67_chuni_fix_total_scores.py new file mode 100644 index 0000000..685f19a --- /dev/null +++ b/core/data/alembic/versions/91c682918b67_chuni_fix_total_scores.py @@ -0,0 +1,92 @@ +"""chuni_fix_total_scores + +Revision ID: 91c682918b67 +Revises: 9c42e54a27fe +Create Date: 2025-03-29 11:19:46.063173 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import mysql + +# revision identifiers, used by Alembic. +revision = '91c682918b67' +down_revision = '9c42e54a27fe' +branch_labels = None +depends_on = None + + +def upgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column('chuni_profile_data', 'totalMapNum', + existing_type=mysql.INTEGER(display_width=11), + type_=sa.BigInteger(), + existing_nullable=True) + op.alter_column('chuni_profile_data', 'totalHiScore', + existing_type=mysql.INTEGER(display_width=11), + type_=sa.BigInteger(), + existing_nullable=True) + op.alter_column('chuni_profile_data', 'totalBasicHighScore', + existing_type=mysql.INTEGER(display_width=11), + type_=sa.BigInteger(), + existing_nullable=True) + op.alter_column('chuni_profile_data', 'totalExpertHighScore', + existing_type=mysql.INTEGER(display_width=11), + type_=sa.BigInteger(), + existing_nullable=True) + op.alter_column('chuni_profile_data', 'totalMasterHighScore', + existing_type=mysql.INTEGER(display_width=11), + type_=sa.BigInteger(), + existing_nullable=True) + op.alter_column('chuni_profile_data', 'totalRepertoireCount', + existing_type=mysql.INTEGER(display_width=11), + type_=sa.BigInteger(), + existing_nullable=True) + op.alter_column('chuni_profile_data', 'totalAdvancedHighScore', + existing_type=mysql.INTEGER(display_width=11), + type_=sa.BigInteger(), + existing_nullable=True) + op.alter_column('chuni_profile_data', 'totalUltimaHighScore', + existing_type=mysql.INTEGER(display_width=11), + type_=sa.BigInteger(), + existing_nullable=True, + existing_server_default=sa.text("'0'")) + # ### end Alembic commands ### + + +def downgrade(): + # ### commands auto generated by Alembic - please adjust! ### + op.alter_column('chuni_profile_data', 'totalUltimaHighScore', + existing_type=sa.BigInteger(), + type_=mysql.INTEGER(display_width=11), + existing_nullable=True, + existing_server_default=sa.text("'0'")) + op.alter_column('chuni_profile_data', 'totalAdvancedHighScore', + existing_type=sa.BigInteger(), + type_=mysql.INTEGER(display_width=11), + existing_nullable=True) + op.alter_column('chuni_profile_data', 'totalRepertoireCount', + existing_type=sa.BigInteger(), + type_=mysql.INTEGER(display_width=11), + existing_nullable=True) + op.alter_column('chuni_profile_data', 'totalMasterHighScore', + existing_type=sa.BigInteger(), + type_=mysql.INTEGER(display_width=11), + existing_nullable=True) + op.alter_column('chuni_profile_data', 'totalExpertHighScore', + existing_type=sa.BigInteger(), + type_=mysql.INTEGER(display_width=11), + existing_nullable=True) + op.alter_column('chuni_profile_data', 'totalBasicHighScore', + existing_type=sa.BigInteger(), + type_=mysql.INTEGER(display_width=11), + existing_nullable=True) + op.alter_column('chuni_profile_data', 'totalHiScore', + existing_type=sa.BigInteger(), + type_=mysql.INTEGER(display_width=11), + existing_nullable=True) + op.alter_column('chuni_profile_data', 'totalMapNum', + existing_type=sa.BigInteger(), + type_=mysql.INTEGER(display_width=11), + existing_nullable=True) + # ### end Alembic commands ### diff --git a/titles/chuni/schema/profile.py b/titles/chuni/schema/profile.py index 1362c9f..c7fb750 100644 --- a/titles/chuni/schema/profile.py +++ b/titles/chuni/schema/profile.py @@ -35,13 +35,13 @@ profile = Table( Column("friendCount", Integer), Column("lastPlaceId", Integer), Column("nameplateId", Integer), - Column("totalMapNum", Integer), + Column("totalMapNum", BigInteger), Column("lastAllNetId", Integer), Column("lastClientId", String(25)), Column("lastPlayDate", String(25)), Column("lastRegionId", Integer), Column("playerRating", Integer), - Column("totalHiScore", Integer), + Column("totalHiScore", BigInteger), Column("webLimitDate", String(25)), Column("firstPlayDate", String(25)), Column("highestRating", Integer), @@ -59,12 +59,12 @@ profile = Table( Column("firstDataVersion", String(25)), Column("reincarnationNum", Integer), Column("playedTutorialBit", Integer), - Column("totalBasicHighScore", Integer), - Column("totalExpertHighScore", Integer), - Column("totalMasterHighScore", Integer), - Column("totalRepertoireCount", Integer), + Column("totalBasicHighScore", BigInteger), + Column("totalExpertHighScore", BigInteger), + Column("totalMasterHighScore", BigInteger), + Column("totalRepertoireCount", BigInteger), Column("firstTutorialCancelNum", Integer), - Column("totalAdvancedHighScore", Integer), + Column("totalAdvancedHighScore", BigInteger), Column("masterTutorialCancelNum", Integer), Column("ext1", Integer), # Added in chunew Column("ext2", Integer), @@ -111,7 +111,7 @@ profile = Table( Column("classEmblemBase", Integer, server_default="0"), Column("battleRankPoint", Integer, server_default="0"), Column("netBattle2ndCount", Integer, server_default="0"), - Column("totalUltimaHighScore", Integer, server_default="0"), + Column("totalUltimaHighScore", BigInteger, server_default="0"), Column("skillId", Integer, server_default="0"), Column("lastCountryCode", String(5), server_default="JPN"), Column("isNetBattleHost", Boolean, server_default="0"), @@ -808,6 +808,7 @@ class ChuniProfileData(BaseData): if result is None: return None return result.fetchone() + async def get_overview(self) -> Dict: # Fetch and add up all the playcounts playcount_sql = await self.execute(select(profile.c.playCount))