mirror of
https://gh-proxy.org/https://github.com/klinsmaya/SQLBot.git
synced 2026-11-09 09:46:55 +08:00
refactor: new resource
This commit is contained in:
@@ -1,16 +1,17 @@
|
||||
from xmlrpc.client import Boolean
|
||||
|
||||
from fastapi import APIRouter, File, UploadFile, HTTPException
|
||||
|
||||
from apps.dashboard.crud.dashboard_service import get_dashboard_list, preview_with_id, \
|
||||
create_resource, create_canvas
|
||||
from apps.dashboard.models.dashboard_model import CreateDashboard,BaseDashboard
|
||||
create_resource, create_canvas, validate_name
|
||||
from apps.dashboard.models.dashboard_model import CreateDashboard, BaseDashboard, QueryDashboard
|
||||
from common.core.deps import SessionDep, CurrentUser
|
||||
|
||||
router = APIRouter(tags=["dashboard"], prefix="/dashboard")
|
||||
|
||||
@router.post("/list")
|
||||
async def datasource_list(session: SessionDep):
|
||||
return get_dashboard_list(session=session)
|
||||
async def datasource_list(session: SessionDep,dashboard: QueryDashboard):
|
||||
return get_dashboard_list(session=session,dashboard=dashboard)
|
||||
|
||||
@router.get("/preview_dashboard/{id}")
|
||||
async def preview_dashboard(session: SessionDep,id:str):
|
||||
@@ -30,4 +31,9 @@ async def add_canvas(session: SessionDep, user: CurrentUser, dashboard: CreateDa
|
||||
|
||||
@router.post("/update_canvas", response_model=BaseDashboard)
|
||||
async def update(session: SessionDep, user: CurrentUser, dashboard: CreateDashboard):
|
||||
return
|
||||
return
|
||||
|
||||
@router.post("/check_name")
|
||||
async def check_name(session: SessionDep, dashboard: QueryDashboard):
|
||||
return validate_name(session,dashboard)
|
||||
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
from sqlalchemy import select
|
||||
from apps.dashboard.models.dashboard_model import CoreDashboard, CreateDashboard
|
||||
from sqlalchemy import select, and_, text
|
||||
from apps.dashboard.models.dashboard_model import CoreDashboard, CreateDashboard, QueryDashboard
|
||||
from common.core.deps import SessionDep, CurrentUser
|
||||
from sqlmodel import text
|
||||
import uuid
|
||||
import datetime
|
||||
def get_dashboard_list(session: SessionDep):
|
||||
def get_dashboard_list(session: SessionDep,dashboard: QueryDashboard):
|
||||
sql = text("SELECT id, name, type,node_type, pid, create_time FROM core_dashboard")
|
||||
for row in session.exec(sql).mappings():
|
||||
yield CoreDashboard(**row)
|
||||
@@ -45,4 +44,36 @@ def create_canvas(session: SessionDep, user: CurrentUser, dashboard: CreateDashb
|
||||
return record
|
||||
|
||||
def update_canvas(session: SessionDep, user: CurrentUser, dashboard: CreateDashboard):
|
||||
record = session.query(CoreDashboard).filter(CoreDashboard.id == dashboard.id).first()
|
||||
record = session.query(CoreDashboard).filter(CoreDashboard.id == dashboard.id).first()
|
||||
|
||||
|
||||
def validate_name( session: SessionDep, dashboard: QueryDashboard) -> bool:
|
||||
if not dashboard.workspace_id:
|
||||
raise ValueError("workspace_id is required")
|
||||
if not dashboard.pid:
|
||||
raise ValueError("pid is required")
|
||||
if not dashboard.opt:
|
||||
raise ValueError("opt is required")
|
||||
|
||||
if dashboard.opt in ('newLeaf', 'newFolder'):
|
||||
query = session.query(CoreDashboard).filter(
|
||||
and_(
|
||||
CoreDashboard.workspace_id == dashboard.workspace_id,
|
||||
CoreDashboard.pid == dashboard.pid,
|
||||
CoreDashboard.name == dashboard.name
|
||||
)
|
||||
)
|
||||
elif dashboard.opt in ('updateLeaf', 'updateFolder'):
|
||||
if not dashboard.id:
|
||||
raise ValueError("id is required for update operation")
|
||||
query = session.query(CoreDashboard).filter(
|
||||
and_(
|
||||
CoreDashboard.workspace_id == dashboard.workspace_id,
|
||||
CoreDashboard.pid == dashboard.pid,
|
||||
CoreDashboard.name == dashboard.name,
|
||||
CoreDashboard.id != dashboard.id
|
||||
)
|
||||
)
|
||||
else:
|
||||
raise ValueError(f"Invalid opt value: {dashboard.opt}")
|
||||
return not session.query(query.exists()).scalar()
|
||||
@@ -141,9 +141,12 @@ class BaseDashboard(BaseModel):
|
||||
node_type: str = ''
|
||||
create_by: int = 0
|
||||
|
||||
class QueryDashboard(BaseDashboard):
|
||||
opt: str = ''
|
||||
|
||||
|
||||
# dashboard create obj
|
||||
class CreateDashboard(BaseDashboard):
|
||||
class CreateDashboard(QueryDashboard):
|
||||
canvas_style_data: str =''
|
||||
component_data: str = ''
|
||||
description: str = ''
|
||||
|
||||
Reference in New Issue
Block a user