from framework.main_framework import Response, main_function from framework.requests_dataclass import SampleRequests from dataclasses import dataclass from flask import Blueprint from flask import request from framework.mysql_cli import MysqlCliV3 from framework.response_code import RequestMethods import json as JSON @dataclass class OverrideSampleRequestParams(SampleRequests): gameId: int uid: int def __init__(self): if request.method == "GET": super(OverrideSampleRequestParams, self).__init__(json_data=request.args, methods=RequestMethods.GET) if request.method == "POST": super(OverrideSampleRequestParams, self).__init__(json_data=request.get_data(), methods=RequestMethods.POST) self.gameId = self.json_data.get("gameId") self.uid = self.json_data.get("uid") if not self.gameId or not self.uid: self.make_exception(self.response_code_enum.RESPONSE_PARAMS_IS_NULL) class OverrideMysqlCli(MysqlCliV3): def __init__(self): super().__init__() self.table_name = "game_kf_configure_table" # default table def search_game_configuration_table(self, game_id: int, uid: int, table: str | None = None) -> dict: if table is not None: self.table_name = table sql = f""" SELECT `base` , `uid` , `gameId`, `free`, `id`, `normalIcons`, `multiplier` FROM {self.table_name} WHERE 1 = 1 AND `gameId` = {game_id} AND `uid` = {uid} """ mysql_result: dict = self.execute_sql(sql=sql, fetch_all=False, close_connect=False) self.check_mysql_exception(mysql_result) return mysql_result def delete_game_configuration_table_with_read_once(self, m_id: int, table: str | None = None) -> None: if table is not None: self.table_name = table sql = f""" DELETE FROM {self.table_name} WHERE 1 = 1 AND `id` = {m_id} """ mysql_result: dict = self.execute_sql(sql=sql, fetch_all=False, close_connect=True, commit_all=True) self.check_mysql_exception(mysql_result) class OverriderMainResponse(Response): def __init__(self): super(OverriderMainResponse, self).__init__() self.mysql_cli: OverrideMysqlCli = OverrideMysqlCli() self.set_connect_mysql(mysql_cli=self.mysql_cli) def core(self) -> None: params: OverrideSampleRequestParams = OverrideSampleRequestParams() mysql_result: dict = self.mysql_cli.search_game_configuration_table(game_id=params.gameId, uid=params.uid) result: tuple = mysql_result.get("Result") if result is None: response_message: str = "code" else: base_message_from_mysql: str = result[0] code_content: int = 1 content_id: int = result[4] not_use_base_field_game_id: list[str] = ['3000503', '3000524'] if str(params.gameId) in not_use_base_field_game_id: normal_icons_from_mysql: str = result[5] normal_icons_content: list[str] = normal_icons_from_mysql.split(",") normal_icons_content_to_int: list[int] = [int(i) for i in normal_icons_content] multiplier: int = result[6] response_message: str = JSON.dumps({ "code": code_content, "data": {"normalIcons": normal_icons_content_to_int, "multiplier": multiplier} }) else: base_content: list[str] = base_message_from_mysql.split(",") base_content_to_int: list[int] = [int(i) for i in base_content] free_content: str = result[3] response_message: str = JSON.dumps({ "code": code_content, "data": {"base": base_content_to_int, "free": free_content} }) # self.mysql_cli.delete_game_configuration_table_with_read_once(m_id=content_id) self.set_response_data(data=response_message) def before_response(self) -> dict: return self.make_response(use_custom_context=True) search_gm_data_bp = Blueprint("search_gm_data_bp", __name__) @search_gm_data_bp.route("/test/result", methods=["GET"]) def main(): override_main_response = OverriderMainResponse() return main_function(override_main_response)