Refactor code structure for improved readability and maintainability
This commit is contained in:
+40
@@ -0,0 +1,40 @@
|
||||
import uuid
|
||||
from typing import Annotated
|
||||
|
||||
from fastapi import APIRouter, Depends, Header, HTTPException, status
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.auth import require_api_key
|
||||
from app.db import get_session
|
||||
from app.payments import create_payment, get_payment
|
||||
from app.schemas import PaymentAccepted, PaymentCreate, PaymentDetails
|
||||
|
||||
router = APIRouter(
|
||||
prefix="/api/v1/payments",
|
||||
tags=["payments"],
|
||||
dependencies=[Depends(require_api_key)],
|
||||
)
|
||||
|
||||
|
||||
@router.post("", response_model=PaymentAccepted, status_code=status.HTTP_202_ACCEPTED)
|
||||
async def post_payment(
|
||||
request: PaymentCreate,
|
||||
idempotency_key: Annotated[
|
||||
str,
|
||||
Header(alias="Idempotency-Key", min_length=1, max_length=255),
|
||||
],
|
||||
session: Annotated[AsyncSession, Depends(get_session)],
|
||||
) -> PaymentAccepted:
|
||||
payment = await create_payment(session, request, idempotency_key)
|
||||
return PaymentAccepted.model_validate(payment)
|
||||
|
||||
|
||||
@router.get("/{payment_id}", response_model=PaymentDetails)
|
||||
async def read_payment(
|
||||
payment_id: uuid.UUID,
|
||||
session: Annotated[AsyncSession, Depends(get_session)],
|
||||
) -> PaymentDetails:
|
||||
payment = await get_payment(session, payment_id)
|
||||
if payment is None:
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Payment not found")
|
||||
return PaymentDetails.model_validate(payment)
|
||||
Reference in New Issue
Block a user