Skip to content

Commit 1c7a081

Browse files
committed
Merge remote-tracking branch 'origin/main'
2 parents 04721c9 + f2c3968 commit 1c7a081

File tree

13 files changed

+513
-234
lines changed

13 files changed

+513
-234
lines changed

backend/apps/chat/api/chat.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ async def chats(session: SessionDep, current_user: CurrentUser):
2424

2525

2626
@router.get("/get/{chart_id}")
27-
async def list_chat(session: SessionDep, current_user: CurrentUser, chart_id: int):
27+
async def get_chat(session: SessionDep, current_user: CurrentUser, chart_id: int):
2828
try:
2929
return get_chat_with_records(chart_id=chart_id, session=session, current_user=current_user)
3030
except Exception as e:

backend/apps/chat/curd/chat.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from typing import List
33

44
from sqlalchemy import and_
5+
from sqlalchemy.orm import load_only
56

67
from apps.chat.models.chat_model import Chat, ChatRecord, CreateChat, ChatInfo, RenameChat, ChatQuestion
78
from apps.datasource.models.datasource import CoreDatasource
@@ -55,7 +56,11 @@ def get_chat_with_records(session: SessionDep, chart_id: int, current_user: Curr
5556
chat_info.datasource_exists = True
5657
chat_info.datasource_name = ds.name
5758

58-
record_list = session.query(ChatRecord).filter(
59+
record_list = session.query(ChatRecord).options(
60+
load_only(ChatRecord.id, ChatRecord.chat_id, ChatRecord.create_time, ChatRecord.finish_time,
61+
ChatRecord.question, ChatRecord.sql_answer, ChatRecord.sql, ChatRecord.data,
62+
ChatRecord.chart_answer, ChatRecord.chart, ChatRecord.finish, ChatRecord.error,
63+
ChatRecord.run_time)).filter(
5964
and_(Chat.create_by == current_user.id, ChatRecord.chat_id == chart_id)).order_by(ChatRecord.create_time).all()
6065

6166
chat_info.records = record_list
@@ -96,6 +101,9 @@ def create_chat(session: SessionDep, current_user: CurrentUser, create_chat_obj:
96101
chat_info.id = chat.id
97102
session.commit()
98103

104+
chat_info.datasource_exists = True
105+
chat_info.datasource_name = ds.name
106+
99107
return chat_info
100108

101109

@@ -214,6 +222,7 @@ def save_error_message(session: SessionDep, record_id: int, message: str) -> Cha
214222
record = session.query(ChatRecord).filter(ChatRecord.id == record_id).first()
215223
record.error = message
216224
record.finish = True
225+
record.finish_time = datetime.datetime.now()
217226

218227
result = ChatRecord(**record.model_dump())
219228

@@ -242,11 +251,13 @@ def save_sql_exec_data(session: SessionDep, record_id: int, data: str) -> ChatRe
242251

243252
return result
244253

254+
245255
def finish_record(session: SessionDep, record_id: int) -> ChatRecord:
246256
if not record_id:
247257
raise Exception("Record id cannot be None")
248258
record = session.query(ChatRecord).filter(ChatRecord.id == record_id).first()
249259
record.finish = True
260+
record.finish_time = datetime.datetime.now()
250261

251262
result = ChatRecord(**record.model_dump())
252263

@@ -257,4 +268,3 @@ def finish_record(session: SessionDep, record_id: int) -> ChatRecord:
257268
session.commit()
258269

259270
return result
260-

backend/apps/chat/models/chat_model.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from sqlalchemy import Column, Text, BigInteger, DateTime, Integer, Identity, Boolean
33
from datetime import datetime
44
from pydantic import BaseModel
5-
from typing import List, Optional
5+
from typing import List, Optional, Any
66

77
from apps.template.generate_chart.generator import get_chart_template
88
from apps.template.generate_sql.generator import get_sql_template

backend/apps/datasource/api/datasource.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
from apps.db.engine import create_table, get_data_engine, insert_data
1010
from common.core.deps import SessionDep, CurrentUser
1111
from ..crud.datasource import get_datasource_list, check_status, create_ds, update_ds, delete_ds, getTables, getFields, \
12-
execSql, update_table_and_fields, getTablesByDs, chooseTables, preview
12+
execSql, update_table_and_fields, getTablesByDs, chooseTables, preview, updateTable, updateField
1313
from ..crud.field import get_fields_by_table_id
1414
from ..crud.table import get_tables_by_ds_id
15-
from ..models.datasource import CoreDatasource, CreateDatasource, TableObj, CoreTable
15+
from ..models.datasource import CoreDatasource, CreateDatasource, TableObj, CoreTable, CoreField
1616

1717
router = APIRouter(tags=["datasource"], prefix="/datasource")
1818
path = "/opt/sqlbot/data/excel"
@@ -83,6 +83,16 @@ async def edit_local(session: SessionDep, data: TableObj):
8383
update_table_and_fields(session, data)
8484

8585

86+
@router.post("/editTable")
87+
async def edit_table(session: SessionDep, table: CoreTable):
88+
updateTable(session, table)
89+
90+
91+
@router.post("/editField")
92+
async def edit_field(session: SessionDep, field: CoreField):
93+
updateField(session, field)
94+
95+
8696
@router.post("/previewData/{id}")
8797
async def edit_local(session: SessionDep, id: int, data: TableObj):
8898
return preview(session, id, data)

backend/apps/datasource/crud/datasource.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,14 @@ def update_table_and_fields(session: SessionDep, data: TableObj):
192192
update_field(session, field)
193193

194194

195+
def updateTable(session: SessionDep, table: CoreTable):
196+
update_table(session, table)
197+
198+
199+
def updateField(session: SessionDep, field: CoreField):
200+
update_field(session, field)
201+
202+
195203
def preview(session: SessionDep, id: int, data: TableObj):
196204
ds = session.query(CoreDatasource).filter(CoreDatasource.id == id).first()
197205
conf = DatasourceConf(**json.loads(aes_decrypt(ds.configuration))) if ds.type != "excel" else get_engine_config()
@@ -225,6 +233,8 @@ def get_table_obj_by_ds(session: SessionDep, ds: CoreDatasource) -> List[TableAn
225233
def get_table_schema(session: SessionDep, ds: CoreDatasource) -> str:
226234
schema_str = ""
227235
table_objs = get_table_obj_by_ds(session=session, ds=ds)
236+
if len(table_objs) == 0:
237+
return schema_str
228238
db_name = table_objs[0].schema
229239
schema_str += f"【DB_ID】 {db_name}\n【Schema】\n"
230240
for obj in table_objs:

backend/apps/db/engine.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
def get_engine_config():
1414
return DatasourceConf(username=settings.POSTGRES_USER, password=settings.POSTGRES_PASSWORD,
15-
host="127.0.0.1", port=settings.POSTGRES_PORT, database=settings.POSTGRES_DB,
15+
host=settings.POSTGRES_SERVER, port=settings.POSTGRES_PORT, database=settings.POSTGRES_DB,
1616
dbSchema="public")
1717

1818

frontend/src/api/chat.ts

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export interface ChatMessage {
2020
role: 'user' | 'assistant'
2121
create_time?: Date | string
2222
content?: string | number
23+
record?: ChatRecord
2324
isTyping?: boolean
2425
isWelcome?: boolean
2526
}
@@ -28,24 +29,32 @@ export class ChatRecord {
2829
id?: number
2930
chat_id?: number
3031
create_time?: Date | string
31-
create_by?: number
32-
datasource?: number
33-
engine_type?: string
32+
finish_time?: Date | string
3433
question?: string
35-
answer?: string
34+
sql_answer?: string
35+
sql?: string
36+
data?: string
37+
chart_answer?: string
38+
chart?: string
39+
finish?: boolean = false
40+
error?: string
3641
run_time: number = 0
3742

3843
constructor()
39-
constructor(id: number, chat_id: number, create_time: Date | string, create_by: number, datasource: number, engine_type: string, question: string, answer: string, run_time: number)
40-
constructor(id?: number, chat_id?: number, create_time?: Date | string, create_by?: number, datasource?: number, engine_type?: string, question?: string, answer?: string, run_time?: number) {
44+
constructor(id: number, chat_id: number, create_time: Date | string, finish_time: Date | string | undefined, question: string, sql_answer: string | undefined, sql: string | undefined, data: string | undefined, chart_answer: string | undefined, chart: string | undefined, finish: boolean, error: string | undefined, run_time: number)
45+
constructor(id?: number, chat_id?: number, create_time?: Date | string, finish_time?: Date | string, question?: string, sql_answer?: string, sql?: string, data?: string, chart_answer?: string, chart?: string, finish?: boolean, error?: string, run_time?: number) {
4146
this.id = id
4247
this.chat_id = chat_id
4348
this.create_time = getDate(create_time)
44-
this.create_by = create_by
45-
this.datasource = datasource
46-
this.engine_type = engine_type
49+
this.finish_time = getDate(finish_time)
4750
this.question = question
48-
this.answer = answer
51+
this.sql_answer = sql_answer
52+
this.sql = sql
53+
this.data = data
54+
this.chart_answer = chart_answer
55+
this.chart = chart
56+
this.finish = finish
57+
this.error = error
4958
this.run_time = run_time ?? 0
5059
}
5160
}
@@ -111,7 +120,7 @@ function toChatRecord(data?: any): ChatRecord | undefined {
111120
if (!data) {
112121
return undefined
113122
}
114-
return new ChatRecord(data.id, data.number, data.create_time, data.create_by, data.datasource, data.engine_type, data.question, data.answer, data.run_time)
123+
return new ChatRecord(data.id, data.chat_id, data.create_time, data.finish_time, data.question, data.sql_answer, data.sql, data.data, data.chart_answer, data.chart, data.finish, data.error, data.run_time)
115124
}
116125

117126
function toChatRecordList(list: any = []): ChatRecord[] {

frontend/src/api/datasource.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,6 @@ export const datasourceApi = {
1515
fieldList: (id: Number) => request.post(`/datasource/fieldList/${id}`),
1616
edit: (data: any) => request.post('/datasource/editLocalComment', data),
1717
previewData: (id: Number, data: any) => request.post(`/datasource/previewData/${id}`, data),
18+
saveTable: (data: any) => request.post('/datasource/editTable', data),
19+
saveField: (data: any) => request.post('/datasource/editField', data)
1820
}

frontend/src/router/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import chat from "@/views/chat/index.vue";
77
import ds from "@/views/ds/index.vue";
88
import DashboardEditor from "@/views/dashboard/editor/index.vue";
99
import Dashboard from "@/views/dashboard/index.vue";
10-
import setting from "@/views/setting/index.vue";
10+
// import setting from "@/views/setting/index.vue";
1111
import { watchRouter } from "./watch";
1212
const router = createRouter({
1313
history: createWebHashHistory(),
@@ -81,7 +81,7 @@ const router = createRouter({
8181
},
8282
],
8383
},
84-
{
84+
/* {
8585
path: "/setting",
8686
component: Layout,
8787
redirect: "/setting/index",
@@ -93,7 +93,7 @@ const router = createRouter({
9393
meta: { title: "Settings", icon: "setting" },
9494
},
9595
],
96-
},
96+
}, */
9797
{
9898
path: "/system",
9999
component: Layout,

0 commit comments

Comments
 (0)