add backend readiness contract for publish prechecks guard publish flow with explicit validation and version-aware checks make publish behavior more predictable for clients and safer against stale state
32 lines
735 B
Python
32 lines
735 B
Python
from __future__ import annotations
|
|
|
|
from fastapi import HTTPException, status
|
|
|
|
|
|
def raise_conflict(*, code: str, message: str, details: dict | None = None) -> None:
|
|
payload: dict = {
|
|
"code": code,
|
|
"message": message,
|
|
}
|
|
if details:
|
|
payload["details"] = details
|
|
|
|
raise HTTPException(
|
|
status_code=status.HTTP_409_CONFLICT,
|
|
detail=payload,
|
|
)
|
|
|
|
|
|
def raise_unprocessable(*, code: str, message: str, details: dict | None = None) -> None:
|
|
payload: dict = {
|
|
"code": code,
|
|
"message": message,
|
|
}
|
|
if details:
|
|
payload["details"] = details
|
|
|
|
raise HTTPException(
|
|
status_code=status.HTTP_422_UNPROCESSABLE_ENTITY,
|
|
detail=payload,
|
|
)
|