From 77aa1afaa0f14883ddce3c5f4243b4bce1e94b04 Mon Sep 17 00:00:00 2001 From: ppc Date: Mon, 16 Sep 2024 16:55:09 +0100 Subject: [PATCH] add mai2 favorite music support --- ...c91c1206dca_mai2_favorite_song_ordering.py | 24 +++++++++++++++++++ titles/mai2/base.py | 2 +- titles/mai2/dx.py | 4 ++++ titles/mai2/schema/item.py | 8 ++++--- 4 files changed, 34 insertions(+), 4 deletions(-) create mode 100644 core/data/alembic/versions/bc91c1206dca_mai2_favorite_song_ordering.py diff --git a/core/data/alembic/versions/bc91c1206dca_mai2_favorite_song_ordering.py b/core/data/alembic/versions/bc91c1206dca_mai2_favorite_song_ordering.py new file mode 100644 index 0000000..ff4a62f --- /dev/null +++ b/core/data/alembic/versions/bc91c1206dca_mai2_favorite_song_ordering.py @@ -0,0 +1,24 @@ +"""mai2_favorite_song_ordering + +Revision ID: bc91c1206dca +Revises: 28443e2da5b8 +Create Date: 2024-09-16 14:24:56.714066 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = 'bc91c1206dca' +down_revision = '28443e2da5b8' +branch_labels = None +depends_on = None + + +def upgrade(): + op.add_column('mai2_item_favorite_music', sa.Column('orderId', sa.Integer(nullable=True))) + + +def downgrade(): + op.drop_column('mai2_item_favorite_music', 'orderId') diff --git a/titles/mai2/base.py b/titles/mai2/base.py index bbd074f..b041028 100644 --- a/titles/mai2/base.py +++ b/titles/mai2/base.py @@ -922,7 +922,7 @@ class Mai2Base: fav_music = await self.data.item.get_fav_music(user_id) if fav_music: for fav in fav_music: - id_list.append({"orderId": 0, "id": fav["musicId"]}) + id_list.append({"orderId": fav["orderId"] or 0, "id": fav["musicId"]}) if len(id_list) >= 100: # Lazy but whatever break diff --git a/titles/mai2/dx.py b/titles/mai2/dx.py index 53abc61..0e86acd 100644 --- a/titles/mai2/dx.py +++ b/titles/mai2/dx.py @@ -245,6 +245,10 @@ class Mai2DX(Mai2Base): kind_id = fav.get("kind", fav.get("itemKind")) # itemKind key used in BUDDiES+ await self.data.item.put_favorite(user_id, kind_id, fav["itemIdList"]) + if "userFavoritemusicList" in upsert and len(upsert["userFavoritemusicList"]) > 0: + for fav in upsert["userFavoritemusicList"]: + await self.data.item.add_fav_music(user_id, fav["id"], fav["orderId"]) + if ( "userFriendSeasonRankingList" in upsert and len(upsert["userFriendSeasonRankingList"]) > 0 diff --git a/titles/mai2/schema/item.py b/titles/mai2/schema/item.py index 13afbe4..87ddca4 100644 --- a/titles/mai2/schema/item.py +++ b/titles/mai2/schema/item.py @@ -144,6 +144,7 @@ fav_music = Table( nullable=False, ), Column("musicId", Integer, nullable=False), + Column("orderId", Integer, nullable=True), UniqueConstraint("user", "musicId", name="mai2_item_favorite_music_uk"), mysql_charset="utf8mb4", ) @@ -484,13 +485,14 @@ class Mai2ItemData(BaseData): if result: return result.fetchall() - async def add_fav_music(self, user_id: int, music_id: int) -> Optional[int]: + async def add_fav_music(self, user_id: int, music_id: int, order_id: Optional[int] = None) -> Optional[int]: sql = insert(fav_music).values( user = user_id, - musicId = music_id + musicId = music_id, + orderId = order_id ) - conflict = sql.on_duplicate_key_update(musicId = music_id) + conflict = sql.on_duplicate_key_update(orderId = order_id) result = await self.execute(conflict) if result: