pokken: restructure database
This commit is contained in:
parent
68e25b9c5e
commit
bd356af272
1
.gitignore
vendored
1
.gitignore
vendored
@ -158,5 +158,6 @@ cert/*
|
|||||||
!cert/server.pem
|
!cert/server.pem
|
||||||
config/*
|
config/*
|
||||||
deliver/*
|
deliver/*
|
||||||
|
*.gz
|
||||||
|
|
||||||
dbdump-*.json
|
dbdump-*.json
|
@ -55,7 +55,7 @@ class AllnetServlet:
|
|||||||
self.logger.error("No games detected!")
|
self.logger.error("No games detected!")
|
||||||
|
|
||||||
for _, mod in plugins.items():
|
for _, mod in plugins.items():
|
||||||
if hasattr(mod.index, "get_allnet_info"):
|
if hasattr(mod, "index") and hasattr(mod.index, "get_allnet_info"):
|
||||||
for code in mod.game_codes:
|
for code in mod.game_codes:
|
||||||
enabled, uri, host = mod.index.get_allnet_info(
|
enabled, uri, host = mod.index.get_allnet_info(
|
||||||
code, self.config, self.config_folder
|
code, self.config, self.config_folder
|
||||||
|
@ -17,6 +17,7 @@ class PokkenBase:
|
|||||||
self.version = 0
|
self.version = 0
|
||||||
self.logger = logging.getLogger("pokken")
|
self.logger = logging.getLogger("pokken")
|
||||||
self.data = PokkenData(core_cfg)
|
self.data = PokkenData(core_cfg)
|
||||||
|
self.SUPPORT_SET_NONE = 4294967295
|
||||||
|
|
||||||
def handle_noop(self, request: Any) -> bytes:
|
def handle_noop(self, request: Any) -> bytes:
|
||||||
res = jackal_pb2.Response()
|
res = jackal_pb2.Response()
|
||||||
@ -281,6 +282,12 @@ class PokkenBase:
|
|||||||
res.type = jackal_pb2.MessageType.SAVE_INGAME_LOG
|
res.type = jackal_pb2.MessageType.SAVE_INGAME_LOG
|
||||||
return res.SerializeToString()
|
return res.SerializeToString()
|
||||||
|
|
||||||
|
def handle_save_charge(self, data: jackal_pb2.Request) -> bytes:
|
||||||
|
res = jackal_pb2.Response()
|
||||||
|
res.result = 1
|
||||||
|
res.type = jackal_pb2.MessageType.SAVE_CHARGE
|
||||||
|
return res.SerializeToString()
|
||||||
|
|
||||||
def handle_matching_noop(self, data: Dict = {}, client_ip: str = "127.0.0.1") -> Dict:
|
def handle_matching_noop(self, data: Dict = {}, client_ip: str = "127.0.0.1") -> Dict:
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
@ -87,7 +87,7 @@ class PokkenServlet(resource.Resource):
|
|||||||
if not game_cfg.server.enable:
|
if not game_cfg.server.enable:
|
||||||
return (False, "")
|
return (False, "")
|
||||||
|
|
||||||
return (True, "PKF2")
|
return (True, "PKF1")
|
||||||
|
|
||||||
def setup(self) -> None:
|
def setup(self) -> None:
|
||||||
# TODO: Setup stun, turn (UDP) and admission (WSS) servers
|
# TODO: Setup stun, turn (UDP) and admission (WSS) servers
|
||||||
@ -115,13 +115,14 @@ class PokkenServlet(resource.Resource):
|
|||||||
pokken_request.type
|
pokken_request.type
|
||||||
].name.lower()
|
].name.lower()
|
||||||
|
|
||||||
|
self.logger.debug(pokken_request)
|
||||||
|
|
||||||
handler = getattr(self.base, f"handle_{endpoint}", None)
|
handler = getattr(self.base, f"handle_{endpoint}", None)
|
||||||
if handler is None:
|
if handler is None:
|
||||||
self.logger.warn(f"No handler found for message type {endpoint}")
|
self.logger.warn(f"No handler found for message type {endpoint}")
|
||||||
return self.base.handle_noop(pokken_request)
|
return self.base.handle_noop(pokken_request)
|
||||||
|
|
||||||
self.logger.info(f"{endpoint} request from {Utils.get_ip_addr(request)}")
|
self.logger.info(f"{endpoint} request from {Utils.get_ip_addr(request)}")
|
||||||
self.logger.debug(pokken_request)
|
|
||||||
|
|
||||||
ret = handler(pokken_request)
|
ret = handler(pokken_request)
|
||||||
return ret
|
return ret
|
||||||
|
@ -14,8 +14,9 @@ match_data = Table(
|
|||||||
metadata,
|
metadata,
|
||||||
Column('id', Integer, primary_key=True, nullable=False),
|
Column('id', Integer, primary_key=True, nullable=False),
|
||||||
Column('user', ForeignKey("aime_user.id", ondelete="cascade", onupdate="cascade"), nullable=False),
|
Column('user', ForeignKey("aime_user.id", ondelete="cascade", onupdate="cascade"), nullable=False),
|
||||||
Column('play_mode', Integer),
|
Column('num_games', Integer),
|
||||||
Column('result', Integer),
|
Column('play_modes', JSON),
|
||||||
|
Column('results', JSON),
|
||||||
Column('ex_ko_num', Integer),
|
Column('ex_ko_num', Integer),
|
||||||
Column('wko_num', Integer),
|
Column('wko_num', Integer),
|
||||||
Column('timeup_win_num', Integer),
|
Column('timeup_win_num', Integer),
|
||||||
|
@ -28,8 +28,10 @@ profile = Table(
|
|||||||
Column('score_point', Integer),
|
Column('score_point', Integer),
|
||||||
Column('grade_max_num', Integer),
|
Column('grade_max_num', Integer),
|
||||||
Column('extra_counter', Integer), # Optional
|
Column('extra_counter', Integer), # Optional
|
||||||
|
Column('tutorial_progress_flag', JSON), # Repeated, Integer
|
||||||
Column('total_play_days', Integer),
|
Column('total_play_days', Integer),
|
||||||
Column('play_date_time', Integer),
|
Column('play_date_time', Integer),
|
||||||
|
Column('achievement_flag', JSON), # Repeated, Integer
|
||||||
Column('lucky_box_fail_num', Integer),
|
Column('lucky_box_fail_num', Integer),
|
||||||
Column('event_reward_get_flag', Integer),
|
Column('event_reward_get_flag', Integer),
|
||||||
Column('rank_pvp_all', Integer),
|
Column('rank_pvp_all', Integer),
|
||||||
@ -41,15 +43,19 @@ profile = Table(
|
|||||||
Column('use_support_num', Integer),
|
Column('use_support_num', Integer),
|
||||||
Column('rankmatch_flag', Integer),
|
Column('rankmatch_flag', Integer),
|
||||||
Column('rankmatch_max', Integer), # Optional
|
Column('rankmatch_max', Integer), # Optional
|
||||||
|
Column('rankmatch_progress', JSON), # Repeated, Integer
|
||||||
Column('rankmatch_success', Integer), # Optional
|
Column('rankmatch_success', Integer), # Optional
|
||||||
Column('beat_num', Integer), # Optional
|
Column('beat_num', Integer), # Optional
|
||||||
Column('title_text_id', Integer),
|
Column('title_text_id', Integer),
|
||||||
Column('title_plate_id', Integer),
|
Column('title_plate_id', Integer),
|
||||||
Column('title_decoration_id', Integer),
|
Column('title_decoration_id', Integer),
|
||||||
Column('support_pokemon_list', JSON), # Repeated, Integer
|
Column('support_pokemon_list', JSON), # Repeated, Integer
|
||||||
Column('support_set_1', JSON), # Repeated, Integer
|
Column('support_set_1_1', Integer), # Repeated, Integer
|
||||||
Column('support_set_2', JSON), # Repeated, Integer
|
Column('support_set_1_2', Integer),
|
||||||
Column('support_set_3', JSON), # Repeated, Integer
|
Column('support_set_2_1', Integer), # Repeated, Integer
|
||||||
|
Column('support_set_2_2', Integer),
|
||||||
|
Column('support_set_3_1', Integer), # Repeated, Integer
|
||||||
|
Column('support_set_3_2', Integer),
|
||||||
Column('navi_trainer', Integer),
|
Column('navi_trainer', Integer),
|
||||||
Column('navi_version_id', Integer),
|
Column('navi_version_id', Integer),
|
||||||
Column('aid_skill_list', JSON), # Repeated, Integer
|
Column('aid_skill_list', JSON), # Repeated, Integer
|
||||||
@ -84,56 +90,8 @@ profile = Table(
|
|||||||
Column('sp_bonus_category_id_2', Integer),
|
Column('sp_bonus_category_id_2', Integer),
|
||||||
Column('sp_bonus_key_value_2', Integer),
|
Column('sp_bonus_key_value_2', Integer),
|
||||||
Column('last_play_event_id', Integer), # Optional
|
Column('last_play_event_id', Integer), # Optional
|
||||||
mysql_charset="utf8mb4",
|
Column('event_achievement_flag', JSON), # Repeated, Integer
|
||||||
)
|
Column('event_achievement_param', JSON), # Repeated, Integer
|
||||||
|
|
||||||
tutorial_progress = Table(
|
|
||||||
'pokken_tutorial_progress',
|
|
||||||
metadata,
|
|
||||||
Column('id', Integer, primary_key=True, nullable=False),
|
|
||||||
Column('user', ForeignKey("aime_user.id", ondelete="cascade", onupdate="cascade"), nullable=False),
|
|
||||||
Column('flag', Integer),
|
|
||||||
UniqueConstraint('user', 'flag', name='pokken_tutorial_progress_uk'),
|
|
||||||
mysql_charset="utf8mb4",
|
|
||||||
)
|
|
||||||
|
|
||||||
rankmatch_progress = Table(
|
|
||||||
'pokken_rankmatch_progress',
|
|
||||||
metadata,
|
|
||||||
Column('id', Integer, primary_key=True, nullable=False),
|
|
||||||
Column('user', ForeignKey("aime_user.id", ondelete="cascade", onupdate="cascade"), nullable=False),
|
|
||||||
Column('progress', Integer),
|
|
||||||
UniqueConstraint('user', 'progress', name='pokken_rankmatch_progress_uk'),
|
|
||||||
mysql_charset="utf8mb4",
|
|
||||||
)
|
|
||||||
|
|
||||||
achievement_flag = Table(
|
|
||||||
'pokken_achievement_flag',
|
|
||||||
metadata,
|
|
||||||
Column('id', Integer, primary_key=True, nullable=False),
|
|
||||||
Column('user', ForeignKey("aime_user.id", ondelete="cascade", onupdate="cascade"), nullable=False),
|
|
||||||
Column('flag', Integer),
|
|
||||||
UniqueConstraint('user', 'flag', name='pokken_achievement_flag_uk'),
|
|
||||||
mysql_charset="utf8mb4",
|
|
||||||
)
|
|
||||||
|
|
||||||
event_achievement_flag = Table(
|
|
||||||
'pokken_event_achievement_flag',
|
|
||||||
metadata,
|
|
||||||
Column('id', Integer, primary_key=True, nullable=False),
|
|
||||||
Column('user', ForeignKey("aime_user.id", ondelete="cascade", onupdate="cascade"), nullable=False),
|
|
||||||
Column('flag', Integer),
|
|
||||||
UniqueConstraint('user', 'flag', name='pokken_event_achievement_flag_uk'),
|
|
||||||
mysql_charset="utf8mb4",
|
|
||||||
)
|
|
||||||
|
|
||||||
event_achievement_param = Table(
|
|
||||||
'pokken_event_achievement_param',
|
|
||||||
metadata,
|
|
||||||
Column('id', Integer, primary_key=True, nullable=False),
|
|
||||||
Column('user', ForeignKey("aime_user.id", ondelete="cascade", onupdate="cascade"), nullable=False),
|
|
||||||
Column('param', Integer),
|
|
||||||
UniqueConstraint('user', 'param', name='pokken_event_achievement_param_uk'),
|
|
||||||
mysql_charset="utf8mb4",
|
mysql_charset="utf8mb4",
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -176,10 +134,7 @@ class PokkenProfileData(BaseData):
|
|||||||
if result is None:
|
if result is None:
|
||||||
self.logger.error(f"Failed to update pokken profile name for user {user_id}!")
|
self.logger.error(f"Failed to update pokken profile name for user {user_id}!")
|
||||||
|
|
||||||
def update_profile(self, user_id: int, profile_data: Dict) -> None:
|
def update_profile_tutorial_flags(self, user_id: int, tutorial_flags: Dict) -> None:
|
||||||
"""
|
|
||||||
TODO: Find out what comes in on the SaveUserRequestData protobuf and save it!
|
|
||||||
"""
|
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def get_profile(self, user_id: int) -> Optional[Row]:
|
def get_profile(self, user_id: int) -> Optional[Row]:
|
||||||
|
Loading…
Reference in New Issue
Block a user