mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 14:22:55 +08:00
perf👌: webui完善数据库管理api
This commit is contained in:
parent
59cb2bee8b
commit
45acf4a094
@ -11,7 +11,7 @@ from configs.config import NICKNAME
|
||||
from services.db_context import TestSQL
|
||||
from utils.utils import get_matchers
|
||||
|
||||
from ....base_model import QueryModel, Result
|
||||
from ....base_model import BaseResultModel, QueryModel, Result
|
||||
from ....config import QueryDateType
|
||||
from ....utils import authentication
|
||||
from .models.model import SqlModel, SqlText
|
||||
@ -77,6 +77,7 @@ async def _(sql: SqlText, request: Request) -> Result:
|
||||
if sql.sql.lower().startswith("select"):
|
||||
db = Tortoise.get_connection("default")
|
||||
res = await db.execute_query_dict(sql.sql)
|
||||
await SqlLog.add(ip or "0.0.0.0", sql.sql, "")
|
||||
return Result.ok(res, "执行成功啦!")
|
||||
else:
|
||||
result = await TestSQL.raw(sql.sql)
|
||||
@ -89,11 +90,14 @@ async def _(sql: SqlText, request: Request) -> Result:
|
||||
|
||||
@router.post("/get_sql_log", dependencies=[authentication()], description="sql日志列表")
|
||||
async def _(query: QueryModel) -> Result:
|
||||
data = await SqlLog.all().offset((query.index - 1) * query.size).limit(query.size)
|
||||
return Result.ok(data)
|
||||
total = await SqlLog.all().count()
|
||||
if (total % query.size):
|
||||
total += 1
|
||||
data = await SqlLog.all().order_by("-id").offset((query.index - 1) * query.size).limit(query.size)
|
||||
return Result.ok(BaseResultModel(total=total, data=data))
|
||||
|
||||
|
||||
@router.get("/get_sql", dependencies=[authentication()], description="常用sql")
|
||||
@router.get("/get_common_sql", dependencies=[authentication()], description="常用sql")
|
||||
async def _(plugin_name: Optional[str] = None) -> Result:
|
||||
if plugin_name:
|
||||
return Result.ok(SQL_DICT.get(plugin_name))
|
||||
|
||||
@ -14,6 +14,9 @@ class SqlText(BaseModel):
|
||||
|
||||
|
||||
class SqlModel(BaseModel):
|
||||
"""
|
||||
常用sql
|
||||
"""
|
||||
|
||||
name: str
|
||||
"""插件中文名称"""
|
||||
|
||||
@ -51,6 +51,8 @@ GROUP_PATTERN = r'.*?Message (-?\d*) from (\d*)@\[群:(\d*)] "(.*)"'
|
||||
|
||||
PRIVATE_PATTERN = r'.*?Message (-?\d*) from (\d*) "(.*)"'
|
||||
|
||||
AT_PATTERN = r'\[CQ:at,qq=(.*)\]'
|
||||
|
||||
IMAGE_PATTERN = r'\[CQ:image,.*,url=(.*);.*?\]'
|
||||
|
||||
@router.get("/get_group_list", dependencies=[authentication()], description="获取群组列表")
|
||||
@ -405,7 +407,12 @@ async def message_handle(sub_log: str, type: Literal["private", "group"]):
|
||||
msg = r.group(4)
|
||||
if gid not in ID2NAME:
|
||||
user = await GroupInfoUser.filter(user_id=uid, group_id=gid).first()
|
||||
ID2NAME[gid] = user.user_name or user.nickname
|
||||
ID2NAME[uid] = user.user_name or user.nickname
|
||||
if at_list := re.findall(AT_PATTERN, msg):
|
||||
user_list = await GroupInfoUser.filter(user_id__in=at_list, group_id=gid).all()
|
||||
id2name = {u.user_id: (u.user_name or u.nickname) for u in user_list}
|
||||
for qq in at_list:
|
||||
msg = re.sub(rf'\[CQ:at,qq={qq}\]', f"@{id2name[qq] or ''}", msg)
|
||||
if msg_id in MSG_LIST:
|
||||
return
|
||||
MSG_LIST.append(msg_id)
|
||||
@ -423,7 +430,7 @@ async def message_handle(sub_log: str, type: Literal["private", "group"]):
|
||||
user_id=uid,
|
||||
group_id=gid,
|
||||
message=messages,
|
||||
name=ID2NAME[uid],
|
||||
name=ID2NAME.get(uid) or "",
|
||||
ava_url=AVA_URL.format(uid),
|
||||
)
|
||||
|
||||
|
||||
@ -74,6 +74,17 @@ class QueryModel(BaseModel, Generic[T]):
|
||||
if size < 1:
|
||||
raise ValueError("每页数量小于1...")
|
||||
return size
|
||||
|
||||
|
||||
class BaseResultModel(BaseModel):
|
||||
"""
|
||||
基础返回
|
||||
"""
|
||||
|
||||
total: int
|
||||
"""总页数"""
|
||||
data: Any
|
||||
"""数据"""
|
||||
|
||||
|
||||
class PluginConfig(BaseModel):
|
||||
@ -89,26 +100,6 @@ class PluginConfig(BaseModel):
|
||||
has_type: bool
|
||||
|
||||
|
||||
class Plugin(BaseModel):
|
||||
"""
|
||||
插件
|
||||
"""
|
||||
|
||||
model: str
|
||||
"""模块名称"""
|
||||
plugin_settings: Optional[PluginSetting]
|
||||
"""settings"""
|
||||
plugin_manager: Optional[PluginManager]
|
||||
"""manager"""
|
||||
plugin_config: Optional[Dict[str, PluginConfig]]
|
||||
"""配置项"""
|
||||
cd_limit: Optional[PluginCd]
|
||||
"""cd限制"""
|
||||
block_limit: Optional[PluginBlock]
|
||||
"""阻断限制"""
|
||||
count_limit: Optional[PluginCount]
|
||||
"""次数限制"""
|
||||
|
||||
|
||||
class SystemStatus(BaseModel):
|
||||
"""
|
||||
|
||||
Loading…
Reference in New Issue
Block a user