2023-12-16 10:01:27 +00:00
|
|
|
|
from typing import Optional, List, TYPE_CHECKING
|
|
|
|
|
|
|
|
|
|
from gram_core.plugin.methods.migrate_data import IMigrateData, MigrateDataException
|
|
|
|
|
from modules.gacha_log.log import GachaLog
|
|
|
|
|
|
|
|
|
|
if TYPE_CHECKING:
|
|
|
|
|
from gram_core.services.players.models import Player
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class GachaLogMigrate(IMigrateData, GachaLog):
|
|
|
|
|
old_user_id: int
|
|
|
|
|
new_user_id: int
|
|
|
|
|
old_uid_list: List[int]
|
|
|
|
|
|
|
|
|
|
async def migrate_data_msg(self) -> str:
|
2024-12-01 09:22:34 +00:00
|
|
|
|
return f"{len(self.old_uid_list)} 个账号的调频记录数据"
|
2023-12-16 10:01:27 +00:00
|
|
|
|
|
|
|
|
|
async def migrate_data(self) -> bool:
|
|
|
|
|
uid_list = []
|
|
|
|
|
for uid in self.old_uid_list:
|
|
|
|
|
if not await self.move_history_info(str(self.old_user_id), str(uid), str(self.new_user_id)):
|
|
|
|
|
uid_list.append(str(uid))
|
|
|
|
|
if uid_list:
|
2024-12-01 09:22:34 +00:00
|
|
|
|
raise MigrateDataException(f"调频记录数据迁移失败:uid {','.join(uid_list)}")
|
2023-12-16 10:01:27 +00:00
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
|
async def create(
|
|
|
|
|
cls,
|
|
|
|
|
old_user_id: int,
|
|
|
|
|
new_user_id: int,
|
|
|
|
|
players: List["Player"],
|
|
|
|
|
) -> Optional["GachaLogMigrate"]:
|
|
|
|
|
if not players:
|
|
|
|
|
return None
|
|
|
|
|
_uid_list = [player.player_id for player in players if player and player.player_id]
|
|
|
|
|
if not _uid_list:
|
|
|
|
|
return None
|
|
|
|
|
self = cls()
|
|
|
|
|
old_uid_list = []
|
|
|
|
|
for uid in _uid_list:
|
|
|
|
|
_, status = await self.load_history_info(str(old_user_id), str(uid), True)
|
|
|
|
|
if status:
|
|
|
|
|
old_uid_list.append(uid)
|
|
|
|
|
if not old_uid_list:
|
|
|
|
|
return None
|
|
|
|
|
self.old_user_id = old_user_id
|
|
|
|
|
self.new_user_id = new_user_id
|
|
|
|
|
self.old_uid_list = old_uid_list
|
|
|
|
|
return self
|