1+ from datetime import datetime
2+ from fastapi import APIRouter
3+ from sqlmodel import select
4+ from apps .system .models .system_modle import AiModelDetail
5+ from apps .system .schemas .system_schema import model_status
6+ from common .core .deps import SessionDep
7+ from common .core .pagination import Paginator
8+ from common .core .schemas import PaginatedResponse , PaginationParams
9+ from common .utils .time import get_timestamp
10+
11+ router = APIRouter (tags = ["system/aimodel" ], prefix = "/system/aimodel" )
12+
13+
14+ @router .get ("/pager/{pageNum}/{pageSize}" , response_model = PaginatedResponse [AiModelDetail ])
15+ async def pager (
16+ session : SessionDep ,
17+ pageNum : int ,
18+ pageSize : int
19+ ):
20+ pagination = PaginationParams (page = pageNum , size = pageSize )
21+ paginator = Paginator (session )
22+ filters = {}
23+ return await paginator .get_paginated_response (
24+ model = AiModelDetail ,
25+ pagination = pagination ,
26+ ** filters )
27+
28+ @router .get ("/{id}" , response_model = AiModelDetail )
29+ async def get_model_by_id (
30+ session : SessionDep ,
31+ id : int
32+ ):
33+ term = session .get (AiModelDetail , id )
34+ return term
35+
36+ @router .post ("" , response_model = AiModelDetail )
37+ async def add_model (
38+ session : SessionDep ,
39+ creator : AiModelDetail
40+ ):
41+ data = AiModelDetail .model_validate (creator )
42+ data .create_time = get_timestamp ()
43+ session .add (data )
44+ session .commit ()
45+ return creator
46+
47+ @router .put ("" , response_model = AiModelDetail )
48+ async def update_terminology (
49+ session : SessionDep ,
50+ model : AiModelDetail
51+ ):
52+ model .id = int (model .id )
53+ term = session .exec (select (AiModelDetail ).where (AiModelDetail .id == model .id )).first ()
54+ update_data = model .model_dump (exclude_unset = True )
55+ for field , value in update_data .items ():
56+ setattr (term , field , value )
57+ session .add (term )
58+ session .commit ()
59+ return model
60+
61+ @router .delete ("/{id}" , response_model = AiModelDetail )
62+ async def delete_terminology (
63+ session : SessionDep ,
64+ id : int
65+ ):
66+ term = session .exec (select (AiModelDetail ).where (AiModelDetail .id == id )).first ()
67+ session .delete (term )
68+ session .commit ()
69+ return {
70+ "message" : f"AiModel with ID { id } deleted successfully."
71+ }
72+
73+
74+ @router .patch ("/status" , response_model = dict )
75+ async def status (session : SessionDep , dto : model_status ):
76+ ids = dto .ids
77+ status = dto .status
78+ if not ids :
79+ return {"message" : "ids is empty" }
80+ statement = select (AiModelDetail ).where (AiModelDetail .id .in_ (ids ))
81+ terms = session .exec (statement ).all ()
82+ for term in terms :
83+ term .status = status
84+ session .add (term )
85+ session .commit ()
86+ return {"message" : f"AiModel with IDs { ids } updated successfully." }
0 commit comments