Skip to content

Commit a53dfd7

Browse files
committed
feat: add table relation
1 parent e49a7ca commit a53dfd7

File tree

4 files changed

+66
-7
lines changed

4 files changed

+66
-7
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
"""044_table_relation
2+
3+
Revision ID: 455b8ce69e80
4+
Revises: dac062c1f7b1
5+
Create Date: 2025-09-24 13:34:08.205659
6+
7+
"""
8+
from alembic import op
9+
import sqlalchemy as sa
10+
import sqlmodel.sql.sqltypes
11+
from sqlalchemy.dialects import postgresql
12+
13+
# revision identifiers, used by Alembic.
14+
revision = '455b8ce69e80'
15+
down_revision = 'dac062c1f7b1'
16+
branch_labels = None
17+
depends_on = None
18+
19+
20+
def upgrade():
21+
# ### commands auto generated by Alembic - please adjust! ###
22+
op.add_column('core_datasource', sa.Column('table_relation', postgresql.JSONB(astext_type=sa.Text()), nullable=True))
23+
# ### end Alembic commands ###
24+
25+
26+
def downgrade():
27+
# ### commands auto generated by Alembic - please adjust! ###
28+
op.drop_column('core_datasource', 'table_relation')
29+
# ### end Alembic commands ###

backend/apps/api.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
from fastapi import APIRouter
22

3-
from apps.terminology.api import terminology
4-
from apps.data_training.api import data_training
53
from apps.chat.api import chat
64
from apps.dashboard.api import dashboard_api
7-
from apps.datasource.api import datasource
8-
from apps.system.api import login, user, aimodel, workspace, assistant
5+
from apps.data_training.api import data_training
6+
from apps.datasource.api import datasource, table_relation
97
from apps.mcp import mcp
8+
from apps.system.api import login, user, aimodel, workspace, assistant
9+
from apps.terminology.api import terminology
1010

1111
api_router = APIRouter()
1212
api_router.include_router(login.router)
@@ -20,5 +20,4 @@
2020
api_router.include_router(chat.router)
2121
api_router.include_router(dashboard_api.router)
2222
api_router.include_router(mcp.router)
23-
24-
23+
api_router.include_router(table_relation.router)
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Author: Junjun
2+
# Date: 2025/9/24
3+
from typing import List
4+
5+
from fastapi import APIRouter
6+
7+
from apps.datasource.models.datasource import CoreDatasource
8+
from common.core.deps import SessionDep
9+
10+
router = APIRouter(tags=["table_relation"], prefix="/table_relation")
11+
12+
13+
@router.post("/save/{ds_id}")
14+
async def save_relation(session: SessionDep, ds_id: int, relation: List[dict]):
15+
ds = session.get(CoreDatasource, ds_id)
16+
if ds:
17+
ds.table_relation = relation
18+
session.commit()
19+
else:
20+
raise Exception("no datasource")
21+
return True
22+
23+
24+
@router.post("/get/{ds_id}")
25+
async def save_relation(session: SessionDep, ds_id: int):
26+
ds = session.get(CoreDatasource, ds_id)
27+
if ds:
28+
return ds.table_relation if ds.table_relation else []
29+
return []

backend/apps/datasource/models/datasource.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22
from typing import List, Optional
33

44
from pydantic import BaseModel
5-
from sqlalchemy import Column, Text, BigInteger, DateTime, Integer, Identity
5+
from sqlalchemy import Column, Text, BigInteger, DateTime, Identity
6+
from sqlalchemy.dialects.postgresql import JSONB
67
from sqlmodel import SQLModel, Field
78

89

@@ -19,6 +20,7 @@ class CoreDatasource(SQLModel, table=True):
1920
status: str = Field(max_length=64, nullable=True)
2021
num: str = Field(max_length=256, nullable=True)
2122
oid: int = Field(sa_column=Column(BigInteger()))
23+
table_relation: List = Field(sa_column=Column(JSONB, nullable=True))
2224

2325

2426
class CoreTable(SQLModel, table=True):

0 commit comments

Comments
 (0)