Извлечение данных выполняется с помощью SQL-запросов, которые используют выбранные поля, а также возможности PostgreSQL JSON, что позволяет формировать данные именно так, как необходимо для ответа GraphQL.
Моя цель сейчас — обойти Проверка объекта Python в Strawberry для этого предварительно отформатированного JSON для повышения производительности.
В моей текущей настройке у меня есть различные типы GraphQL, определенные в Strawberry, похожие на следующие:
Код: Выделить всё
import strawberry
@strawberry.type
class Player:
name: str
age: int
# ... more fields ...
@strawberry.type
class Team:
city: str
players: list[Player]
Пример структуры преобразователя:
Код: Выделить всё
@strawberry.type
class Query:
@strawberry.field
def teams_with_player(self, info) -> list[Team]:
formatted_json = query_postgresql_for_formatted_json(info.selected_fields)
# The above function returns JSON directly in the structure expected by the GraphQL schema
return formatted_json
например, с помощью следующего запроса:
п>
Код: Выделить всё
query {
teamsWithPlayer {
city
players {
name
}
}
}
Код: Выделить всё
[
{
"city": "Abuja",
"players": [
{"name": "Player1"},
{"name": "Player2"}
]
},
{
"city": "Djakarta",
"players": [
{"name": "Player3"},
{"name": "Player4"}
]
}
// ... more teams ...
]
Подробнее здесь: https://stackoverflow.com/questions/776 ... stantiatio