from datetime import UTC, datetime from typing import Any from fastapi import Request def success_response( data: Any, request: Request | None = None, meta: dict | None = None, ) -> dict: trace_id = getattr(request.state, "trace_id", None) if request else None base_meta: dict[str, Any] = { "trace_id": trace_id, "timestamp": datetime.now(UTC).isoformat(), } if meta: base_meta.update(meta) return { "success": True, "data": data, "meta": base_meta, "errors": [], } def paginated_response( data: list, total: int, page: int, page_size: int, request: Request | None = None, ) -> dict: return success_response( data=data, request=request, meta={"page": page, "page_size": page_size, "total": total}, )