30 lines
861 B
Python
30 lines
861 B
Python
"""Sum calculation routes."""
|
|
from fastapi import APIRouter, Depends
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from auth import require_permission
|
|
from database import get_db
|
|
from models import User, SumRecord, Permission
|
|
from schemas import SumRequest, SumResponse
|
|
|
|
|
|
router = APIRouter(prefix="/api/sum", tags=["sum"])
|
|
|
|
|
|
@router.post("", response_model=SumResponse)
|
|
async def calculate_sum(
|
|
data: SumRequest,
|
|
db: AsyncSession = Depends(get_db),
|
|
current_user: User = Depends(require_permission(Permission.USE_SUM)),
|
|
) -> SumResponse:
|
|
"""Calculate the sum of two numbers and record it."""
|
|
result = data.a + data.b
|
|
record = SumRecord(
|
|
user_id=current_user.id,
|
|
a=data.a,
|
|
b=data.b,
|
|
result=result,
|
|
)
|
|
db.add(record)
|
|
await db.commit()
|
|
return SumResponse(a=data.a, b=data.b, result=result)
|