55 lines
1.9 KiB
Python
55 lines
1.9 KiB
Python
from models.ChatRequest import ChatRequest
|
|
from models.ChatWithReportRequest import ChatWithReportRequest
|
|
from models.BaseResponse import BaseResponse
|
|
import uuid
|
|
import db.postgres as pg
|
|
import db.sqlserver as sqlserver
|
|
import uuid
|
|
import threading
|
|
from fastapi import APIRouter, Depends
|
|
from uuid import UUID
|
|
from config.security import get_user_id_from_token
|
|
|
|
reportDataRouter = APIRouter()
|
|
from llm.chatLLM import get_chat_response
|
|
from llm.titleChain import get_title
|
|
from llm.sqlLLM import get_sql_description_response, get_chat_sql_response, get_chat_sql_improve_response
|
|
from models.SaveReportRequest import SaveReportRequest
|
|
from models.ReportTableAddRequest import ReportTableAddRequest
|
|
from models.ReportFieldAddRequest import ReportFieldAddRequest
|
|
|
|
|
|
# 获取表格列表
|
|
@reportDataRouter.get("/tableList")
|
|
def tableList(user_id: UUID = Depends(get_user_id_from_token)):
|
|
if not user_id:
|
|
return {"error": "userId is required"}
|
|
return BaseResponse(data=pg.get_available_tables())
|
|
|
|
|
|
# 获取字段列表
|
|
@reportDataRouter.get("/fieldList")
|
|
def fieldList(tableId: str, user_id: UUID = Depends(get_user_id_from_token)):
|
|
if not user_id:
|
|
return {"error": "userId is required"}
|
|
if not tableId:
|
|
return {"error": "tableId is required"}
|
|
return BaseResponse(data=pg.get_fields_by_table_id(tableId))
|
|
|
|
|
|
# 新增表
|
|
@reportDataRouter.post("/addTable")
|
|
def addTable(data: ReportTableAddRequest, user_id: UUID = Depends(get_user_id_from_token)):
|
|
if not user_id:
|
|
return {"error": "userId is required"}
|
|
return BaseResponse(data=pg.add_table(data.name, data.description, user_id))
|
|
|
|
|
|
# 新增字段
|
|
@reportDataRouter.post("/addField")
|
|
def addField(data: ReportFieldAddRequest, user_id: UUID = Depends(get_user_id_from_token)):
|
|
if not user_id:
|
|
return {"error": "userId is required"}
|
|
return BaseResponse(
|
|
data=pg.add_field(data.name, data.type, data.description, data.is_active, data.table_id, user_id))
|