From 0ca0871f6eb0efbefac3669b74f4d9962507c99f Mon Sep 17 00:00:00 2001 From: inter Date: Mon, 8 Sep 2025 16:36:22 +0800 Subject: [PATCH] Add File --- backend/apps/settings/api/terminology.py | 68 ++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 backend/apps/settings/api/terminology.py diff --git a/backend/apps/settings/api/terminology.py b/backend/apps/settings/api/terminology.py new file mode 100644 index 0000000..708e6ee --- /dev/null +++ b/backend/apps/settings/api/terminology.py @@ -0,0 +1,68 @@ +from fastapi import APIRouter +from sqlmodel import select +from apps.settings.models.setting_models import term_model +from apps.settings.schemas.setting_schemas import term_schema_creator +from common.core.deps import SessionDep +from common.core.pagination import Paginator +from common.core.schemas import PaginatedResponse, PaginationParams +router = APIRouter(tags=["Settings"], prefix="/settings/terminology") + + +@router.get("/pager/{pageNum}/{pageSize}", response_model=PaginatedResponse[term_model]) +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( + stmt=term_model, + pagination=pagination, + **filters) + + +@router.get("/{id}", response_model=term_model) +async def get_terminology_by_id( + session: SessionDep, + id: int +): + term = session.get(term_model, id) + return term + +@router.post("", response_model=term_model) +async def add_terminology( + session: SessionDep, + creator: term_schema_creator +): + terminology = term_model(**creator.model_dump()) + session.add(terminology) + session.commit() + return terminology + +@router.put("", response_model=term_model) +async def update_terminology( + session: SessionDep, + terminology: term_model +): + terminology.id = int(terminology.id) + term = session.exec(select(term_model).where(term_model.id == terminology.id)).first() + update_data = terminology.model_dump(exclude_unset=True) + for field, value in update_data.items(): + setattr(term, field, value) + session.add(term) + session.commit() + return terminology + +@router.delete("/{id}", response_model=term_model) +async def delete_terminology( + session: SessionDep, + id: int +): + term = session.exec(select(term_model).where(term_model.id == id)).first() + session.delete(term) + session.commit() + return { + "message": f"Terminology with ID {id} deleted successfully." + }