forked from Hay1tsme/artemis
adding more profile & hero saving stuff to SAO
This commit is contained in:
@ -49,7 +49,42 @@ hero_party = Table(
|
||||
mysql_charset="utf8mb4",
|
||||
)
|
||||
|
||||
sessions = Table(
|
||||
"sao_play_sessions",
|
||||
metadata,
|
||||
Column("id", Integer, primary_key=True, nullable=False),
|
||||
Column(
|
||||
"user",
|
||||
ForeignKey("aime_user.id", ondelete="cascade", onupdate="cascade"),
|
||||
nullable=False,
|
||||
),
|
||||
Column("user_party_team_id", Integer, nullable=False),
|
||||
Column("episode_id", Integer, nullable=False),
|
||||
Column("play_mode", Integer, nullable=False),
|
||||
Column("quest_drop_boost_apply_flag", Integer, nullable=False),
|
||||
Column("play_date", TIMESTAMP, nullable=False, server_default=func.now()),
|
||||
UniqueConstraint("user", "user_party_team_id", "play_date", name="sao_play_sessions_uk"),
|
||||
mysql_charset="utf8mb4",
|
||||
)
|
||||
|
||||
class SaoItemData(BaseData):
|
||||
def create_session(self, user_id: int, user_party_team_id: int, episode_id: int, play_mode: int, quest_drop_boost_apply_flag: int) -> Optional[int]:
|
||||
sql = insert(sessions).values(
|
||||
user=user_id,
|
||||
user_party_team_id=user_party_team_id,
|
||||
episode_id=episode_id,
|
||||
play_mode=play_mode,
|
||||
quest_drop_boost_apply_flag=quest_drop_boost_apply_flag
|
||||
)
|
||||
|
||||
conflict = sql.on_duplicate_key_update(user=user_id)
|
||||
|
||||
result = self.execute(conflict)
|
||||
if result is None:
|
||||
self.logger.error(f"Failed to create SAO session for user {user_id}!")
|
||||
return None
|
||||
return result.lastrowid
|
||||
|
||||
def put_hero_log(self, user_id: int, user_hero_log_id: int, log_level: int, log_exp: int, main_weapon: int, sub_equipment: int, skill_slot1_skill_id: int, skill_slot2_skill_id: int, skill_slot3_skill_id: int, skill_slot4_skill_id: int, skill_slot5_skill_id: int) -> Optional[int]:
|
||||
sql = insert(hero_log_data).values(
|
||||
user=user_id,
|
||||
@ -66,15 +101,15 @@ class SaoItemData(BaseData):
|
||||
)
|
||||
|
||||
conflict = sql.on_duplicate_key_update(
|
||||
log_level=hero_log_data.c.log_level,
|
||||
log_exp=hero_log_data.c.log_exp,
|
||||
main_weapon=hero_log_data.c.main_weapon,
|
||||
sub_equipment=hero_log_data.c.sub_equipment,
|
||||
skill_slot1_skill_id=hero_log_data.c.skill_slot1_skill_id,
|
||||
skill_slot2_skill_id=hero_log_data.c.skill_slot2_skill_id,
|
||||
skill_slot3_skill_id=hero_log_data.c.skill_slot3_skill_id,
|
||||
skill_slot4_skill_id=hero_log_data.c.skill_slot4_skill_id,
|
||||
skill_slot5_skill_id=hero_log_data.c.skill_slot5_skill_id,
|
||||
log_level=log_level,
|
||||
log_exp=log_exp,
|
||||
main_weapon=main_weapon,
|
||||
sub_equipment=sub_equipment,
|
||||
skill_slot1_skill_id=skill_slot1_skill_id,
|
||||
skill_slot2_skill_id=skill_slot2_skill_id,
|
||||
skill_slot3_skill_id=skill_slot3_skill_id,
|
||||
skill_slot4_skill_id=skill_slot4_skill_id,
|
||||
skill_slot5_skill_id=skill_slot5_skill_id,
|
||||
)
|
||||
|
||||
result = self.execute(conflict)
|
||||
@ -96,9 +131,9 @@ class SaoItemData(BaseData):
|
||||
)
|
||||
|
||||
conflict = sql.on_duplicate_key_update(
|
||||
user_hero_log_id_1=hero_party.c.user_hero_log_id_1,
|
||||
user_hero_log_id_2=hero_party.c.user_hero_log_id_2,
|
||||
user_hero_log_id_3=hero_party.c.user_hero_log_id_3,
|
||||
user_hero_log_id_1=user_hero_log_id_1,
|
||||
user_hero_log_id_2=user_hero_log_id_2,
|
||||
user_hero_log_id_3=user_hero_log_id_3,
|
||||
)
|
||||
|
||||
result = self.execute(conflict)
|
||||
@ -155,6 +190,22 @@ class SaoItemData(BaseData):
|
||||
)
|
||||
)
|
||||
|
||||
result = self.execute(sql)
|
||||
if result is None:
|
||||
return None
|
||||
return result.fetchone()
|
||||
|
||||
def get_session(
|
||||
self, user_id: int = None
|
||||
) -> Optional[List[Row]]:
|
||||
sql = sessions.select(
|
||||
and_(
|
||||
sessions.c.user == user_id,
|
||||
)
|
||||
).order_by(
|
||||
sessions.c.play_date.asc()
|
||||
)
|
||||
|
||||
result = self.execute(sql)
|
||||
if result is None:
|
||||
return None
|
||||
|
Reference in New Issue
Block a user