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