增强聊天管理器和数据库API,添加自动注册和异步清理功能,优化模型转换为字典的逻辑

This commit is contained in:
Windpicker-owo
2025-11-20 16:48:18 +08:00
parent 03c80a08fb
commit 6ecf5a36f2
5 changed files with 215 additions and 74 deletions

View File

@@ -13,6 +13,7 @@ from src.common.database.api import (
from src.common.database.api import (
store_action_info as new_store_action_info,
)
from src.common.database.api.crud import _model_to_dict as _crud_model_to_dict
from src.common.database.core.models import (
ActionRecords,
AntiInjectionStats,
@@ -123,21 +124,19 @@ async def build_filters(model_class, filters: dict[str, Any]):
def _model_to_dict(instance) -> dict[str, Any]:
"""将模型实例转换为字典
"""数据库模型实例转换为字典兼容旧API
Args:
instance: 模型实例
instance: 数据库模型实例
Returns:
字典表示
"""
if instance is None:
return None
return _crud_model_to_dict(instance)
result = {}
for column in instance.__table__.columns:
result[column.name] = getattr(instance, column.name)
return result
async def db_query(
@@ -211,11 +210,9 @@ async def db_query(
# 执行查询
if single_result:
result = await query_builder.first()
return _model_to_dict(result)
else:
results = await query_builder.all()
return [_model_to_dict(r) for r in results]
return await query_builder.first(as_dict=True)
return await query_builder.all(as_dict=True)
elif query_type == "create":
if not data: