22from typing import List , Union
33from apps .system .schemas .ai_model_schema import AiModelConfigItem , AiModelCreator , AiModelEditor , AiModelGridItem
44from fastapi import APIRouter , Query
5- from sqlmodel import func , select
5+ from sqlmodel import func , select , update
66
77from apps .system .models .system_model import AiModelDetail
88from common .core .deps import SessionDep
@@ -23,7 +23,7 @@ async def query(
2323 AiModelDetail .default_model )
2424 if keyword is not None :
2525 statement = statement .where (AiModelDetail .name .like (f"%{ keyword } %" ))
26-
26+ statement = statement . order_by ( AiModelDetail . create_time . asc ())
2727 items = session .exec (statement ).all ()
2828 return items
2929
@@ -85,6 +85,27 @@ async def delete_model(
8585 id : int
8686):
8787 item = session .get (AiModelDetail , id )
88+ if item .default_model :
89+ raise RuntimeError (f"Can not delete [${ item .name } ], because it is default model!" )
8890 session .delete (item )
8991 session .commit ()
92+
93+ @router .put ("/default/{id}" )
94+ async def set_default (session : SessionDep , id : int ):
95+ db_model = session .get (AiModelDetail , id )
96+ if not db_model :
97+ raise ValueError (f"AiModelDetail with id { id } not found" )
98+ if db_model .default_model :
99+ return
100+
101+ try :
102+ session .exec (
103+ update (AiModelDetail ).values (default_model = False )
104+ )
105+ db_model .default_model = True
106+ session .add (db_model )
107+ session .commit ()
108+ except Exception as e :
109+ session .rollback ()
110+ raise e
90111
0 commit comments