Add File
This commit is contained in:
68
backend/apps/settings/api/terminology.py
Normal file
68
backend/apps/settings/api/terminology.py
Normal file
@@ -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."
|
||||
}
|
||||
Reference in New Issue
Block a user