(
data: Any = None,
errors: list[JsonApiError | dict[str, Any]] | None = None,
meta: dict[str, Any] | None = None,
resource_type: str | None = None,
)
| 11 | |
| 12 | @staticmethod |
| 13 | def response( |
| 14 | data: Any = None, |
| 15 | errors: list[JsonApiError | dict[str, Any]] | None = None, |
| 16 | meta: dict[str, Any] | None = None, |
| 17 | resource_type: str | None = None, |
| 18 | ) -> JsonApiResponse: |
| 19 | resources: list[JsonApiResource] | list[dict[str, Any]] | JsonApiResource = [] # noqa |
| 20 | if data is None and errors is None: |
| 21 | return JsonApiResponse(meta=meta) |
| 22 | if resource_type is None: |
| 23 | resource_type = data.__class__.__name__ |
| 24 | if errors: |
| 25 | return JsonApiResponse( |
| 26 | errors=[error.model_dump() if hasattr(error, "model_dump") else error for error in errors], |
| 27 | meta=meta, |
| 28 | ) |
| 29 | if isinstance(data, Paginator): |
| 30 | resources = JsonAPIService.map_items(data.items) |
| 31 | meta = { |
| 32 | "total": data.total, |
| 33 | "page": data.page, |
| 34 | "perPage": data.per_page, |
| 35 | "totalPages": data.pages, |
| 36 | } |
| 37 | elif isinstance(data, list): |
| 38 | resources = JsonAPIService.map_items(data) |
| 39 | else: |
| 40 | resources = ResponseBaseModel.data_to_resource(data, resource_type) |
| 41 | |
| 42 | return JsonApiResponse(data=resources, meta=meta) |
| 43 | |
| 44 | @staticmethod |
| 45 | def map_items(data: list | Sequence[Any]) -> list[JsonApiResource]: |
nothing calls this directly
no test coverage detected