1- from sqlalchemy import select
2- from apps .dashboard .models .dashboard_model import CoreDashboard , CreateDashboard
1+ from sqlalchemy import select , and_ , text
2+ from apps .dashboard .models .dashboard_model import CoreDashboard , CreateDashboard , QueryDashboard
33from common .core .deps import SessionDep , CurrentUser
4- from sqlmodel import text
54import uuid
65import datetime
7- def get_dashboard_list (session : SessionDep ):
6+ def get_dashboard_list (session : SessionDep , dashboard : QueryDashboard ):
87 sql = text ("SELECT id, name, type,node_type, pid, create_time FROM core_dashboard" )
98 for row in session .exec (sql ).mappings ():
109 yield CoreDashboard (** row )
@@ -45,4 +44,36 @@ def create_canvas(session: SessionDep, user: CurrentUser, dashboard: CreateDashb
4544 return record
4645
4746def update_canvas (session : SessionDep , user : CurrentUser , dashboard : CreateDashboard ):
48- record = session .query (CoreDashboard ).filter (CoreDashboard .id == dashboard .id ).first ()
47+ record = session .query (CoreDashboard ).filter (CoreDashboard .id == dashboard .id ).first ()
48+
49+
50+ def validate_name ( session : SessionDep , dashboard : QueryDashboard ) -> bool :
51+ if not dashboard .workspace_id :
52+ raise ValueError ("workspace_id is required" )
53+ if not dashboard .pid :
54+ raise ValueError ("pid is required" )
55+ if not dashboard .opt :
56+ raise ValueError ("opt is required" )
57+
58+ if dashboard .opt in ('newLeaf' , 'newFolder' ):
59+ query = session .query (CoreDashboard ).filter (
60+ and_ (
61+ CoreDashboard .workspace_id == dashboard .workspace_id ,
62+ CoreDashboard .pid == dashboard .pid ,
63+ CoreDashboard .name == dashboard .name
64+ )
65+ )
66+ elif dashboard .opt in ('updateLeaf' , 'updateFolder' ):
67+ if not dashboard .id :
68+ raise ValueError ("id is required for update operation" )
69+ query = session .query (CoreDashboard ).filter (
70+ and_ (
71+ CoreDashboard .workspace_id == dashboard .workspace_id ,
72+ CoreDashboard .pid == dashboard .pid ,
73+ CoreDashboard .name == dashboard .name ,
74+ CoreDashboard .id != dashboard .id
75+ )
76+ )
77+ else :
78+ raise ValueError (f"Invalid opt value: { dashboard .opt } " )
79+ return not session .query (query .exists ()).scalar ()
0 commit comments