standardize typed error responses across draft, pricing and publish endpoints reduce contract drift between related flows keep client-side handling more predictable and consistent
40 lines
862 B
Python
40 lines
862 B
Python
from __future__ import annotations
|
|
|
|
from fastapi import HTTPException, status
|
|
|
|
|
|
def raise_conflict(*, code: str, message: str, **extra) -> None:
|
|
detail = {
|
|
"code": code,
|
|
"message": message,
|
|
**extra,
|
|
}
|
|
raise HTTPException(
|
|
status_code=status.HTTP_409_CONFLICT,
|
|
detail=detail,
|
|
)
|
|
|
|
|
|
def raise_unprocessable(*, code: str, message: str, **extra) -> None:
|
|
detail = {
|
|
"code": code,
|
|
"message": message,
|
|
**extra,
|
|
}
|
|
raise HTTPException(
|
|
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
|
detail=detail,
|
|
)
|
|
|
|
|
|
def raise_not_found(*, code: str, message: str, **extra) -> None:
|
|
detail = {
|
|
"code": code,
|
|
"message": message,
|
|
**extra,
|
|
}
|
|
raise HTTPException(
|
|
status_code=status.HTTP_404_NOT_FOUND,
|
|
detail=detail,
|
|
)
|