m-gm/framework/main_framework.py

62 lines
1.8 KiB
Python
Raw Permalink Normal View History

2025-03-19 18:02:29 +08:00
from abc import abstractmethod
from time import sleep
import json
from framework.open_response import MinCustomException
from framework.mysql_cli import MysqlCliV3
from framework.open_response import OpenResponse
class Response(OpenResponse):
"""必须实现Core和Before_Response方法"""
def __init__(self):
super(Response, self).__init__()
self._is_connect_mysql: bool = False
self.mysql_cli: MysqlCliV3 | None = None
def set_connect_mysql(self, mysql_cli: MysqlCliV3 | None = None):
if mysql_cli is not None:
self._is_connect_mysql = True
self.mysql_cli = mysql_cli
# def set_handle_success(self, handle_success: bool):
# self._handle_success = handle_success
@abstractmethod
def core(self) -> None:
# TODO: 用于处理核心内容, 数据库逻辑等
pass
@abstractmethod
def before_response(self) -> dict:
# TODO: 用于创建返回的内容, 以及关闭数据库连接等
pass
def run_before_response(self) -> dict:
response_message: dict = self.before_response()
if self._is_connect_mysql:
self.mysql_cli.close_connect()
return response_message
def run_core(self):
self.core()
if self._handle_success:
self.set_response_code(self.response_code_enum.RESPONSE_200_SUCCESS)
def main_function(response: Response) -> dict:
"""
:param response: 重写的Response类
"""
try:
response.run_core()
except json.decoder.JSONDecodeError:
response.set_response_code(response.response_code_enum.RESPONSE_400_BAD_REQUESTS_JSON)
sleep(1)
response.echo = True
except MinCustomException as e:
response.set_response_code(e.args[0])
sleep(1)
response.echo = True
return response.run_before_response()