41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
"""NL2SQL HTTP 请求模型。"""
|
|||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
from typing import Literal
|
||
|
|
|
||
|
|
from pydantic import BaseModel, Field
|
||
|
|
|
||
|
|
|
||
|
|
class DataQueryReq(BaseModel):
|
||
|
|
"""自然语言查询请求。"""
|
||
|
|
|
||
|
|
question: str = Field(min_length=1, max_length=2000)
|
||
|
|
session_id: str | None = Field(default=None, max_length=64)
|
||
|
|
caller_agent: str | None = Field(default=None, max_length=64)
|
||
|
|
data_scope: dict | None = None
|
||
|
|
max_rows: int | None = Field(default=None, gt=0, le=10000)
|
||
|
|
include_sql: bool = False
|
||
|
|
page: int = Field(default=1, ge=1, le=100000)
|
||
|
|
page_size: int = Field(default=100, ge=1, le=10000)
|
||
|
|
sort_by: str | None = Field(default=None, max_length=128)
|
||
|
|
sort_order: Literal["asc", "desc"] = "asc"
|
||
|
|
output_format: Literal["json", "csv"] = "json"
|
||
|
|
|
||
|
|
|
||
|
|
class DataExplainReq(BaseModel):
|
||
|
|
"""安全 EXPLAIN 请求。"""
|
||
|
|
|
||
|
|
sql: str = Field(min_length=1, max_length=20000)
|
||
|
|
|
||
|
|
|
||
|
|
class DataKillReq(BaseModel):
|
||
|
|
"""管理员中止运行中查询请求。"""
|
||
|
|
|
||
|
|
query_id: str = Field(min_length=1, max_length=64)
|
||
|
|
|
||
|
|
|
||
|
|
class DataCacheInvalidateReq(BaseModel):
|
||
|
|
"""管理员按业务表失效查询缓存。"""
|
||
|
|
|
||
|
|
table_names: list[str] = Field(min_length=1, max_length=50)
|