[WIP] collection #181
This commit is contained in:
39
example/api/src/queries/cities.py
Normal file
39
example/api/src/queries/cities.py
Normal file
@@ -0,0 +1,39 @@
|
||||
from cpl.graphql.schema.filter.filter import Filter
|
||||
from cpl.graphql.schema.object_graph_type import ObjectGraphType
|
||||
|
||||
from cpl.graphql.schema.sort.sort import Sort
|
||||
from cpl.graphql.schema.sort.sort_order import SortOrder
|
||||
|
||||
|
||||
class City:
|
||||
def __init__(self, id: int, name: str):
|
||||
self.id = id
|
||||
self.name = name
|
||||
|
||||
|
||||
class CityFilter(Filter[City]):
|
||||
def __init__(self):
|
||||
Filter.__init__(self)
|
||||
self.field("id", int)
|
||||
self.field("name", str)
|
||||
|
||||
|
||||
class CitySort(Sort[City]):
|
||||
def __init__(self):
|
||||
Sort.__init__(self)
|
||||
self.field("id", SortOrder)
|
||||
self.field("name", SortOrder)
|
||||
|
||||
|
||||
class CityGraphType(ObjectGraphType):
|
||||
def __init__(self):
|
||||
ObjectGraphType.__init__(self)
|
||||
|
||||
self.string_field(
|
||||
"id",
|
||||
resolver=lambda user, *_: user.id,
|
||||
)
|
||||
self.string_field(
|
||||
"name",
|
||||
resolver=lambda user, *_: user.name,
|
||||
)
|
||||
@@ -1,6 +1,10 @@
|
||||
from api.src.queries.cities import CityFilter, CitySort, CityGraphType, City
|
||||
from api.src.queries.user import User, UserFilter, UserSort, UserGraphType
|
||||
from cpl.api.middleware.request import get_request
|
||||
from cpl.graphql.schema.query import Query
|
||||
|
||||
users = [User(i, f"User {i}") for i in range(1, 101)]
|
||||
cities = [City(i, f"City {i}") for i in range(1, 101)]
|
||||
|
||||
class HelloQuery(Query):
|
||||
def __init__(self):
|
||||
@@ -9,3 +13,18 @@ class HelloQuery(Query):
|
||||
"message",
|
||||
resolver=lambda *_, name: f"Hello {name} {get_request().state.request_id}",
|
||||
).with_argument(str, "name", "Name to greet", "world")
|
||||
|
||||
self.collection_field(
|
||||
UserGraphType,
|
||||
"users",
|
||||
UserFilter,
|
||||
UserSort,
|
||||
resolver=lambda *_: users,
|
||||
)
|
||||
self.collection_field(
|
||||
CityGraphType,
|
||||
"cities",
|
||||
CityFilter,
|
||||
CitySort,
|
||||
resolver=lambda *_: cities,
|
||||
)
|
||||
|
||||
39
example/api/src/queries/user.py
Normal file
39
example/api/src/queries/user.py
Normal file
@@ -0,0 +1,39 @@
|
||||
from cpl.graphql.schema.filter.filter import Filter
|
||||
from cpl.graphql.schema.object_graph_type import ObjectGraphType
|
||||
|
||||
from cpl.graphql.schema.sort.sort import Sort
|
||||
from cpl.graphql.schema.sort.sort_order import SortOrder
|
||||
|
||||
|
||||
class User:
|
||||
def __init__(self, id: int, name: str):
|
||||
self.id = id
|
||||
self.name = name
|
||||
|
||||
|
||||
class UserFilter(Filter[User]):
|
||||
def __init__(self):
|
||||
Filter.__init__(self)
|
||||
self.field("id", int)
|
||||
self.field("name", str)
|
||||
|
||||
|
||||
class UserSort(Sort[User]):
|
||||
def __init__(self):
|
||||
Sort.__init__(self)
|
||||
self.field("id", SortOrder)
|
||||
self.field("name", SortOrder)
|
||||
|
||||
|
||||
class UserGraphType(ObjectGraphType):
|
||||
def __init__(self):
|
||||
ObjectGraphType.__init__(self)
|
||||
|
||||
self.string_field(
|
||||
"id",
|
||||
resolver=lambda user, *_: user.id,
|
||||
)
|
||||
self.string_field(
|
||||
"name",
|
||||
resolver=lambda user, *_: user.name,
|
||||
)
|
||||
Reference in New Issue
Block a user