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