1- from typing import Any , List , Optional
1+ from typing import List , Optional
22
33from fastapi import APIRouter , Depends
44from pydantic import BaseModel
1313from ..models import User
1414from ..site .utils import clean_data_to_model , get_pk
1515from .depends import decode_access_token_from_data
16+ from .responses import BaseRes , key_error , not_found_instance
1617
1718router = APIRouter ()
1819
@@ -29,12 +30,6 @@ class ListDataWithPage(BaseModel): # 带分页的数据
2930 total : int = 0
3031
3132
32- class BaseRes (BaseModel ):
33- status : int = 0
34- msg : str = ""
35- data : Any = {}
36-
37-
3833@router .get ("/{resource}/list" )
3934def list_view (
4035 request : Request ,
@@ -76,13 +71,12 @@ def update_data(
7671 if not user :
7772 return RedirectResponse (request .url_for ("admin:login" ))
7873 data = clean_data_to_model (page_model .update_fields , data )
79- params = dict (request .query_params )
80- pks = get_pk (page_model .model )
81- w = []
82- for k , v in params .items ():
83- if pks .get (k ) is not None :
84- w .append (pks [k ] == v )
74+ w = get_pks (page_model , request )
75+ if isinstance (w , BaseRes ):
76+ return w
8577 old_data = session .execute (select (page_model .model ).where (* w )).scalar_one_or_none ()
78+ if not old_data :
79+ return not_found_instance
8680 page_model .update_model (old_data , data )
8781 session .commit ()
8882 return BaseRes ()
@@ -98,15 +92,13 @@ def update_view(
9892 if not user :
9993 return RedirectResponse (request .url_for ("admin:login" ))
10094
101- params = dict (request .query_params )
102- pks = get_pk (page_model .model )
103- w = []
104- for k , v in params .items ():
105- if pks .get (k ) is not None :
106- w .append (pks [k ] == v )
107- data = session .execute (select (page_model .update_fields ).where (* w ))
108- for i in data :
109- return BaseRes (data = dict (i ))
95+ w = get_pks (page_model , request )
96+ if isinstance (w , BaseRes ):
97+ return w
98+ data = session .execute (select (page_model .update_fields ).where (* w )).fetchone ()
99+ if not data :
100+ return not_found_instance
101+ return BaseRes (data = dict (data ))
110102
111103
112104@router .post ("/{resource}/create" )
@@ -137,17 +129,24 @@ def delete_one(
137129 if not user :
138130 return RedirectResponse (request .url_for ("admin:login" ))
139131
132+ w = get_pks (page_model , request )
133+ if isinstance (w , BaseRes ):
134+ return w
135+ session .execute (delete (page_model .model ).where (* w ))
136+ session .commit ()
137+ return BaseRes ()
138+
139+
140+ def get_pks (page_model : ModelAdmin , request : Request ):
140141 params = dict (request .query_params )
141142 pks = get_pk (page_model .model )
142143 w = []
143144 for k , v in params .items ():
144145 if pks .get (k ) is not None :
145146 w .append (pks [k ] == v )
146147 else :
147- return BaseRes (status = 400 , msg = "主键错误" )
148- session .execute (delete (page_model .model ).where (* w ))
149- session .commit ()
150- return BaseRes ()
148+ return key_error
149+ return w
151150
152151
153152class DIDS (BaseModel ):
0 commit comments