From 4e2899dc33b194e431dbf5f8e445022531d052fc Mon Sep 17 00:00:00 2001 From: martsforever Date: Wed, 15 Oct 2025 20:12:08 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20general=EF=BC=9Aperform=5Fgeneral=5Fope?= =?UTF-8?q?ration?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/general/add_general_route.py | 55 +----------------------- app/general/perform_general_operation.py | 55 ++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 54 deletions(-) create mode 100644 app/general/perform_general_operation.py diff --git a/app/general/add_general_route.py b/app/general/add_general_route.py index db67a0d..28705aa 100644 --- a/app/general/add_general_route.py +++ b/app/general/add_general_route.py @@ -1,12 +1,8 @@ -import json -from typing import Literal - from fastapi import FastAPI from starlette.requests import Request from starlette.responses import JSONResponse -from app.general.ModuleConfigModule import ModuleConfigModule -from app.general.general_utils.sql_service import sql_service +from app.general.perform_general_operation import perform_general_operation from app.utils.db_utils import AsyncSessionDep @@ -23,52 +19,3 @@ def add_general_route(app: FastAPI): return result finally: await session.close() - - -async def perform_general_operation( - session: AsyncSessionDep, - module: str, - data: dict, - debug_data=None, - user=None, - type: Literal['list', 'item', 'insert', 'update', 'delete', 'batch_insert', 'batch_update'] = 'query' -): - if debug_data is None: - debug_data = [] - - module_query_result = await get_module_config(session, module, debug_data, user) - - if 'error' in module_query_result: - return module_query_result - - module_config = module_query_result.get('result', {"": ""}).get('moduleConfig', None) - - if module_config is not None: - module_config = json.loads(module_config) - - if module_config is None: - return { - "error": f"Can't find module config match: {module}", - "body": module_query_result, - } - - if type == 'list': - return await sql_service.list(session, data, module_config, debug_data, user) - elif type == 'item': - return await sql_service.item(session, data, module_config, debug_data, user) - elif type == 'insert': - return await sql_service.insert(session, data, module_config, debug_data, user) - elif type == 'update': - return await sql_service.update(session, data, module_config, debug_data, user) - elif type == 'batch_insert': - return await sql_service.batch_insert(session, data, module_config, debug_data, user) - elif type == 'batch_update': - return await sql_service.batch_update(session, data, module_config, debug_data, user) - elif type == 'delete': - return await sql_service.delete(session, data, module_config, debug_data, user) - else: - return {"error": f"Can't handle operation type: {type}"} - - -async def get_module_config(session: AsyncSessionDep, module: str, debug_data=None, user=None): - return await sql_service.item(session, {"code": module}, ModuleConfigModule, debug_data, user) diff --git a/app/general/perform_general_operation.py b/app/general/perform_general_operation.py new file mode 100644 index 0000000..4eb4f14 --- /dev/null +++ b/app/general/perform_general_operation.py @@ -0,0 +1,55 @@ +import json +from typing import Literal + +from app.general.ModuleConfigModule import ModuleConfigModule +from app.general.general_utils.sql_service import sql_service +from app.utils.db_utils import AsyncSessionDep + + +async def perform_general_operation( + session: AsyncSessionDep, + module: str, + data: dict, + debug_data=None, + user=None, + type: Literal['list', 'item', 'insert', 'update', 'delete', 'batch_insert', 'batch_update'] = 'query' +): + if debug_data is None: + debug_data = [] + + module_query_result = await get_module_config(session, module, debug_data, user) + + if 'error' in module_query_result: + return module_query_result + + module_config = module_query_result.get('result', {"": ""}).get('moduleConfig', None) + + if module_config is not None: + module_config = json.loads(module_config) + + if module_config is None: + return { + "error": f"Can't find module config match: {module}", + "body": module_query_result, + } + + if type == 'list': + return await sql_service.list(session, data, module_config, debug_data, user) + elif type == 'item': + return await sql_service.item(session, data, module_config, debug_data, user) + elif type == 'insert': + return await sql_service.insert(session, data, module_config, debug_data, user) + elif type == 'update': + return await sql_service.update(session, data, module_config, debug_data, user) + elif type == 'batch_insert': + return await sql_service.batch_insert(session, data, module_config, debug_data, user) + elif type == 'batch_update': + return await sql_service.batch_update(session, data, module_config, debug_data, user) + elif type == 'delete': + return await sql_service.delete(session, data, module_config, debug_data, user) + else: + return {"error": f"Can't handle operation type: {type}"} + + +async def get_module_config(session: AsyncSessionDep, module: str, debug_data=None, user=None): + return await sql_service.item(session, {"code": module}, ModuleConfigModule, debug_data, user)