Files
SQLBot/backend/apps/settings/api/terminology.py
2025-09-08 16:36:22 +08:00

69 lines
2.0 KiB
Python

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."
}