Files

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)